From: jenkins-bot Date: Fri, 22 Sep 2017 21:59:38 +0000 (+0000) Subject: Merge "Improve "selfmove" message's wording" X-Git-Tag: 1.31.0-rc.0~1984 X-Git-Url: https://git.heureux-cyclage.org/?p=lhc%2Fweb%2Fwiklou.git;a=commitdiff_plain;h=3df3b575c6617df64ec98533cc7141bd2314e274;hp=eb66028ef049fff2f2379a8b5a1a5ede0fb43cb5 Merge "Improve "selfmove" message's wording" --- 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 a82ae21209..b991e115a3 100644 --- a/.gitignore +++ b/.gitignore @@ -42,14 +42,15 @@ sftp-config.json /StartProfiler.php # Building & testing +npm-debug.log node_modules/ /tests/phpunit/phpunit.phar # Composer /vendor /composer.lock -/composer.json /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/.travis.yml b/.travis.yml index 5e2c7a00db..cde7193424 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,11 +7,12 @@ # complement that setup by testing MediaWiki on travis # language: php -# Use the slower sudo-enabled VMs instead of fast containers: -# - Package 'djvulibre-bin' is not yet whitelisted for trusty containers. -# https://github.com/travis-ci/apt-package-whitelist/issues/4036 -sudo: required -# Use Trusty instead of Travis default (precise) + + +# Use fast containers instead of the slower sudo-enabled VMs: +sudo: false +# Use Ubuntu 14 Trusty (not Ubuntu 12 Precise) +# # - Required in order to use HHVM 3.6 or higher. # - Required for non-buggy xml library for XmlTypeCheck/UploadBaseTest (T75176). dist: trusty @@ -25,10 +26,11 @@ matrix: php: 5.5 - env: dbtype=postgres dbuser=travis php: 5.5 + # https://docs.travis-ci.com/user/languages/php#HHVM-versions - env: dbtype=mysql dbuser=root - # https://docs.travis-ci.com/user/languages/php#HHVM-versions - # https://github.com/travis-ci/travis-ci/issues/7368 php: hhvm-3.12 + - env: dbtype=mysql dbuser=root + php: hhvm-3.18 - env: dbtype=mysql dbuser=root php: 7 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/Gruntfile.js b/Gruntfile.js index 811d2c06eb..dbbfcb814e 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -44,8 +44,6 @@ module.exports = function ( grunt ) { '!extensions/**/*.js', '!skins/**/*.js', // Skip functions aren't even parseable - '!resources/src/dom-level2-skip.js', - '!resources/src/es5-skip.js', '!resources/src/mediawiki.hidpi-skip.js' ] }, 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/INSTALL b/INSTALL index 90da38159c..13c9c62600 100644 --- a/INSTALL +++ b/INSTALL @@ -8,7 +8,7 @@ Starting with MediaWiki 1.2.0, it's possible to install and configure the wiki Required software: * Web server with PHP 5.5.9 or higher. * A SQL server, the following types are supported -** MySQL 5.0.3 or higher +** MySQL 5.5.8 or higher ** PostgreSQL 8.3 or higher ** SQLite 3.3.7 or higher ** Oracle 9.0.1 or higher diff --git a/RELEASE-NOTES-1.30 b/RELEASE-NOTES-1.30 index 453368bebb..2090ce9255 100644 --- a/RELEASE-NOTES-1.30 +++ b/RELEASE-NOTES-1.30 @@ -5,6 +5,10 @@ THIS IS NOT A RELEASE YET MediaWiki 1.30 is an alpha-quality branch and is not recommended for use in production. +=== MySQL version requirement in 1.30 === +As of 1.30, MediaWiki now requires MySQL 5.5.8 or higher (see Compatibility +section). + === Configuration changes in 1.30 === * The "C.UTF-8" locale should be used for $wgShellLocale, if available, to avoid unexpected behavior when code uses locale-sensitive string comparisons. For @@ -21,12 +25,29 @@ production. to plain class names, using the 'factory' key in the module description array. This allows dependency injection to be used for ResourceLoader modules. * $wgExceptionHooks has been removed. +* (T163562) $wgRangeContributionsCIDRLimit was introduced to control the size + of IP ranges that can be queried at Special:Contributions. * (T45547) $wgUsePigLatinVariant added (off by default). +* (T152540) MediaWiki now supports a section ID escaping style that allows to display + non-Latin characters verbatim on many modern browsers. This is controlled by the + new configuration setting, $wgFragmentMode. +* $wgExperimentalHtmlIds is now deprecated and will be removed in a future version, + use $wgFragmentMode to migrate off it to a modern alternative. +* $wgExternalInterwikiFragmentMode was introduced to control how fragments in + sinterwikis going outside of current wiki farm are encoded. +* (T120333) Soft-deprecated the use of PHP extension 'mysql' in favor of 'mysqli'. + This PHP extension was deprecated in PHP 5.5 and removed in PHP 7.0. MediaWiki + auto-selects the 'mysqli' driver since MediaWiki 1.22, except if explicitly + requested through the configuration parameter $wgDBservers. +* $wgOOUIEditPage was removed, as it is now the default. This was documented as a + temporary variable during the migration period. === New features in 1.30 === * (T37247) Output from Parser::parse() will now be wrapped in a div with class="mw-parser-output" by default. This may be changed or disabled using ParserOptions::setWrapOutputClass(). +* (T163562) Added ability to search for contributions within an IP ranges + at Special:Contributions. * Added 'ChangeTagsAllowedAdd' hook, enabling extensions to allow software- specific tags to be added by users. * Added a 'ParserOptionsRegister' hook to allow extensions to register @@ -37,15 +58,30 @@ production. enabled by setting $wgUsePigLatinVariant to true. * Added RecentChangesPurgeRows hook to allow extensions to purge data that depends on the recentchanges table. - -=== Languages updated in 1.30 === - -* Support for kbp (Kabɩyɛ / Kabiyè) was added. +* Added JS config values wgDiffOldId/wgDiffNewId to the output of diff pages. +* (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. +* (T138166) Added ability for users to prohibit other users from sending them + emails with Special:Emailuser. Can be enabled by setting + $wgEnableUserEmailBlacklist to true. +* (T67297) $wgBrowserBlacklist is deprecated, and changing it will have no effect. + Instead, users using browsers that do not support Unicode will be unable to edit + and should upgrade to a modern browser instead. === External library changes in 1.30 === ==== Upgraded external libraries ==== * mediawiki/mediawiki-codesniffer updated to 0.8.1. +* wikimedia/composer-merge-plugin updated to 1.4.1. ==== New external libraries ==== * The class \TestingAccessWrapper has been moved to the external library @@ -85,7 +121,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), @@ -129,6 +167,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() @@ -136,6 +175,68 @@ changes to languages because of Phabricator reports. MediaWikiServices instead. Access to the underlying BagOStuff is possible through the new ParserCache::getCacheStorage() method. * .mw-ui-constructive CSS class (deprecated in 1.27) was removed. +* Sanitizer::escapeId() was deprecated, use escapeIdForAttribute(), + escapeIdForLink() or escapeIdForExternalInterwiki() instead. +* Title::escapeFragmentForURL() was deprecated, use one of the aforementioned + Sanitizer functions or, if possible, Title::getFragmentForURL(). +* Second parameter to Sanitizer::escapeIdReferenceList() ($options) now does + 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 underwent some refactoring and deprecations: + * EditPage::isOouiEnabled() is deprecated and will always return true. + * EditPage::getSummaryInput() and ::getSummaryInputOOUI() are deprecated. Please + use ::getSummaryInputWidget() instead. + * EditPage::getCheckboxes() and ::getCheckboxesOOUI() are deprecated. Please + use ::getCheckboxesWidget() instead. + * Creating an EditPage instance without calling EditPage::setContextTitle() should + be avoided and will be deprecated in a future release. + * EditPage::safeUnicodeInput() and ::safeUnicodeOutput() are deprecated and no-ops. + * EditPage::$isCssJsSubpage, ::$isCssSubpage, and ::$isJsSubpage are deprecated. The + corresponding methods from Title should be used instead. + * EditPage::$isWrongCaseCssJsPage is deprecated. There is no replacement. + * EditPage::$mArticle and ::$mTitle are deprecated for public usage. The getters + ::getArticle() and ::getTitle() should be used instead. + * Trying to control or fake EditPage context by overriding $wgUser, $wgRequest, $wgOut, + and $wgLang is no longer supported and won't work. The IContextSource returned from + EditPage::getContext() must be modified instead. +* Parser::getRandomString() (deprecated in 1.26) was removed. +* Parser::uniqPrefix() (deprecated in 1.26) was removed. +* Parser::extractTagsAndParams() now only accepts three arguments. The fourth, + $uniq_prefix was deprecated in 1.26 and has now been removed. +* (T172514) The following tables have had their UNIQUE indexes turned into proper + PRIMARY KEYs for increased maintainability: categorylinks, imagelinks, iwlinks, + langlinks, log_search, module_deps, objectcache, pagelinks, query_cache, site_stats, + templatelinks, text, transcache, user_former_groups, user_properties. +* IDatabase::nextSequenceValue() is no longer needed by any database backends + (formerly it was needed by PostgreSQL and Oracle), and is now deprecated. +* (T146591) The lc_lang_key index on the l10n_cache table has been changed into a + PRIMARY KEY. +* (T157227) bot_password.bp_user, change_tag.ct_log_id, change_tag.ct_rev_id, + page_restrictions.pr_user, tag_summary.ts_log_id, tag_summary.ts_rev_id and + user_properties.up_user have all been made unsigned on MySQL. +* DB_SLAVE is deprecated. DB_REPLICA should be used instead. +* wfUsePHP() is deprecated. +* wfFixSessionID() was removed. +* wfShellExec() and related functions are deprecated, use Shell::command(). +* (T138166) SpecialEmailUser::getTarget() now requires a second argument, the sending + user object. Using the method without the second argument is deprecated. +* (T67297) Browsers that don't support Unicode will have their edits rejected. == Compatibility == MediaWiki 1.30 requires PHP 5.5.9 or later. There is experimental support for @@ -147,7 +248,7 @@ Oracle and Microsoft SQL Server. The supported versions are: -* MySQL 5.0.3 or later +* MySQL 5.5.8 or later * PostgreSQL 8.3 or later * SQLite 3.3.7 or later * Oracle 9.0.1 or later diff --git a/RELEASE-NOTES-1.31 b/RELEASE-NOTES-1.31 new file mode 100644 index 0000000000..bbaaf16b61 --- /dev/null +++ b/RELEASE-NOTES-1.31 @@ -0,0 +1,93 @@ +== MediaWiki 1.31 == + +THIS IS NOT A RELEASE YET + +MediaWiki 1.31 is an alpha-quality branch and is not recommended for use in +production. + +=== Configuration changes in 1.31 === +* … + +=== New features in 1.31 === +* … + +=== External library changes in 1.31 === + +==== Upgraded external libraries ==== +* … + +==== New external libraries ==== +* … + +==== Removed and replaced external libraries ==== +* … + +=== Bug fixes in 1.31 === +* … + +=== Action API changes in 1.31 === +* … + +=== Action API internal changes in 1.31 === +* … + +=== Languages updated in 1.31 === +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. + +* … + +=== Other changes in 1.31 === +* … + +== Compatibility == +MediaWiki 1.31 requires PHP 5.5.9 or later. There is experimental support for +HHVM 3.6.5 or later. + +MySQL/MariaDB is the recommended DBMS. PostgreSQL or SQLite can also be used, +but support for them is somewhat less mature. There is experimental support for +Oracle and Microsoft SQL Server. + +The supported versions are: + +* MySQL 5.0.3 or later +* PostgreSQL 8.3 or later +* SQLite 3.3.7 or later +* Oracle 9.0.1 or later +* Microsoft SQL Server 2005 (9.00.1399) + +== Upgrading == +1.31 has several database changes since 1.30, and will not work without schema +updates. Note that due to changes to some very large tables like the revision +table, the schema update may take quite long (minutes on a medium sized site, +many hours on a large site). + +Don't forget to always back up your database before upgrading! + +See the file UPGRADE for more detailed upgrade instructions, including +important information when upgrading from versions prior to 1.11. + +For notes on 1.30.x and older releases, see HISTORY. + +== Online documentation == +Documentation for both end-users and site administrators is available on +MediaWiki.org, and is covered under the GNU Free Documentation License (except +for pages that explicitly state that their contents are in the public domain): + + https://www.mediawiki.org/wiki/Special:MyLanguage/Documentation + +== Mailing list == +A mailing list is available for MediaWiki user support and discussion: + + https://lists.wikimedia.org/mailman/listinfo/mediawiki-l + +A low-traffic announcements-only list is also available: + + https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce + +It's highly recommended that you sign up for one of these lists if you're +going to run a public MediaWiki, so you can be notified of security fixes. + +== IRC help == +There's usually someone online in #mediawiki on irc.freenode.net. diff --git a/autoload.php b/autoload.php index 30ec1d7c1b..4dd5f12876 100644 --- a/autoload.php +++ b/autoload.php @@ -193,6 +193,7 @@ $wgAutoloadLocalClasses = [ 'BenchmarkDeleteTruncate' => __DIR__ . '/maintenance/benchmarks/bench_delete_truncate.php', 'BenchmarkHooks' => __DIR__ . '/maintenance/benchmarks/benchmarkHooks.php', 'BenchmarkJSMinPlus' => __DIR__ . '/maintenance/benchmarks/benchmarkJSMinPlus.php', + 'BenchmarkLruHash' => __DIR__ . '/maintenance/benchmarks/benchmarkLruHash.php', 'BenchmarkParse' => __DIR__ . '/maintenance/benchmarks/benchmarkParse.php', 'BenchmarkPurge' => __DIR__ . '/maintenance/benchmarks/benchmarkPurge.php', 'BenchmarkTidy' => __DIR__ . '/maintenance/benchmarks/benchmarkTidy.php', @@ -218,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', @@ -225,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', @@ -277,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', @@ -290,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', @@ -366,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', @@ -400,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', @@ -420,8 +421,8 @@ $wgAutoloadLocalClasses = [ 'EditAction' => __DIR__ . '/includes/actions/EditAction.php', 'EditCLI' => __DIR__ . '/maintenance/edit.php', 'EditPage' => __DIR__ . '/includes/EditPage.php', - 'EditWatchlistCheckboxSeriesField' => __DIR__ . '/includes/specials/SpecialEditWatchlist.php', - 'EditWatchlistNormalHTMLForm' => __DIR__ . '/includes/specials/SpecialEditWatchlist.php', + 'EditWatchlistCheckboxSeriesField' => __DIR__ . '/includes/specials/formfields/EditWatchlistCheckboxSeriesField.php', + 'EditWatchlistNormalHTMLForm' => __DIR__ . '/includes/specials/forms/EditWatchlistNormalHTMLForm.php', 'EmailConfirmation' => __DIR__ . '/includes/specials/SpecialConfirmemail.php', 'EmailInvalidation' => __DIR__ . '/includes/specials/SpecialEmailInvalidate.php', 'EmailNotification' => __DIR__ . '/includes/mail/EmailNotification.php', @@ -436,6 +437,7 @@ $wgAutoloadLocalClasses = [ 'EraseArchivedFile' => __DIR__ . '/maintenance/eraseArchivedFile.php', 'ErrorPageError' => __DIR__ . '/includes/exception/ErrorPageError.php', 'EtcdConfig' => __DIR__ . '/includes/config/EtcdConfig.php', + 'EtcdConfigParseError' => __DIR__ . '/includes/config/EtcdConfigParseError.php', 'EventRelayer' => __DIR__ . '/includes/libs/eventrelayer/EventRelayer.php', 'EventRelayerGroup' => __DIR__ . '/includes/EventRelayerGroup.php', 'EventRelayerKafka' => __DIR__ . '/includes/libs/eventrelayer/EventRelayerKafka.php', @@ -616,7 +618,6 @@ $wgAutoloadLocalClasses = [ 'ILocalizedException' => __DIR__ . '/includes/exception/LocalizedException.php', 'IMaintainableDatabase' => __DIR__ . '/includes/libs/rdbms/database/IMaintainableDatabase.php', 'IP' => __DIR__ . '/includes/libs/IP.php', - 'IPSet' => __DIR__ . '/includes/compat/IPSetCompat.php', 'IPTC' => __DIR__ . '/includes/media/IPTC.php', 'IRCColourfulRCFeedFormatter' => __DIR__ . '/includes/rcfeed/IRCColourfulRCFeedFormatter.php', 'IcuCollation' => __DIR__ . '/includes/collation/IcuCollation.php', @@ -632,7 +633,7 @@ $wgAutoloadLocalClasses = [ 'ImageQueryPage' => __DIR__ . '/includes/specialpage/ImageQueryPage.php', 'ImportImages' => __DIR__ . '/maintenance/importImages.php', 'ImportLogFormatter' => __DIR__ . '/includes/logging/ImportLogFormatter.php', - 'ImportReporter' => __DIR__ . '/includes/specials/SpecialImport.php', + 'ImportReporter' => __DIR__ . '/includes/specials/helpers/ImportReporter.php', 'ImportSiteScripts' => __DIR__ . '/maintenance/importSiteScripts.php', 'ImportSites' => __DIR__ . '/maintenance/importSites.php', 'ImportSource' => __DIR__ . '/includes/import/ImportSource.php', @@ -679,6 +680,7 @@ $wgAutoloadLocalClasses = [ 'JobQueueMemory' => __DIR__ . '/includes/jobqueue/JobQueueMemory.php', 'JobQueueReadOnlyError' => __DIR__ . '/includes/jobqueue/JobQueue.php', 'JobQueueRedis' => __DIR__ . '/includes/jobqueue/JobQueueRedis.php', + 'JobQueueSecondTestQueue' => __DIR__ . '/includes/jobqueue/JobQueueSecondTestQueue.php', 'JobRunner' => __DIR__ . '/includes/jobqueue/JobRunner.php', 'JobSpecification' => __DIR__ . '/includes/jobqueue/JobSpecification.php', 'JpegHandler' => __DIR__ . '/includes/media/Jpeg.php', @@ -744,8 +746,8 @@ $wgAutoloadLocalClasses = [ 'Languages' => __DIR__ . '/maintenance/language/languages.inc', 'LayeredParameterizedPassword' => __DIR__ . '/includes/password/LayeredParameterizedPassword.php', 'LegacyLogFormatter' => __DIR__ . '/includes/logging/LogFormatter.php', - 'License' => __DIR__ . '/includes/Licenses.php', - 'Licenses' => __DIR__ . '/includes/Licenses.php', + 'License' => __DIR__ . '/includes/specials/helpers/License.php', + 'Licenses' => __DIR__ . '/includes/specials/formfields/Licenses.php', 'LinkBatch' => __DIR__ . '/includes/cache/LinkBatch.php', 'LinkCache' => __DIR__ . '/includes/cache/LinkCache.php', 'LinkFilter' => __DIR__ . '/includes/LinkFilter.php', @@ -801,7 +803,6 @@ $wgAutoloadLocalClasses = [ 'MWGrants' => __DIR__ . '/includes/MWGrants.php', 'MWHttpRequest' => __DIR__ . '/includes/http/MWHttpRequest.php', 'MWLBFactory' => __DIR__ . '/includes/db/MWLBFactory.php', - 'MWMemcached' => __DIR__ . '/includes/compat/MemcachedClientCompat.php', 'MWMessagePack' => __DIR__ . '/includes/libs/MWMessagePack.php', 'MWNamespace' => __DIR__ . '/includes/MWNamespace.php', 'MWOldPassword' => __DIR__ . '/includes/password/MWOldPassword.php', @@ -875,6 +876,7 @@ $wgAutoloadLocalClasses = [ 'MediaWiki\\Auth\\UsernameAuthenticationRequest' => __DIR__ . '/includes/auth/UsernameAuthenticationRequest.php', 'MediaWiki\\Diff\\ComplexityException' => __DIR__ . '/includes/diff/ComplexityException.php', 'MediaWiki\\Diff\\WordAccumulator' => __DIR__ . '/includes/diff/WordAccumulator.php', + 'MediaWiki\\Edit\\PreparedEdit' => __DIR__ . '/includes/edit/PreparedEdit.php', 'MediaWiki\\HeaderCallback' => __DIR__ . '/includes/HeaderCallback.php', 'MediaWiki\\Interwiki\\ClassicInterwikiLookup' => __DIR__ . '/includes/interwiki/ClassicInterwikiLookup.php', 'MediaWiki\\Interwiki\\InterwikiLookup' => __DIR__ . '/includes/interwiki/InterwikiLookup.php', @@ -902,6 +904,7 @@ $wgAutoloadLocalClasses = [ 'MediaWiki\\Logger\\NullSpi' => __DIR__ . '/includes/debug/logger/NullSpi.php', 'MediaWiki\\Logger\\Spi' => __DIR__ . '/includes/debug/logger/Spi.php', 'MediaWiki\\MediaWikiServices' => __DIR__ . '/includes/MediaWikiServices.php', + 'MediaWiki\\ProcOpenError' => __DIR__ . '/includes/exception/ProcOpenError.php', 'MediaWiki\\Search\\ParserOutputSearchDataExtractor' => __DIR__ . '/includes/search/ParserOutputSearchDataExtractor.php', 'MediaWiki\\Services\\CannotReplaceActiveServiceException' => __DIR__ . '/includes/services/CannotReplaceActiveServiceException.php', 'MediaWiki\\Services\\ContainerDisabledException' => __DIR__ . '/includes/services/ContainerDisabledException.php', @@ -926,6 +929,10 @@ $wgAutoloadLocalClasses = [ 'MediaWiki\\Session\\SessionProviderInterface' => __DIR__ . '/includes/session/SessionProviderInterface.php', 'MediaWiki\\Session\\Token' => __DIR__ . '/includes/session/Token.php', 'MediaWiki\\Session\\UserInfo' => __DIR__ . '/includes/session/UserInfo.php', + 'MediaWiki\\ShellDisabledError' => __DIR__ . '/includes/exception/ShellDisabledError.php', + 'MediaWiki\\Shell\\Command' => __DIR__ . '/includes/shell/Command.php', + 'MediaWiki\\Shell\\Result' => __DIR__ . '/includes/shell/Result.php', + 'MediaWiki\\Shell\\Shell' => __DIR__ . '/includes/shell/Shell.php', 'MediaWiki\\Site\\MediaWikiPageNameNormalizer' => __DIR__ . '/includes/site/MediaWikiPageNameNormalizer.php', 'MediaWiki\\Tidy\\BalanceActiveFormattingElements' => __DIR__ . '/includes/tidy/Balancer.php', 'MediaWiki\\Tidy\\BalanceElement' => __DIR__ . '/includes/tidy/Balancer.php', @@ -965,7 +972,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', @@ -984,6 +990,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', @@ -1041,6 +1048,7 @@ $wgAutoloadLocalClasses = [ 'OldLocalFile' => __DIR__ . '/includes/filerepo/file/OldLocalFile.php', 'OracleInstaller' => __DIR__ . '/includes/installer/OracleInstaller.php', 'OracleUpdater' => __DIR__ . '/includes/installer/OracleUpdater.php', + 'OrderedStreamingForkController' => __DIR__ . '/includes/OrderedStreamingForkController.php', 'OrphanStats' => __DIR__ . '/maintenance/storage/orphanStats.php', 'Orphans' => __DIR__ . '/maintenance/orphans.php', 'OutputPage' => __DIR__ . '/includes/OutputPage.php', @@ -1115,8 +1123,10 @@ $wgAutoloadLocalClasses = [ 'PopulateFilearchiveSha1' => __DIR__ . '/maintenance/populateFilearchiveSha1.php', 'PopulateImageSha1' => __DIR__ . '/maintenance/populateImageSha1.php', 'PopulateInterwiki' => __DIR__ . '/maintenance/populateInterwiki.php', + 'PopulateIpChanges' => __DIR__ . '/maintenance/populateIpChanges.php', 'PopulateLogSearch' => __DIR__ . '/maintenance/populateLogSearch.php', 'PopulateLogUsertext' => __DIR__ . '/maintenance/populateLogUsertext.php', + 'PopulatePPSortKey' => __DIR__ . '/maintenance/populatePPSortKey.php', 'PopulateParentId' => __DIR__ . '/maintenance/populateParentId.php', 'PopulateRecentChangesSource' => __DIR__ . '/maintenance/populateRecentChangesSource.php', 'PopulateRevisionLength' => __DIR__ . '/maintenance/populateRevisionLength.php', @@ -1125,7 +1135,7 @@ $wgAutoloadLocalClasses = [ 'PostgresInstaller' => __DIR__ . '/includes/installer/PostgresInstaller.php', 'PostgresUpdater' => __DIR__ . '/includes/installer/PostgresUpdater.php', 'Preferences' => __DIR__ . '/includes/Preferences.php', - 'PreferencesForm' => __DIR__ . '/includes/Preferences.php', + 'PreferencesForm' => __DIR__ . '/includes/specials/forms/PreferencesForm.php', 'PrefixSearch' => __DIR__ . '/includes/PrefixSearch.php', 'PreprocessDump' => __DIR__ . '/maintenance/preprocessDump.php', 'Preprocessor' => __DIR__ . '/includes/parser/Preprocessor.php', @@ -1176,7 +1186,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', @@ -1190,6 +1200,7 @@ $wgAutoloadLocalClasses = [ 'RecentChange' => __DIR__ . '/includes/changes/RecentChange.php', 'RecentChangesUpdateJob' => __DIR__ . '/includes/jobqueue/jobs/RecentChangesUpdateJob.php', 'RecompressTracked' => __DIR__ . '/maintenance/storage/recompressTracked.php', + 'RecountCategories' => __DIR__ . '/maintenance/recountCategories.php', 'RedirectSpecialArticle' => __DIR__ . '/includes/specialpage/RedirectSpecialPage.php', 'RedirectSpecialPage' => __DIR__ . '/includes/specialpage/RedirectSpecialPage.php', 'RedisBagOStuff' => __DIR__ . '/includes/libs/objectcache/RedisBagOStuff.php', @@ -1226,6 +1237,7 @@ $wgAutoloadLocalClasses = [ 'ResourceLoaderJqueryMsgModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderJqueryMsgModule.php', 'ResourceLoaderLanguageDataModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderLanguageDataModule.php', 'ResourceLoaderLanguageNamesModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderLanguageNamesModule.php', + 'ResourceLoaderMediaWikiUtilModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderMediaWikiUtilModule.php', 'ResourceLoaderModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderModule.php', 'ResourceLoaderOOUIFileModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderOOUIFileModule.php', 'ResourceLoaderOOUIImageModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderOOUIImageModule.php', @@ -1276,7 +1288,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', @@ -1521,14 +1532,14 @@ $wgAutoloadLocalClasses = [ 'UploadChunkVerificationException' => __DIR__ . '/includes/upload/UploadFromChunks.php', 'UploadChunkZeroLengthFileException' => __DIR__ . '/includes/upload/UploadFromChunks.php', 'UploadDumper' => __DIR__ . '/maintenance/dumpUploads.php', - 'UploadForm' => __DIR__ . '/includes/specials/SpecialUpload.php', + 'UploadForm' => __DIR__ . '/includes/specials/forms/UploadForm.php', 'UploadFromChunks' => __DIR__ . '/includes/upload/UploadFromChunks.php', 'UploadFromFile' => __DIR__ . '/includes/upload/UploadFromFile.php', 'UploadFromStash' => __DIR__ . '/includes/upload/UploadFromStash.php', 'UploadFromUrl' => __DIR__ . '/includes/upload/UploadFromUrl.php', 'UploadLogFormatter' => __DIR__ . '/includes/logging/UploadLogFormatter.php', 'UploadSourceAdapter' => __DIR__ . '/includes/import/UploadSourceAdapter.php', - 'UploadSourceField' => __DIR__ . '/includes/specials/SpecialUpload.php', + 'UploadSourceField' => __DIR__ . '/includes/specials/formfields/UploadSourceField.php', 'UploadStash' => __DIR__ . '/includes/upload/UploadStash.php', 'UploadStashBadPathException' => __DIR__ . '/includes/upload/UploadStash.php', 'UploadStashCleanup' => __DIR__ . '/maintenance/cleanupUploadStash.php', @@ -1625,6 +1636,7 @@ $wgAutoloadLocalClasses = [ 'Wikimedia\\Rdbms\\DBExpectedError' => __DIR__ . '/includes/libs/rdbms/exception/DBExpectedError.php', 'Wikimedia\\Rdbms\\DBMasterPos' => __DIR__ . '/includes/libs/rdbms/database/position/DBMasterPos.php', 'Wikimedia\\Rdbms\\DBQueryError' => __DIR__ . '/includes/libs/rdbms/exception/DBQueryError.php', + 'Wikimedia\\Rdbms\\DBQueryTimeoutError' => __DIR__ . '/includes/libs/rdbms/exception/DBQueryTimeoutError.php', 'Wikimedia\\Rdbms\\DBReadOnlyError' => __DIR__ . '/includes/libs/rdbms/exception/DBReadOnlyError.php', 'Wikimedia\\Rdbms\\DBReplicationWaitError' => __DIR__ . '/includes/libs/rdbms/exception/DBReplicationWaitError.php', 'Wikimedia\\Rdbms\\DBTransactionError' => __DIR__ . '/includes/libs/rdbms/exception/DBTransactionError.php', @@ -1663,6 +1675,7 @@ $wgAutoloadLocalClasses = [ 'Wikimedia\\Rdbms\\MssqlResultWrapper' => __DIR__ . '/includes/libs/rdbms/database/resultwrapper/MssqlResultWrapper.php', 'Wikimedia\\Rdbms\\MySQLField' => __DIR__ . '/includes/libs/rdbms/field/MySQLField.php', 'Wikimedia\\Rdbms\\MySQLMasterPos' => __DIR__ . '/includes/libs/rdbms/database/position/MySQLMasterPos.php', + 'Wikimedia\\Rdbms\\NextSequenceValue' => __DIR__ . '/includes/libs/rdbms/database/utils/NextSequenceValue.php', 'Wikimedia\\Rdbms\\PostgresBlob' => __DIR__ . '/includes/libs/rdbms/encasing/PostgresBlob.php', 'Wikimedia\\Rdbms\\PostgresField' => __DIR__ . '/includes/libs/rdbms/field/PostgresField.php', 'Wikimedia\\Rdbms\\ResultWrapper' => __DIR__ . '/includes/libs/rdbms/database/resultwrapper/ResultWrapper.php', diff --git a/composer.json b/composer.json index 8262880fde..34f9559cbe 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.3", + "oojs/oojs-ui": "0.23.1", "oyejorge/less.php": "1.7.0.14", "php": ">=5.5.9", "psr/log": "1.0.2", @@ -33,11 +33,12 @@ "wikimedia/base-convert": "1.0.1", "wikimedia/cdb": "1.4.1", "wikimedia/cldr-plural-rule-parser": "1.0.0", - "wikimedia/composer-merge-plugin": "1.4.0", + "wikimedia/composer-merge-plugin": "1.4.1", "wikimedia/html-formatter": "1.0.1", "wikimedia/ip-set": "1.1.0", "wikimedia/php-session-serializer": "1.0.4", - "wikimedia/relpath": "1.0.3", + "wikimedia/purtle": "1.0.6", + "wikimedia/relpath": "2.0.0", "wikimedia/remex-html": "1.0.1", "wikimedia/running-stat": "1.1.0", "wikimedia/scoped-callback": "1.0.0", @@ -52,8 +53,8 @@ "hamcrest/hamcrest-php": "^2.0", "jakub-onderka/php-parallel-lint": "0.9.2", "jetbrains/phpstorm-stubs": "dev-master#1b9906084d6635456fcf3f3a01f0d7d5b99a578a", - "justinrainbow/json-schema": "~3.0", - "mediawiki/mediawiki-codesniffer": "0.8.1", + "justinrainbow/json-schema": "~5.2", + "mediawiki/mediawiki-codesniffer": "0.12.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/deferred.txt b/docs/deferred.txt index b8ec76bdb0..9a62fda92a 100644 --- a/docs/deferred.txt +++ b/docs/deferred.txt @@ -30,7 +30,7 @@ Currently there are a few different types of jobs: htmlCacheUpdate Clear caches when a template is changed to ensure that changes can be seen. - Each job clears $wgUpdateRowsPerJob pages (500 by default). + Each job clears $wgUpdateRowsPerJob pages (300 by default). enotifNotify Used to send mail using the job queue. diff --git a/docs/extension.schema.v1.json b/docs/extension.schema.v1.json index f241cf59e4..7cfebcafa4 100644 --- a/docs/extension.schema.v1.json +++ b/docs/extension.schema.v1.json @@ -39,7 +39,7 @@ "url": { "type": "string", "description": "URL to the homepage for the extension.", - "format": "uri" + "format": "uri-reference" }, "description": { "type": "string", diff --git a/docs/extension.schema.v2.json b/docs/extension.schema.v2.json index 518a65c7a8..75a4f2c6fc 100644 --- a/docs/extension.schema.v2.json +++ b/docs/extension.schema.v2.json @@ -40,7 +40,7 @@ "url": { "type": "string", "description": "URL to the homepage for the extension.", - "format": "uri" + "format": "uri-reference" }, "description": { "type": "string", diff --git a/docs/hooks.txt b/docs/hooks.txt index 3ff3365549..a19e9fc0e2 100644 --- a/docs/hooks.txt +++ b/docs/hooks.txt @@ -996,13 +996,10 @@ $special: ChangesListSpecialPage instance 'ChangesListSpecialPageQuery': Called when building SQL query on pages inheriting from ChangesListSpecialPage (in core: RecentChanges, RecentChangesLinked and Watchlist). - Do not use this to implement individual filters if they are compatible with the ChangesListFilter and ChangesListFilterGroup structure. - Instead, use sub-classes of those classes, in conjunction with the ChangesListSpecialPageStructuredFilters hook. - This hook can be used to implement filters that do not implement that structure, or custom behavior that is not an individual filter. $name: name of the special page, e.g. 'Watchlist' @@ -1017,11 +1014,16 @@ $opts: FormOptions for this request filters for pages inheriting from ChangesListSpecialPage (in core: RecentChanges, RecentChangesLinked, and Watchlist). Generally, you will want to construct new ChangesListBooleanFilter or ChangesListStringOptionsFilter objects. - When constructing them, you specify which group they belong to. You can reuse existing groups (accessed through $special->getFilterGroup), or create your own (ChangesListBooleanFilterGroup or ChangesListStringOptionsFilterGroup). If you create new groups, you must register them with $special->registerFilterGroup. +Note that this is called regardless of whether the user is currently using +the new (structured) or old (unstructured) filter UI. If you want your boolean +filter to show on both the new and old UI, specify all the supported fields. +These include showHide, label, and description. +See the constructor of each ChangesList* class for documentation of supported +fields. $special: ChangesListSpecialPage instance 'ChangeTagAfterDelete': Called after a change tag has been deleted (that is, @@ -2764,9 +2766,10 @@ configuration variables to JavaScript. Things that depend on the current page or request state must be added through MakeGlobalVariablesScript instead. &$vars: array( variable name => value ) -'ResourceLoaderGetLessVars': Called in ResourceLoader::getLessVars after -variables from $wgResourceLoaderLESSVars are added. Can be used to add -context-based variables. +'ResourceLoaderGetLessVars': DEPRECATED! Called in ResourceLoader::getLessVars +to add global LESS variables. Loaded after $wgResourceLoaderLESSVars is added. +Global LESS variables are deprecated. Use ResourceLoaderModule::getLessVars() +instead to expose variables only in modules that need them. &$lessVars: array of variables already added 'ResourceLoaderJqueryMsgModuleMagicWords': Called in 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/AjaxDispatcher.php b/includes/AjaxDispatcher.php index 2adbc80f3b..75fcff3654 100644 --- a/includes/AjaxDispatcher.php +++ b/includes/AjaxDispatcher.php @@ -56,6 +56,7 @@ class AjaxDispatcher { /** * Load up our object with user supplied data + * @param Config $config */ function __construct( Config $config ) { $this->config = $config; 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 2c935df8ec..5a4c43e6ae 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 ); @@ -485,11 +489,10 @@ class Block { # Periodic purge via commit hooks if ( mt_rand( 0, 9 ) == 0 ) { - Block::purgeExpired(); + self::purgeExpired(); } - $row = $this->getDatabaseArray(); - $row['ipb_id'] = $dbw->nextSequenceValue( "ipblocks_ipb_id_seq" ); + $row = $this->getDatabaseArray( $dbw ); $dbw->insert( 'ipblocks', $row, __METHOD__, [ 'IGNORE' ] ); $affected = $dbw->affectedRows(); @@ -558,7 +561,7 @@ class Block { // update corresponding autoblock(s) (T50813) $dbw->update( 'ipblocks', - $this->getAutoblockUpdateArray(), + $this->getAutoblockUpdateArray( $dbw ), [ 'ipb_parent_block_id' => $this->getId() ], __METHOD__ ); @@ -583,14 +586,11 @@ class Block { /** * Get an array suitable for passing to $dbw->insert() or $dbw->update() - * @param IDatabase $db + * @param IDatabase $dbw * @return array */ - protected function getDatabaseArray( $db = null ) { - if ( !$db ) { - $db = wfGetDB( DB_REPLICA ); - } - $expiry = $db->encodeExpiry( $this->mExpiry ); + protected function getDatabaseArray( IDatabase $dbw ) { + $expiry = $dbw->encodeExpiry( $this->mExpiry ); if ( $this->forcedTargetID ) { $uid = $this->forcedTargetID; @@ -603,8 +603,7 @@ class Block { 'ipb_user' => $uid, 'ipb_by' => $this->getBy(), 'ipb_by_text' => $this->getByName(), - 'ipb_reason' => $this->mReason, - 'ipb_timestamp' => $db->timestamp( $this->mTimestamp ), + 'ipb_timestamp' => $dbw->timestamp( $this->mTimestamp ), 'ipb_auto' => $this->mAuto, 'ipb_anon_only' => !$this->isHardblock(), 'ipb_create_account' => $this->prevents( 'createaccount' ), @@ -616,23 +615,23 @@ class Block { 'ipb_block_email' => $this->prevents( 'sendemail' ), 'ipb_allow_usertalk' => !$this->prevents( 'editownusertalk' ), 'ipb_parent_block_id' => $this->mParentBlockId - ]; + ] + CommentStore::newKey( 'ipb_reason' )->insert( $dbw, $this->mReason ); return $a; } /** + * @param IDatabase $dbw * @return array */ - protected function getAutoblockUpdateArray() { + protected function getAutoblockUpdateArray( IDatabase $dbw ) { return [ 'ipb_by' => $this->getBy(), 'ipb_by_text' => $this->getByName(), - 'ipb_reason' => $this->mReason, 'ipb_create_account' => $this->prevents( 'createaccount' ), 'ipb_deleted' => (int)$this->mHideName, // typecast required for SQLite 'ipb_allow_usertalk' => !$this->prevents( 'editownusertalk' ), - ]; + ] + CommentStore::newKey( 'ipb_reason' )->insert( $dbw, $this->mReason ); } /** @@ -778,12 +777,12 @@ class Block { # It's okay to autoblock. Go ahead and insert/update the block... # Do not add a *new* block if the IP is already blocked. - $ipblock = Block::newFromTarget( $autoblockIP ); + $ipblock = self::newFromTarget( $autoblockIP ); if ( $ipblock ) { # Check if the block is an autoblock and would exceed the user block # if renewed. If so, do nothing, otherwise prolong the block time... if ( $ipblock->mAuto && // @todo Why not compare $ipblock->mExpiry? - $this->mExpiry > Block::getAutoblockExpiry( $ipblock->mTimestamp ) + $this->mExpiry > self::getAutoblockExpiry( $ipblock->mTimestamp ) ) { # Reset block timestamp to now and its expiry to # $wgAutoblockExpiry in the future @@ -810,11 +809,11 @@ class Block { if ( $this->mExpiry == 'infinity' ) { # Original block was indefinite, start an autoblock now - $autoblock->mExpiry = Block::getAutoblockExpiry( $timestamp ); + $autoblock->mExpiry = self::getAutoblockExpiry( $timestamp ); } else { # If the user is already blocked with an expiry date, we don't # want to pile on top of that. - $autoblock->mExpiry = min( $this->mExpiry, Block::getAutoblockExpiry( $timestamp ) ); + $autoblock->mExpiry = min( $this->mExpiry, self::getAutoblockExpiry( $timestamp ) ); } # Insert the block... @@ -870,7 +869,7 @@ class Block { public function updateTimestamp() { if ( $this->mAuto ) { $this->mTimestamp = wfTimestamp(); - $this->mExpiry = Block::getAutoblockExpiry( $this->mTimestamp ); + $this->mExpiry = self::getAutoblockExpiry( $this->mTimestamp ); $dbw = wfGetDB( DB_MASTER ); $dbw->update( 'ipblocks', @@ -958,6 +957,7 @@ class Block { /** * Get the system block type, if any + * @since 1.29 * @return string|null */ public function getSystemBlockType() { @@ -1111,8 +1111,8 @@ class Block { */ public static function newFromTarget( $specificTarget, $vagueTarget = null, $fromMaster = false ) { list( $target, $type ) = self::parseTarget( $specificTarget ); - if ( $type == Block::TYPE_ID || $type == Block::TYPE_AUTO ) { - return Block::newFromID( $target ); + if ( $type == self::TYPE_ID || $type == self::TYPE_AUTO ) { + return self::newFromID( $target ); } elseif ( $target === null && $vagueTarget == '' ) { # We're not going to find anything useful here @@ -1122,7 +1122,7 @@ class Block { } elseif ( in_array( $type, - [ Block::TYPE_USER, Block::TYPE_IP, Block::TYPE_RANGE, null ] ) + [ self::TYPE_USER, self::TYPE_IP, self::TYPE_RANGE, null ] ) ) { $block = new Block(); $block->fromMaster( $fromMaster ); @@ -1189,7 +1189,7 @@ class Block { } $selectFields = array_merge( [ 'ipb_range_start', 'ipb_range_end' ], - Block::selectFields() + self::selectFields() ); $rows = $db->select( 'ipblocks', $selectFields, @@ -1329,7 +1329,7 @@ class Block { * which in turn gives User::getName(). * * @param string|int|User|null $target - * @return array( User|String|null, Block::TYPE_ constant|null ) + * @return array [ User|String|null, Block::TYPE_ constant|null ] */ public static function parseTarget( $target ) { # We may have been through this before @@ -1350,12 +1350,12 @@ class Block { # off validation checking (which would exclude IP addresses) return [ User::newFromName( IP::sanitizeIP( $target ), false ), - Block::TYPE_IP + self::TYPE_IP ]; - } elseif ( IP::isValidBlock( $target ) ) { + } elseif ( IP::isValidRange( $target ) ) { # Can't create a User from an IP range - return [ IP::sanitizeRange( $target ), Block::TYPE_RANGE ]; + return [ IP::sanitizeRange( $target ), self::TYPE_RANGE ]; } # Consider the possibility that this is not a username at all @@ -1370,11 +1370,11 @@ class Block { # Note that since numbers are valid usernames, a $target of "12345" will be # considered a User. If you want to pass a block ID, prepend a hash "#12345", # since hash characters are not valid in usernames or titles generally. - return [ $userObj, Block::TYPE_USER ]; + return [ $userObj, self::TYPE_USER ]; } elseif ( preg_match( '/^#\d+$/', $target ) ) { # Autoblock reference in the form "#12345" - return [ substr( $target, 1 ), Block::TYPE_AUTO ]; + return [ substr( $target, 1 ), self::TYPE_AUTO ]; } else { # WTF? @@ -1396,7 +1396,7 @@ class Block { * Get the target and target type for this particular Block. Note that for autoblocks, * this returns the unredacted name; frontend functions need to call $block->getRedactedName() * in this situation. - * @return array( User|String, Block::TYPE_ constant ) + * @return array [ User|String, Block::TYPE_ constant ] * @todo FIXME: This should be an integral part of the Block member variables */ public function getTargetAndType() { @@ -1450,6 +1450,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 +1474,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 +1486,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 +1500,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..b8a31e6f02 --- /dev/null +++ b/includes/CommentStore.php @@ -0,0 +1,566 @@ + [ + 'table' => 'revision_comment_temp', + 'pk' => 'revcomment_rev', + 'field' => 'revcomment_comment_id', + 'joinPK' => 'rev_id', + ], + 'img_description' => [ + 'table' => 'image_comment_temp', + 'pk' => 'imgcomment_name', + 'field' => 'imgcomment_description_id', + 'joinPK' => 'img_name', + ], + ]; + + /** + * Fields that formerly used $tempTables + * @var array Key is '$key', value is the MediaWiki version in which it was + * removed from $tempTables. + */ + protected static $formerTempTables = []; + + /** @var string */ + protected $key; + + /** @var int One of the MIGRATION_* constants */ + protected $stage; + + /** @var array|null Cache for `self::getJoin()` */ + protected $joinCache = null; + + /** @var Language Language to use for comment truncation */ + protected $lang; + + /** + * @param string $key A key such as "rev_comment" identifying the comment + * field being fetched. + * @param Language $lang Language to use for comment truncation. Defaults + * to $wgContLang. + */ + public function __construct( $key, Language $lang = null ) { + global $wgCommentTableSchemaMigrationStage, $wgContLang; + + $this->key = $key; + $this->stage = $wgCommentTableSchemaMigrationStage; + $this->lang = $lang ?: $wgContLang; + } + + /** + * Static constructor for easier chaining + * @param string $key A key such as "rev_comment" identifying the comment + * field being fetched. + * @return CommentStore + */ + public static function newKey( $key ) { + return new CommentStore( $key ); + } + + /** + * Get SELECT fields for the comment key + * + * Each resulting row should be passed to `self::getCommentLegacy()` to get the + * actual comment. + * + * @note Use of this method may require a subsequent database query to + * actually fetch the comment. If possible, use `self::getJoin()` instead. + * @return string[] to include in the `$vars` to `IDatabase->select()`. All + * fields are aliased, so `+` is safe to use. + */ + public function getFields() { + $fields = []; + if ( $this->stage === MIGRATION_OLD ) { + $fields["{$this->key}_text"] = $this->key; + $fields["{$this->key}_data"] = 'NULL'; + $fields["{$this->key}_cid"] = 'NULL'; + } else { + if ( $this->stage < MIGRATION_NEW ) { + $fields["{$this->key}_old"] = $this->key; + } + if ( isset( self::$tempTables[$this->key] ) ) { + $fields["{$this->key}_pk"] = self::$tempTables[$this->key]['joinPK']; + } else { + $fields["{$this->key}_id"] = "{$this->key}_id"; + } + } + return $fields; + } + + /** + * Get SELECT fields and joins for the comment key + * + * Each resulting row should be passed to `self::getComment()` to get the + * actual comment. + * + * @return array With three keys: + * - tables: (string[]) to include in the `$table` to `IDatabase->select()` + * - fields: (string[]) to include in the `$vars` to `IDatabase->select()` + * - joins: (array) to include in the `$join_conds` to `IDatabase->select()` + * All tables, fields, and joins are aliased, so `+` is safe to use. + */ + public function getJoin() { + if ( $this->joinCache === null ) { + $tables = []; + $fields = []; + $joins = []; + + if ( $this->stage === MIGRATION_OLD ) { + $fields["{$this->key}_text"] = $this->key; + $fields["{$this->key}_data"] = 'NULL'; + $fields["{$this->key}_cid"] = 'NULL'; + } else { + $join = $this->stage === MIGRATION_NEW ? 'JOIN' : 'LEFT JOIN'; + + if ( isset( self::$tempTables[$this->key] ) ) { + $t = self::$tempTables[$this->key]; + $alias = "temp_$this->key"; + $tables[$alias] = $t['table']; + $joins[$alias] = [ $join, "{$alias}.{$t['pk']} = {$t['joinPK']}" ]; + $joinField = "{$alias}.{$t['field']}"; + } else { + $joinField = "{$this->key}_id"; + } + + $alias = "comment_$this->key"; + $tables[$alias] = 'comment'; + $joins[$alias] = [ $join, "{$alias}.comment_id = {$joinField}" ]; + + if ( $this->stage === MIGRATION_NEW ) { + $fields["{$this->key}_text"] = "{$alias}.comment_text"; + } else { + $fields["{$this->key}_text"] = "COALESCE( {$alias}.comment_text, $this->key )"; + } + $fields["{$this->key}_data"] = "{$alias}.comment_data"; + $fields["{$this->key}_cid"] = "{$alias}.comment_id"; + } + + $this->joinCache = [ + 'tables' => $tables, + 'fields' => $fields, + 'joins' => $joins, + ]; + } + + return $this->joinCache; + } + + /** + * Extract the comment from a row + * + * Shared implementation for getComment() and getCommentLegacy() + * + * @param IDatabase|null $db Database handle for getCommentLegacy(), or null for getComment() + * @param object|array $row + * @param bool $fallback + * @return CommentStoreComment + */ + private function getCommentInternal( IDatabase $db = null, $row, $fallback = false ) { + $key = $this->key; + $row = (array)$row; + if ( array_key_exists( "{$key}_text", $row ) && array_key_exists( "{$key}_data", $row ) ) { + $cid = isset( $row["{$key}_cid"] ) ? $row["{$key}_cid"] : null; + $text = $row["{$key}_text"]; + $data = $row["{$key}_data"]; + } elseif ( $this->stage === MIGRATION_OLD ) { + $cid = null; + if ( $fallback && isset( $row[$key] ) ) { + wfLogWarning( "Using deprecated fallback handling for comment $key" ); + $text = $row[$key]; + } else { + wfLogWarning( "Missing {$key}_text and {$key}_data fields in row with MIGRATION_OLD" ); + $text = ''; + } + $data = null; + } else { + if ( isset( self::$tempTables[$key] ) ) { + if ( array_key_exists( "{$key}_pk", $row ) ) { + if ( !$db ) { + throw new InvalidArgumentException( + "\$row does not contain fields needed for comment $key and getComment(), but " + . "does have fields for getCommentLegacy()" + ); + } + $t = self::$tempTables[$key]; + $id = $row["{$key}_pk"]; + $row2 = $db->selectRow( + [ $t['table'], 'comment' ], + [ 'comment_id', 'comment_text', 'comment_data' ], + [ $t['pk'] => $id ], + __METHOD__, + [], + [ 'comment' => [ 'JOIN', [ "comment_id = {$t['field']}" ] ] ] + ); + } elseif ( $fallback && isset( $row[$key] ) ) { + wfLogWarning( "Using deprecated fallback handling for comment $key" ); + $row2 = (object)[ 'comment_text' => $row[$key], 'comment_data' => null ]; + } else { + throw new InvalidArgumentException( "\$row does not contain fields needed for comment $key" ); + } + } else { + if ( array_key_exists( "{$key}_id", $row ) ) { + if ( !$db ) { + throw new InvalidArgumentException( + "\$row does not contain fields needed for comment $key and getComment(), but " + . "does have fields for getCommentLegacy()" + ); + } + $id = $row["{$key}_id"]; + $row2 = $db->selectRow( + 'comment', + [ 'comment_id', 'comment_text', 'comment_data' ], + [ 'comment_id' => $id ], + __METHOD__ + ); + } elseif ( $fallback && isset( $row[$key] ) ) { + wfLogWarning( "Using deprecated fallback handling for comment $key" ); + $row2 = (object)[ 'comment_text' => $row[$key], 'comment_data' => null ]; + } else { + throw new InvalidArgumentException( "\$row does not contain fields needed for comment $key" ); + } + } + + if ( $row2 ) { + $cid = $row2->comment_id; + $text = $row2->comment_text; + $data = $row2->comment_data; + } elseif ( $this->stage < MIGRATION_NEW && array_key_exists( "{$key}_old", $row ) ) { + $cid = null; + $text = $row["{$key}_old"]; + $data = null; + } else { + // @codeCoverageIgnoreStart + wfLogWarning( "Missing comment row for $key, id=$id" ); + $cid = null; + $text = ''; + $data = null; + // @codeCoverageIgnoreEnd + } + } + + $msg = null; + if ( $data !== null ) { + $data = FormatJson::decode( $data ); + if ( !is_object( $data ) ) { + // @codeCoverageIgnoreStart + wfLogWarning( "Invalid JSON object in comment: $data" ); + $data = null; + // @codeCoverageIgnoreEnd + } else { + $data = (array)$data; + if ( isset( $data['_message'] ) ) { + $msg = self::decodeMessage( $data['_message'] ) + ->setInterfaceMessageFlag( true ); + } + if ( !empty( $data['_null'] ) ) { + $data = null; + } else { + foreach ( $data as $k => $v ) { + if ( substr( $k, 0, 1 ) === '_' ) { + unset( $data[$k] ); + } + } + } + } + } + + return new CommentStoreComment( $cid, $text, $msg, $data ); + } + + /** + * Extract the comment from a row + * + * Use `self::getJoin()` to ensure the row contains the needed data. + * + * If you need to fake a comment in a row for some reason, set fields + * `{$key}_text` (string) and `{$key}_data` (JSON string or null). + * + * @param object|array $row Result row. + * @param bool $fallback If true, fall back as well as possible instead of throwing an exception. + * @return CommentStoreComment + */ + public function getComment( $row, $fallback = false ) { + return $this->getCommentInternal( null, $row, $fallback ); + } + + /** + * Extract the comment from a row, with legacy lookups. + * + * If `$row` might have been generated using `self::getFields()` rather + * than `self::getJoin()`, use this. Prefer `self::getComment()` if you + * know callers used `self::getJoin()` for the row fetch. + * + * If you need to fake a comment in a row for some reason, set fields + * `{$key}_text` (string) and `{$key}_data` (JSON string or null). + * + * @param IDatabase $db Database handle to use for lookup + * @param object|array $row Result row. + * @param bool $fallback If true, fall back as well as possible instead of throwing an exception. + * @return CommentStoreComment + */ + public function getCommentLegacy( IDatabase $db, $row, $fallback = false ) { + return $this->getCommentInternal( $db, $row, $fallback ); + } + + /** + * Create a new CommentStoreComment, inserting it into the database if necessary + * + * If a comment is going to be passed to `self::insert()` or the like + * multiple times, it will be more efficient to pass a CommentStoreComment + * once rather than making `self::insert()` do it every time through. + * + * @note When passing a CommentStoreComment, this may set `$comment->id` if + * it's not already set. If `$comment->id` is already set, it will not be + * verified that the specified comment actually exists or that it + * corresponds to the comment text, message, and/or data in the + * CommentStoreComment. + * @param IDatabase $dbw Database handle to insert on. Unused if `$comment` + * is a CommentStoreComment and `$comment->id` is set. + * @param string|Message|CommentStoreComment $comment Comment text or Message object, or + * a CommentStoreComment. + * @param array|null $data Structured data to store. Keys beginning with '_' are reserved. + * Ignored if $comment is a CommentStoreComment. + * @return CommentStoreComment + */ + public function createComment( IDatabase $dbw, $comment, array $data = null ) { + $comment = CommentStoreComment::newUnsavedComment( $comment, $data ); + + # Truncate comment in a Unicode-sensitive manner + $comment->text = $this->lang->truncate( $comment->text, self::MAX_COMMENT_LENGTH ); + + if ( $this->stage > MIGRATION_OLD && !$comment->id ) { + $dbData = $comment->data; + if ( !$comment->message instanceof RawMessage ) { + if ( $dbData === null ) { + $dbData = [ '_null' => true ]; + } + $dbData['_message'] = self::encodeMessage( $comment->message ); + } + if ( $dbData !== null ) { + $dbData = FormatJson::encode( (object)$dbData, false, FormatJson::ALL_OK ); + $len = strlen( $dbData ); + if ( $len > self::MAX_DATA_LENGTH ) { + $max = self::MAX_DATA_LENGTH; + throw new OverflowException( "Comment data is too long ($len bytes, maximum is $max)" ); + } + } + + $hash = self::hash( $comment->text, $dbData ); + $comment->id = $dbw->selectField( + 'comment', + 'comment_id', + [ + 'comment_hash' => $hash, + 'comment_text' => $comment->text, + 'comment_data' => $dbData, + ], + __METHOD__ + ); + if ( !$comment->id ) { + $dbw->insert( + 'comment', + [ + 'comment_hash' => $hash, + 'comment_text' => $comment->text, + 'comment_data' => $dbData, + ], + __METHOD__ + ); + $comment->id = $dbw->insertId(); + } + } + + return $comment; + } + + /** + * Implementation for `self::insert()` and `self::insertWithTempTable()` + * @param IDatabase $dbw + * @param string|Message|CommentStoreComment $comment + * @param array|null $data + * @return array [ array $fields, callable $callback ] + */ + private function insertInternal( IDatabase $dbw, $comment, $data ) { + $fields = []; + $callback = null; + + $comment = $this->createComment( $dbw, $comment, $data ); + + if ( $this->stage <= MIGRATION_WRITE_BOTH ) { + $fields[$this->key] = $this->lang->truncate( $comment->text, 255 ); + } + + if ( $this->stage >= MIGRATION_WRITE_BOTH ) { + if ( isset( self::$tempTables[$this->key] ) ) { + $t = self::$tempTables[$this->key]; + $func = __METHOD__; + $commentId = $comment->id; + $callback = function ( $id ) use ( $dbw, $commentId, $t, $func ) { + $dbw->insert( + $t['table'], + [ + $t['pk'] => $id, + $t['field'] => $commentId, + ], + $func + ); + }; + } else { + $fields["{$this->key}_id"] = $comment->id; + } + } + + return [ $fields, $callback ]; + } + + /** + * Insert a comment in preparation for a row that references it + * + * @note It's recommended to include both the call to this method and the + * row insert in the same transaction. + * @param IDatabase $dbw Database handle to insert on + * @param string|Message|CommentStoreComment $comment As for `self::createComment()` + * @param array|null $data As for `self::createComment()` + * @return array Fields for the insert or update + */ + public function insert( IDatabase $dbw, $comment, $data = null ) { + if ( isset( self::$tempTables[$this->key] ) ) { + throw new InvalidArgumentException( "Must use insertWithTempTable() for $this->key" ); + } + + list( $fields ) = $this->insertInternal( $dbw, $comment, $data ); + return $fields; + } + + /** + * Insert a comment in a temporary table in preparation for a row that references it + * + * This is currently needed for "rev_comment" and "img_description". In the + * future that requirement will be removed. + * + * @note It's recommended to include both the call to this method and the + * row insert in the same transaction. + * @param IDatabase $dbw Database handle to insert on + * @param string|Message|CommentStoreComment $comment As for `self::createComment()` + * @param array|null $data As for `self::createComment()` + * @return array Two values: + * - array Fields for the insert or update + * - callable Function to call when the primary key of the row being + * inserted/updated is known. Pass it that primary key. + */ + public function insertWithTempTable( IDatabase $dbw, $comment, $data = null ) { + if ( isset( self::$formerTempTables[$this->key] ) ) { + wfDeprecated( __METHOD__ . " for $this->key", self::$formerTempTables[$this->key] ); + } elseif ( !isset( self::$tempTables[$this->key] ) ) { + throw new InvalidArgumentException( "Must use insert() for $this->key" ); + } + + list( $fields, $callback ) = $this->insertInternal( $dbw, $comment, $data ); + if ( !$callback ) { + $callback = function () { + // Do nothing. + }; + } + return [ $fields, $callback ]; + } + + /** + * Encode a Message as a PHP data structure + * @param Message $msg + * @return array + */ + protected static function encodeMessage( Message $msg ) { + $key = count( $msg->getKeysToTry() ) > 1 ? $msg->getKeysToTry() : $msg->getKey(); + $params = $msg->getParams(); + foreach ( $params as &$param ) { + if ( $param instanceof Message ) { + $param = [ + 'message' => self::encodeMessage( $param ) + ]; + } + } + array_unshift( $params, $key ); + return $params; + } + + /** + * Decode a message that was encoded by self::encodeMessage() + * @param array $data + * @return Message + */ + protected static function decodeMessage( $data ) { + $key = array_shift( $data ); + foreach ( $data as &$param ) { + if ( is_object( $param ) ) { + $param = (array)$param; + } + if ( is_array( $param ) && count( $param ) === 1 && isset( $param['message'] ) ) { + $param = self::decodeMessage( $param['message'] ); + } + } + return new Message( $key, $data ); + } + + /** + * Hashing function for comment storage + * @param string $text Comment text + * @param string|null $data Comment data + * @return int 32-bit signed integer + */ + public static function hash( $text, $data ) { + $hash = crc32( $text ) ^ crc32( (string)$data ); + + // 64-bit PHP returns an unsigned CRC, change it to signed for + // insertion into the database. + if ( $hash >= 0x80000000 ) { + $hash |= -1 << 32; + } + + return $hash; + } + +} diff --git a/includes/CommentStoreComment.php b/includes/CommentStoreComment.php new file mode 100644 index 0000000000..3920ba083f --- /dev/null +++ b/includes/CommentStoreComment.php @@ -0,0 +1,92 @@ +id = $id; + $this->text = $text; + $this->message = $message ?: new RawMessage( '$1', [ $text ] ); + $this->data = $data; + } + + /** + * Create a new, unsaved CommentStoreComment + * + * @param string|Message|CommentStoreComment $comment Comment text or Message object. + * A CommentStoreComment is also accepted here, in which case it is returned unchanged. + * @param array|null $data Structured data to store. Keys beginning with '_' are reserved. + * Ignored if $comment is a CommentStoreComment. + * @return CommentStoreComment + */ + public static function newUnsavedComment( $comment, array $data = null ) { + global $wgContLang; + + if ( $comment instanceof CommentStoreComment ) { + return $comment; + } + + 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(); + return new CommentStoreComment( null, $text, $message, $data ); + } else { + return new CommentStoreComment( null, $comment, null, $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 6ce9a66974..d462228ed2 100644 --- a/includes/DefaultSettings.php +++ b/includes/DefaultSettings.php @@ -75,7 +75,7 @@ $wgConfigRegistry = [ * MediaWiki version number * @since 1.2 */ -$wgVersion = '1.30.0-alpha'; +$wgVersion = '1.31.0-alpha'; /** * Name of the site. It must be changed in LocalSettings.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 @@ -1304,7 +1323,7 @@ $wgMimeInfoFile = 'includes/mime.info'; * Sets an external MIME detector program. The command must print only * the MIME type to standard output. * The name of the file to process will be appended to the command given here. - * If not set or NULL, PHP's fileinfo extension will be used if available. + * If not set or NULL, PHP's mime_content_type function will be used. * * @par Example: * @code @@ -1584,6 +1603,13 @@ $wgEnableEmail = true; */ $wgEnableUserEmail = true; +/** + * Set to true to enable user-to-user e-mail blacklist. + * + * @since 1.30 + */ +$wgEnableUserEmailBlacklist = false; + /** * If true put the sending user's email in a Reply-To header * instead of From (false). ($wgPasswordSender will be used as From.) @@ -2036,8 +2062,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 = []; @@ -2954,46 +2980,9 @@ $wgAllUnicodeFixes = false; $wgLegacyEncoding = false; /** - * Browser Blacklist for unicode non compliant browsers. Contains a list of - * regexps : "/regexp/" matching problematic browsers. These browsers will - * be served encoded unicode in the edit box instead of real unicode. + * @deprecated since 1.30, does nothing */ -$wgBrowserBlackList = [ - /** - * Netscape 2-4 detection - * The minor version may contain strings such as "Gold" or "SGoldC-SGI" - * Lots of non-netscape user agents have "compatible", so it's useful to check for that - * with a negative assertion. The [UIN] identifier specifies the level of security - * in a Netscape/Mozilla browser, checking for it rules out a number of fakers. - * The language string is unreliable, it is missing on NS4 Mac. - * - * Reference: http://www.psychedelix.com/agents/index.shtml - */ - '/^Mozilla\/2\.[^ ]+ [^(]*?\((?!compatible).*; [UIN]/', - '/^Mozilla\/3\.[^ ]+ [^(]*?\((?!compatible).*; [UIN]/', - '/^Mozilla\/4\.[^ ]+ [^(]*?\((?!compatible).*; [UIN]/', - - /** - * MSIE on Mac OS 9 is teh sux0r, converts þ to , ð to , - * Þ to and Ð to - * - * Known useragents: - * - Mozilla/4.0 (compatible; MSIE 5.0; Mac_PowerPC) - * - Mozilla/4.0 (compatible; MSIE 5.15; Mac_PowerPC) - * - Mozilla/4.0 (compatible; MSIE 5.23; Mac_PowerPC) - * - [...] - * - * @link https://en.wikipedia.org/w/index.php?diff=12356041&oldid=12355864 - * @link https://en.wikipedia.org/wiki/Template%3AOS9 - */ - '/^Mozilla\/4\.0 \(compatible; MSIE \d+\.\d+; Mac_PowerPC\)/', - - /** - * Google wireless transcoder, seems to eat a lot of chars alive - * https://it.wikipedia.org/w/index.php?title=Luciano_Ligabue&diff=prev&oldid=8857361 - */ - '/^Mozilla\/4\.0 \(compatible; MSIE 6.0; Windows NT 5.0; Google Wireless Transcoder;\)/' -]; +$wgBrowserBlackList = []; /** * If set to true, the MediaWiki 1.4 to 1.5 schema conversion will @@ -3218,14 +3207,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 @@ -3372,16 +3353,56 @@ $wgApiFrameOptions = 'DENY'; $wgDisableOutputCompression = false; /** - * Should we allow a broader set of characters in id attributes, per HTML5? If - * not, use only HTML 4-compatible IDs. This option is for testing -- when the - * functionality is ready, it will be on by default with no option. + * Abandoned experiment with HTML5-style ID escaping. Normalized IDs a bit + * too aggressively, breaking preexisting content (particularly Cite). + * See T29733, T29694, T29474. * - * Currently this appears to work fine in all browsers, but it's disabled by - * default because it normalizes id's a bit too aggressively, breaking preexisting - * content (particularly Cite). See T29733, T29694, T29474. + * @deprecated since 1.30, use $wgFragmentMode */ $wgExperimentalHtmlIds = false; +/** + * How should section IDs be encoded? + * This array can contain 1 or 2 elements, each of them can be one of: + * - 'html5' is modern HTML5 style encoding with minimal escaping. Displays Unicode + * characters in most browsers' address bars. + * - 'legacy' is old MediaWiki-style encoding, e.g. 啤酒 turns into .E5.95.A4.E9.85.92 + * - 'html5-legacy' corresponds to DEPRECATED $wgExperimentalHtmlIds mode. DO NOT use + * it for anything but migration off that mode (see below). + * + * The first element of this array specifies the primary mode of escaping IDs. This + * is what users will see when they e.g. follow an [[#internal link]] to a section of + * a page. + * + * The optional second element defines a fallback mode, useful for migrations. + * If present, it will direct MediaWiki to add empty s to every section with its + * id attribute set to fallback encoded title so that links using the previous encoding + * would still work. + * + * Example: you want to migrate your wiki from 'legacy' to 'html5' + * + * On the first step, set this variable to [ 'legacy', 'html5' ]. After a while, when + * all caches (parser, HTTP, etc.) contain only pages generated with this setting, + * flip the value to [ 'html5', 'legacy' ]. This will result in all internal links being + * generated in the new encoding while old links (both external and cached internal) will + * still work. After a long time, you might want to ditch backwards compatibility and + * set it to [ 'html5' ]. After all, pages get edited, breaking incoming links no matter which + * fragment mode is used. + * + * @since 1.30 + */ +$wgFragmentMode = [ 'legacy' ]; + +/** + * Which ID escaping mode should be used for external interwiki links? See documentation + * for $wgFragmentMode above for details of each mode. Because you can't control external sites, + * this setting should probably always be 'legacy', unless every wiki you link to has converted + * to 'html5'. + * + * @since 1.30 + */ +$wgExternalInterwikiFragmentMode = 'legacy'; + /** * Abstract list of footer icons for skins in place of old copyrightico and poweredbyico code * You can add new icons to the built in copyright or poweredby, or you can create @@ -3754,20 +3775,18 @@ $wgResourceLoaderValidateStaticJS = false; * at the beginning of all your .less files, with all the consequences. * In particular, string values must be escaped and quoted. * - * Changes to LESS variables do not trigger cache invalidation. - * - * If the LESS variables need to be dynamic, you can use the - * ResourceLoaderGetLessVars hook (since 1.25). + * Changes to this configuration do NOT trigger cache invalidation. * * @par Example: * @code * $wgResourceLoaderLESSVars = [ - * 'baseFontSize' => '1em', - * 'smallFontSize' => '0.75em', - * 'WikimediaBlue' => '#006699', + * 'exampleFontSize' => '1em', + * 'exampleBlue' => '#eee', * ]; * @endcode * @since 1.22 + * @deprecated since 1.30 Use ResourceLoaderModule::getLessVars() instead to + * add variables to individual modules that need them. */ $wgResourceLoaderLESSVars = [ /** @@ -4091,6 +4110,14 @@ $wgTrackingCategories = []; */ $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 = []; + /** * Array of namespaces, in addition to the talk namespaces, where signatures * (~~~~) are likely to be used. This determines whether to display the @@ -4838,7 +4865,7 @@ $wgDefaultUserOptions = [ 'date' => 'default', 'diffonly' => 0, 'disablemail' => 0, - 'editfont' => 'default', + 'editfont' => 'monospace', 'editondblclick' => 0, 'editsectiononrightclick' => 0, 'enotifminoredits' => 0, @@ -4863,6 +4890,7 @@ $wgDefaultUserOptions = [ 'previewontop' => 1, 'rcdays' => 7, 'rcenhancedfilters' => 0, + 'rcenhancedfilters-disable' => 0, 'rclimit' => 50, 'rows' => 25, // @deprecated since 1.29 No longer used in core 'showhiddencats' => 0, @@ -4887,6 +4915,7 @@ $wgDefaultUserOptions = [ 'watchlisthidepatrolled' => 0, 'watchlisthidecategorization' => 1, 'watchlistreloadautomatically' => 0, + 'watchlistunwatchlinks' => 0, 'watchmoves' => 0, 'watchrollback' => 0, 'wllimit' => 250, @@ -5751,7 +5780,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 ], ]; /** @@ -6772,20 +6801,30 @@ $wgRCWatchCategoryMembership = false; $wgUseRCPatrol = true; /** - * Whether to allow users to save their RecentChanges filters + * Whether a preference is displayed for structured change filters. + * If false, no preference is displayed and structured change filters are disabled. + * If true, structured change filters are *enabled* by default, and a preference is displayed + * that lets users disable them. + * + * Temporary variable during development and will be removed. + * + * @since 1.30 */ -$wgStructuredChangeFiltersEnableSaving = true; +$wgStructuredChangeFiltersShowPreference = false; /** - * Whether to show the new experimental views (like namespaces, tags, and users) in - * RecentChanges filters + * Whether to enable RCFilters app on Special:Watchlist + * + * Temporary variable during development and will be removed. */ -$wgStructuredChangeFiltersEnableExperimentalViews = false; +$wgStructuredChangeFiltersOnWatchlist = false; /** - * Whether to allow users to use the experimental live update feature in the new RecentChanges UI + * Polling rate, in seconds, used by the 'live update' and 'view newest' features + * of the RCFilters app on SpecialRecentChanges and Special:Watchlist. + * 0 to disable completely. */ -$wgStructuredChangeFiltersEnableLiveUpdate = false; +$wgStructuredChangeFiltersLiveUpdatePollingRate = 3; /** * Use new page patrolling to check new pages on Special:Newpages @@ -8215,6 +8254,7 @@ $wgShellLocale = 'C.UTF-8'; /** * Timeout for HTTP requests done internally, in seconds. + * @var int */ $wgHTTPTimeout = 25; @@ -8238,10 +8278,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 = []; @@ -8301,6 +8344,20 @@ $wgUpdateRowsPerQuery = 100; */ $wgExternalDiffEngine = false; +/** + * wikidiff2 supports detection of changes in moved paragraphs. + * This setting controls the maximum number of paragraphs to compare before it bails out. + * Supported values: + * * 0: detection of moved paragraphs is disabled + * * int > 0: maximum number of paragraphs to compare + * Note: number of paragraph comparisons is in O(n^2). + * This setting is only effective if the wikidiff2 PHP/HHVM module is used as diffengine. + * See $wgExternalDiffEngine. + * + * @since 1.30 + */ +$wgWikiDiff2MovedParagraphDetectionCutoff = 0; + /** * Disable redirects to special pages and interwiki redirects, which use a 302 * and have no "redirected from" link. @@ -8651,6 +8708,18 @@ $wgCSPFalsePositiveUrls = [ 'https://ad.lkqd.net/vpaid/vpaid.js' => true, ]; +/** + * Shortest CIDR limits that can be checked in any individual range check + * at Special:Contributions. + * + * @var array + * @since 1.30 + */ +$wgRangeContributionsCIDRLimit = [ + 'IPv4' => 16, + 'IPv6' => 32, +]; + /** * The following variables define 3 user experience levels: * @@ -8687,6 +8756,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/Defines.php b/includes/Defines.php index 8ac84e5ab5..ca603e7684 100644 --- a/includes/Defines.php +++ b/includes/Defines.php @@ -31,6 +31,9 @@ use Wikimedia\Rdbms\IDatabase; */ # Obsolete aliases +/** + * @deprecated since 1.28 + */ define( 'DB_SLAVE', -1 ); /**@{ diff --git a/includes/EditPage.php b/includes/EditPage.php index 814c248304..aa1f205a7d 100644 --- a/includes/EditPage.php +++ b/includes/EditPage.php @@ -40,6 +40,11 @@ use Wikimedia\ScopedCallback; * headaches, which may be fatal. */ class EditPage { + /** + * Used for Unicode support checks + */ + const UNICODE_CHECK = 'ℳ𝒲♥𝓊𝓃𝒾𝒸ℴ𝒹ℯ'; + /** * Status: Article successfully updated */ @@ -177,6 +182,11 @@ class EditPage { */ const AS_CANNOT_USE_CUSTOM_MODEL = 241; + /** + * Status: edit rejected because browser doesn't support Unicode. + */ + const AS_UNICODE_NOT_SUPPORTED = 242; + /** * HTML id and name for the beginning of the edit form. */ @@ -203,12 +213,18 @@ class EditPage { */ const POST_EDIT_COOKIE_DURATION = 1200; - /** @var Article */ + /** + * @deprecated for public usage since 1.30 use EditPage::getArticle() + * @var Article + */ public $mArticle; /** @var WikiPage */ private $page; - /** @var Title */ + /** + * @deprecated for public usage since 1.30 use EditPage::getTitle() + * @var Title + */ public $mTitle; /** @var null|Title */ @@ -220,16 +236,28 @@ class EditPage { /** @var bool */ public $isConflict = false; - /** @var bool */ + /** + * @deprecated since 1.30 use Title::isCssJsSubpage() + * @var bool + */ public $isCssJsSubpage = false; - /** @var bool */ + /** + * @deprecated since 1.30 use Title::isCssSubpage() + * @var bool + */ public $isCssSubpage = false; - /** @var bool */ + /** + * @deprecated since 1.30 use Title::isJsSubpage() + * @var bool + */ public $isJsSubpage = false; - /** @var bool */ + /** + * @deprecated since 1.30 + * @var bool + */ public $isWrongCaseCssJsPage = false; /** @var bool New page or new section */ @@ -336,7 +364,7 @@ class EditPage { /** @var string */ public $edittime = ''; - /** @var integer */ + /** @var int */ private $editRevId = null; /** @var string */ @@ -414,16 +442,14 @@ class EditPage { private $isOldRev = false; /** - * @var bool Whether OOUI should be enabled here + * @var string|null What the user submitted in the 'wpUnicodeCheck' field */ - private $oouiEnabled = false; + private $unicodeCheck; /** * @param Article $article */ public function __construct( Article $article ) { - global $wgOOUIEditPage; - $this->mArticle = $article; $this->page = $article->getPage(); // model object $this->mTitle = $article->getTitle(); @@ -433,8 +459,6 @@ class EditPage { $handler = ContentHandler::getForModelID( $this->contentModel ); $this->contentFormat = $handler->getDefaultFormat(); - - $this->oouiEnabled = $wgOOUIEditPage; } /** @@ -478,6 +502,10 @@ class EditPage { */ public function getContextTitle() { if ( is_null( $this->mContextTitle ) ) { + wfDebugLog( + 'GlobalTitleFail', + __METHOD__ . ' called by ' . wfGetAllCallers( 5 ) . ' with no title set.' + ); global $wgTitle; return $wgTitle; } else { @@ -487,10 +515,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; } /** @@ -519,6 +548,7 @@ class EditPage { * @deprecated since 1.29, call edit directly */ public function submit() { + wfDeprecated( __METHOD__, '1.29' ); $this->edit(); } @@ -534,7 +564,6 @@ class EditPage { * the newly-edited page. */ public function edit() { - global $wgOut, $wgRequest, $wgUser; // Allow extensions to modify/prevent this form or submission if ( !Hooks::run( 'AlternateEdit', [ $this ] ) ) { return; @@ -542,13 +571,14 @@ class EditPage { wfDebug( __METHOD__ . ": enter\n" ); + $request = $this->context->getRequest(); // If they used redlink=1 and the page exists, redirect to the main article - if ( $wgRequest->getBool( 'redlink' ) && $this->mTitle->exists() ) { - $wgOut->redirect( $this->mTitle->getFullURL() ); + if ( $request->getBool( 'redlink' ) && $this->mTitle->exists() ) { + $this->context->getOutput()->redirect( $this->mTitle->getFullURL() ); return; } - $this->importFormData( $wgRequest ); + $this->importFormData( $request ); $this->firsttime = false; if ( wfReadOnly() && $this->save ) { @@ -577,9 +607,8 @@ class EditPage { wfDebug( __METHOD__ . ": User can't edit\n" ); // Auto-block user's IP if the account was "hard" blocked if ( !wfReadOnly() ) { - $user = $wgUser; - DeferredUpdates::addCallableUpdate( function () use ( $user ) { - $user->spreadAnyEditBlock(); + DeferredUpdates::addCallableUpdate( function () { + $this->context->getUser()->spreadAnyEditBlock(); } ); } $this->displayPermissionsError( $permErrors ); @@ -616,10 +645,11 @@ class EditPage { $this->isConflict = false; // css / js subpages of user pages get a special treatment + // The following member variables are deprecated since 1.30, + // the functions should be used instead. $this->isCssJsSubpage = $this->mTitle->isCssJsSubpage(); $this->isCssSubpage = $this->mTitle->isCssSubpage(); $this->isJsSubpage = $this->mTitle->isJsSubpage(); - // @todo FIXME: Silly assignment. $this->isWrongCaseCssJsPage = $this->isWrongCaseCssJsPage(); # Show applicable editing introductions @@ -664,15 +694,14 @@ class EditPage { * @return array */ protected function getEditPermissionErrors( $rigor = 'secure' ) { - global $wgUser; - - $permErrors = $this->mTitle->getUserPermissionsErrors( 'edit', $wgUser, $rigor ); + $user = $this->context->getUser(); + $permErrors = $this->mTitle->getUserPermissionsErrors( 'edit', $user, $rigor ); # Can this title be created? if ( !$this->mTitle->exists() ) { $permErrors = array_merge( $permErrors, wfArrayDiff2( - $this->mTitle->getUserPermissionsErrors( 'create', $wgUser, $rigor ), + $this->mTitle->getUserPermissionsErrors( 'create', $user, $rigor ), $permErrors ) ); @@ -709,13 +738,12 @@ class EditPage { * @throws PermissionsError */ protected function displayPermissionsError( array $permErrors ) { - global $wgRequest, $wgOut; - - if ( $wgRequest->getBool( 'redlink' ) ) { + $out = $this->context->getOutput(); + if ( $this->context->getRequest()->getBool( 'redlink' ) ) { // The edit page was reached via a red link. // Redirect to the article page and let them click the edit tab if // they really want a permission error. - $wgOut->redirect( $this->mTitle->getFullURL() ); + $out->redirect( $this->mTitle->getFullURL() ); return; } @@ -730,7 +758,7 @@ class EditPage { $this->displayViewSourcePage( $content, - $wgOut->formatPermissionsErrorMessage( $permErrors, 'edit' ) + $out->formatPermissionsErrorMessage( $permErrors, 'edit' ) ); } @@ -740,29 +768,28 @@ class EditPage { * @param string $errorMessage additional wikitext error message to display */ protected function displayViewSourcePage( Content $content, $errorMessage = '' ) { - global $wgOut; - - Hooks::run( 'EditPage::showReadOnlyForm:initial', [ $this, &$wgOut ] ); + $out = $this->context->getOutput(); + Hooks::run( 'EditPage::showReadOnlyForm:initial', [ $this, &$out ] ); - $wgOut->setRobotPolicy( 'noindex,nofollow' ); - $wgOut->setPageTitle( $this->context->msg( + $out->setRobotPolicy( 'noindex,nofollow' ); + $out->setPageTitle( $this->context->msg( 'viewsource-title', $this->getContextTitle()->getPrefixedText() ) ); - $wgOut->addBacklinkSubtitle( $this->getContextTitle() ); - $wgOut->addHTML( $this->editFormPageTop ); - $wgOut->addHTML( $this->editFormTextTop ); + $out->addBacklinkSubtitle( $this->getContextTitle() ); + $out->addHTML( $this->editFormPageTop ); + $out->addHTML( $this->editFormTextTop ); if ( $errorMessage !== '' ) { - $wgOut->addWikiText( $errorMessage ); - $wgOut->addHTML( "
\n" ); + $out->addWikiText( $errorMessage ); + $out->addHTML( "
\n" ); } # If the user made changes, preserve them when showing the markup # (This happens when a user is blocked during edit, for instance) if ( !$this->firsttime ) { $text = $this->textbox1; - $wgOut->addWikiMsg( 'viewyourtext' ); + $out->addWikiMsg( 'viewyourtext' ); } else { try { $text = $this->toEditText( $content ); @@ -771,20 +798,20 @@ class EditPage { # (e.g. for an old revision with a different model) $text = $content->serialize(); } - $wgOut->addWikiMsg( 'viewsourcetext' ); + $out->addWikiMsg( 'viewsourcetext' ); } - $wgOut->addHTML( $this->editFormTextBeforeContent ); + $out->addHTML( $this->editFormTextBeforeContent ); $this->showTextbox( $text, 'wpTextbox1', [ 'readonly' ] ); - $wgOut->addHTML( $this->editFormTextAfterContent ); + $out->addHTML( $this->editFormTextAfterContent ); - $wgOut->addHTML( $this->makeTemplatesOnThisPageList( $this->getTemplates() ) ); + $out->addHTML( $this->makeTemplatesOnThisPageList( $this->getTemplates() ) ); - $wgOut->addModules( 'mediawiki.action.edit.collapsibleFooter' ); + $out->addModules( 'mediawiki.action.edit.collapsibleFooter' ); - $wgOut->addHTML( $this->editFormTextBottom ); + $out->addHTML( $this->editFormTextBottom ); if ( $this->mTitle->exists() ) { - $wgOut->returnToMain( null, $this->mTitle ); + $out->returnToMain( null, $this->mTitle ); } } @@ -794,24 +821,25 @@ class EditPage { * @return bool */ protected function previewOnOpen() { - global $wgRequest, $wgUser, $wgPreviewOnOpenNamespaces; - if ( $wgRequest->getVal( 'preview' ) == 'yes' ) { + $previewOnOpenNamespaces = $this->context->getConfig()->get( 'PreviewOnOpenNamespaces' ); + $request = $this->context->getRequest(); + if ( $request->getVal( 'preview' ) == 'yes' ) { // Explicit override from request return true; - } elseif ( $wgRequest->getVal( 'preview' ) == 'no' ) { + } elseif ( $request->getVal( 'preview' ) == 'no' ) { // Explicit override from request return false; } elseif ( $this->section == 'new' ) { // Nothing *to* preview for new sections return false; - } elseif ( ( $wgRequest->getVal( 'preload' ) !== null || $this->mTitle->exists() ) - && $wgUser->getOption( 'previewonfirst' ) + } elseif ( ( $request->getVal( 'preload' ) !== null || $this->mTitle->exists() ) + && $this->context->getUser()->getOption( 'previewonfirst' ) ) { // Standard preference behavior return true; } elseif ( !$this->mTitle->exists() - && isset( $wgPreviewOnOpenNamespaces[$this->mTitle->getNamespace()] ) - && $wgPreviewOnOpenNamespaces[$this->mTitle->getNamespace()] + && isset( $previewOnOpenNamespaces[$this->mTitle->getNamespace()] ) + && $previewOnOpenNamespaces[$this->mTitle->getNamespace()] ) { // Categories are special return true; @@ -854,15 +882,10 @@ 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' ) ); @@ -876,7 +899,7 @@ class EditPage { # These fields need to be checked for encoding. # Also remove trailing whitespace, but don't remove _initial_ # whitespace from the text boxes. This may be significant formatting. - $this->textbox1 = $this->safeUnicodeInput( $request, 'wpTextbox1' ); + $this->textbox1 = rtrim( $request->getText( 'wpTextbox1' ) ); if ( !$request->getCheck( 'wpTextbox2' ) ) { // Skip this if wpTextbox2 has input, it indicates that we came // from a conflict page with raw page text, not a custom form @@ -887,8 +910,9 @@ class EditPage { } } - # Truncate for whole multibyte characters - $this->summary = $wgContLang->truncate( $request->getText( 'wpSummary' ), 255 ); + $this->unicodeCheck = $request->getText( 'wpUnicodeCheck' ); + + $this->summary = $request->getText( 'wpSummary' ); # If the summary consists of a heading, e.g. '==Foobar==', extract the title from the # header syntax, e.g. 'Foobar'. This is mainly an issue when we are using wpSummary for @@ -900,7 +924,7 @@ class EditPage { # currently doing double duty as both edit summary and section title. Right now this # is just to allow API edits to work around this limitation, but this should be # incorporated into the actual edit form when EditPage is rewritten (Bugs 18654, 26312). - $this->sectiontitle = $wgContLang->truncate( $request->getText( 'wpSectionTitle' ), 255 ); + $this->sectiontitle = $request->getText( 'wpSectionTitle' ); $this->sectiontitle = preg_replace( '/^\s*=+\s*(.*?)\s*=+\s*$/', '$1', $this->sectiontitle ); $this->edittime = $request->getVal( 'wpEdittime' ); @@ -972,14 +996,15 @@ class EditPage { $this->minoredit = $request->getCheck( 'wpMinoredit' ); $this->watchthis = $request->getCheck( 'wpWatchthis' ); + $user = $this->context->getUser(); # Don't force edit summaries when a user is editing their own user or talk page if ( ( $this->mTitle->mNamespace == NS_USER || $this->mTitle->mNamespace == NS_USER_TALK ) - && $this->mTitle->getText() == $wgUser->getName() + && $this->mTitle->getText() == $user->getName() ) { $this->allowBlankSummary = true; } else { $this->allowBlankSummary = $request->getBool( 'wpIgnoreBlankSummary' ) - || !$wgUser->getOption( 'forceeditsummary' ); + || !$user->getOption( 'forceeditsummary' ); } $this->autoSumm = $request->getText( 'wpAutoSummary' ); @@ -1082,7 +1107,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 ) { @@ -1095,7 +1120,6 @@ class EditPage { * @return bool If the requested section is valid */ public function initialiseForm() { - global $wgUser; $this->edittime = $this->page->getTimestamp(); $this->editRevId = $this->page->getLatest(); @@ -1105,19 +1129,20 @@ class EditPage { } $this->textbox1 = $this->toEditText( $content ); + $user = $this->context->getUser(); // activate checkboxes if user wants them to be always active # Sort out the "watch" checkbox - if ( $wgUser->getOption( 'watchdefault' ) ) { + if ( $user->getOption( 'watchdefault' ) ) { # Watch all edits $this->watchthis = true; - } elseif ( $wgUser->getOption( 'watchcreations' ) && !$this->mTitle->exists() ) { + } elseif ( $user->getOption( 'watchcreations' ) && !$this->mTitle->exists() ) { # Watch creations $this->watchthis = true; - } elseif ( $wgUser->isWatched( $this->mTitle ) ) { + } elseif ( $user->isWatched( $this->mTitle ) ) { # Already watched $this->watchthis = true; } - if ( $wgUser->getOption( 'minordefault' ) && !$this->isNew ) { + if ( $user->getOption( 'minordefault' ) && !$this->isNew ) { $this->minoredit = true; } if ( $this->textbox1 === false ) { @@ -1134,10 +1159,12 @@ class EditPage { * @since 1.21 */ protected function getContentObject( $def_content = null ) { - global $wgOut, $wgRequest, $wgUser, $wgContLang; + global $wgContLang; $content = false; + $user = $this->context->getUser(); + $request = $this->context->getRequest(); // For message page not locally set, use the i18n message. // For other non-existent articles, use preload text if any. if ( !$this->mTitle->exists() || $this->section == 'new' ) { @@ -1149,10 +1176,10 @@ class EditPage { } if ( $content === false ) { # If requested, preload some text. - $preload = $wgRequest->getVal( 'preload', + $preload = $request->getVal( 'preload', // Custom preload text for new sections $this->section === 'new' ? 'MediaWiki:addsection-preload' : '' ); - $params = $wgRequest->getArray( 'preloadparams', [] ); + $params = $request->getArray( 'preloadparams', [] ); $content = $this->getPreloadedContent( $preload, $params ); } @@ -1160,15 +1187,15 @@ class EditPage { } else { if ( $this->section != '' ) { // Get section edit text (returns $def_text for invalid sections) - $orig = $this->getOriginalContent( $wgUser ); + $orig = $this->getOriginalContent( $user ); $content = $orig ? $orig->getSection( $this->section ) : null; if ( !$content ) { $content = $def_content; } } else { - $undoafter = $wgRequest->getInt( 'undoafter' ); - $undo = $wgRequest->getInt( 'undo' ); + $undoafter = $request->getInt( 'undoafter' ); + $undo = $request->getInt( 'undo' ); if ( $undo > 0 && $undoafter > 0 ) { $undorev = Revision::newFromId( $undo ); @@ -1188,8 +1215,8 @@ class EditPage { $undoMsg = 'failure'; } else { $oldContent = $this->page->getContent( Revision::RAW ); - $popts = ParserOptions::newFromUserAndLang( $wgUser, $wgContLang ); - $newContent = $content->preSaveTransform( $this->mTitle, $wgUser, $popts ); + $popts = ParserOptions::newFromUserAndLang( $user, $wgContLang ); + $newContent = $content->preSaveTransform( $this->mTitle, $user, $popts ); if ( $newContent->getModel() !== $oldContent->getModel() ) { // The undo may change content // model if its reverting the top @@ -1242,14 +1269,15 @@ class EditPage { $undoMsg = 'norev'; } + $out = $this->context->getOutput(); // Messages: undo-success, undo-failure, undo-norev, undo-nochange $class = ( $undoMsg == 'success' ? '' : 'error ' ) . "mw-undo-{$undoMsg}"; - $this->editFormPageTop .= $wgOut->parse( "
" . + $this->editFormPageTop .= $out->parse( "
" . $this->context->msg( 'undo-' . $undoMsg )->plain() . '
', true, /* interface */true ); } if ( $content === false ) { - $content = $this->getOriginalContent( $wgUser ); + $content = $this->getOriginalContent( $user ); } } } @@ -1375,8 +1403,6 @@ class EditPage { * @since 1.21 */ protected function getPreloadedContent( $preload, $params = [] ) { - global $wgUser; - if ( !empty( $this->mPreloadContent ) ) { return $this->mPreloadContent; } @@ -1387,9 +1413,10 @@ class EditPage { return $handler->makeEmptyContent(); } + $user = $this->context->getUser(); $title = Title::newFromText( $preload ); # Check for existence to avoid getting MediaWiki:Noarticletext - if ( $title === null || !$title->exists() || !$title->userCan( 'read', $wgUser ) ) { + if ( $title === null || !$title->exists() || !$title->userCan( 'read', $user ) ) { // TODO: somehow show a warning to the user! return $handler->makeEmptyContent(); } @@ -1398,14 +1425,14 @@ class EditPage { if ( $page->isRedirect() ) { $title = $page->getRedirectTarget(); # Same as before - if ( $title === null || !$title->exists() || !$title->userCan( 'read', $wgUser ) ) { + if ( $title === null || !$title->exists() || !$title->userCan( 'read', $user ) ) { // TODO: somehow show a warning to the user! return $handler->makeEmptyContent(); } $page = WikiPage::factory( $title ); } - $parserOptions = ParserOptions::newFromUser( $wgUser ); + $parserOptions = ParserOptions::newFromUser( $user ); $content = $page->getContent( Revision::RAW ); if ( !$content ) { @@ -1434,15 +1461,15 @@ class EditPage { /** * Make sure the form isn't faking a user's credentials. * - * @param WebRequest $request + * @param WebRequest &$request * @return bool * @private */ public function tokenOk( &$request ) { - global $wgUser; $token = $request->getVal( 'wpEditToken' ); - $this->mTokenOk = $wgUser->matchEditToken( $token ); - $this->mTokenOkExceptSuffix = $wgUser->matchEditTokenNoSuffix( $token ); + $user = $this->context->getUser(); + $this->mTokenOk = $user->matchEditToken( $token ); + $this->mTokenOkExceptSuffix = $user->matchEditTokenNoSuffix( $token ); return $this->mTokenOk; } @@ -1471,21 +1498,19 @@ class EditPage { $val = 'restored'; } - $response = RequestContext::getMain()->getRequest()->response(); + $response = $this->context->getRequest()->response(); $response->setCookie( $postEditKey, $val, time() + self::POST_EDIT_COOKIE_DURATION ); } /** * 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. */ public function attemptSave( &$resultDetails = false ) { - global $wgUser; - # Allow bots to exempt some edits from bot flagging - $bot = $wgUser->isAllowed( 'bot' ) && $this->bot; + $bot = $this->context->getUser()->isAllowed( 'bot' ) && $this->bot; $status = $this->internalAttemptSave( $resultDetails, $bot ); Hooks::run( 'EditPage::attemptSave:after', [ $this, $status, $resultDetails ] ); @@ -1497,9 +1522,7 @@ class EditPage { * Log when a page was successfully saved after the edit conflict view */ private function incrementResolvedConflicts() { - global $wgRequest; - - if ( $wgRequest->getText( 'mode' ) !== 'conflict' ) { + if ( $this->context->getRequest()->getText( 'mode' ) !== 'conflict' ) { return; } @@ -1517,8 +1540,6 @@ class EditPage { * @return bool False, if output is done, true if rest of the form should be displayed */ private function handleStatus( Status $status, $resultDetails ) { - global $wgUser, $wgOut; - /** * @todo FIXME: once the interface for internalAttemptSave() is made * nicer, this should use the message in $status @@ -1534,9 +1555,11 @@ class EditPage { } } + $out = $this->context->getOutput(); + // "wpExtraQueryRedirect" is a hidden input to modify // after save URL and is not used by actual edit form - $request = RequestContext::getMain()->getRequest(); + $request = $this->context->getRequest(); $extraQueryRedirect = $request->getVal( 'wpExtraQueryRedirect' ); switch ( $status->value ) { @@ -1557,7 +1580,8 @@ class EditPage { case self::AS_CANNOT_USE_CUSTOM_MODEL: case self::AS_PARSE_ERROR: - $wgOut->addWikiText( '
' . "\n" . $status->getWikiText() . '
' ); + case self::AS_UNICODE_NOT_SUPPORTED: + $out->addWikiText( '
' . "\n" . $status->getWikiText() . '
' ); return true; case self::AS_SUCCESS_NEW_ARTICLE: @@ -1570,7 +1594,7 @@ class EditPage { } } $anchor = isset( $resultDetails['sectionanchor'] ) ? $resultDetails['sectionanchor'] : ''; - $wgOut->redirect( $this->mTitle->getFullURL( $query ) . $anchor ); + $out->redirect( $this->mTitle->getFullURL( $query ) . $anchor ); return false; case self::AS_SUCCESS_UPDATE: @@ -1598,7 +1622,7 @@ class EditPage { } } - $wgOut->redirect( $this->mTitle->getFullURL( $extraQuery ) . $sectionanchor ); + $out->redirect( $this->mTitle->getFullURL( $extraQuery ) . $sectionanchor ); return false; case self::AS_SPAM_ERROR: @@ -1606,7 +1630,7 @@ class EditPage { return false; case self::AS_BLOCKED_PAGE_FOR_USER: - throw new UserBlockedError( $wgUser->getBlock() ); + throw new UserBlockedError( $this->context->getUser()->getBlock() ); case self::AS_IMAGE_REDIRECT_ANON: case self::AS_IMAGE_REDIRECT_LOGGED: @@ -1660,7 +1684,7 @@ class EditPage { // Run new style post-section-merge edit filter if ( !Hooks::run( 'EditFilterMergedContent', - [ $this->mArticle->getContext(), $content, $status, $this->summary, + [ $this->context, $content, $status, $this->summary, $user, $this->minoredit ] ) ) { # Error messages etc. could be handled within the hook... @@ -1700,7 +1724,7 @@ class EditPage { global $wgParser; if ( $this->sectiontitle !== '' ) { - $sectionanchor = $wgParser->guessLegacySectionNameFromWikiText( $this->sectiontitle ); + $sectionanchor = $this->guessSectionName( $this->sectiontitle ); // If no edit summary was specified, create one automatically from the section // title and have it link to the new section. Otherwise, respect the summary as // passed. @@ -1710,7 +1734,7 @@ class EditPage { ->rawParams( $cleanSectionTitle )->inContentLanguage()->text(); } } elseif ( $this->summary !== '' ) { - $sectionanchor = $wgParser->guessLegacySectionNameFromWikiText( $this->summary ); + $sectionanchor = $this->guessSectionName( $this->summary ); # This is a new section, so create a link to the new section # in the revision summary. $cleanSummary = $wgParser->stripSectionName( $this->summary ); @@ -1723,12 +1747,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. @@ -1745,10 +1769,8 @@ class EditPage { * time. */ public function internalAttemptSave( &$result, $bot = false ) { - global $wgUser, $wgRequest, $wgParser, $wgMaxArticleSize; - global $wgContentHandlerUseDB; - $status = Status::newGood(); + $user = $this->context->getUser(); if ( !Hooks::run( 'EditPage::attemptSave', [ $this ] ) ) { wfDebug( "Hook 'EditPage::attemptSave' aborted article saving\n" ); @@ -1757,11 +1779,18 @@ class EditPage { return $status; } - $spam = $wgRequest->getText( 'wpAntispam' ); + if ( $this->unicodeCheck !== self::UNICODE_CHECK ) { + $status->fatal( 'unicode-support-fail' ); + $status->value = self::AS_UNICODE_NOT_SUPPORTED; + return $status; + } + + $request = $this->context->getRequest(); + $spam = $request->getText( 'wpAntispam' ); if ( $spam !== '' ) { wfDebugLog( 'SimpleAntiSpam', - $wgUser->getName() . + $user->getName() . ' editing "' . $this->mTitle->getPrefixedText() . '" submitted bogus field "' . @@ -1790,9 +1819,9 @@ class EditPage { # Check image redirect if ( $this->mTitle->getNamespace() == NS_FILE && $textbox_content->isRedirect() && - !$wgUser->isAllowed( 'upload' ) + !$user->isAllowed( 'upload' ) ) { - $code = $wgUser->isAnon() ? self::AS_IMAGE_REDIRECT_ANON : self::AS_IMAGE_REDIRECT_LOGGED; + $code = $user->isAnon() ? self::AS_IMAGE_REDIRECT_ANON : self::AS_IMAGE_REDIRECT_LOGGED; $status->setResult( false, $code ); return $status; @@ -1817,7 +1846,7 @@ class EditPage { } if ( $match !== false ) { $result['spam'] = $match; - $ip = $wgRequest->getIP(); + $ip = $request->getIP(); $pdbk = $this->mTitle->getPrefixedDBkey(); $match = str_replace( "\n", '', $match ); wfDebugLog( 'SpamRegex', "$ip spam regex hit [[$pdbk]]: \"$match\"" ); @@ -1840,10 +1869,10 @@ class EditPage { return $status; } - if ( $wgUser->isBlockedFrom( $this->mTitle, false ) ) { + if ( $user->isBlockedFrom( $this->mTitle, false ) ) { // Auto-block user's IP if the account was "hard" blocked if ( !wfReadOnly() ) { - $wgUser->spreadAnyEditBlock(); + $user->spreadAnyEditBlock(); } # Check block state against master, thus 'false'. $status->setResult( false, self::AS_BLOCKED_PAGE_FOR_USER ); @@ -1851,15 +1880,17 @@ class EditPage { } $this->contentLength = strlen( $this->textbox1 ); - if ( $this->contentLength > $wgMaxArticleSize * 1024 ) { + $config = $this->context->getConfig(); + $maxArticleSize = $config->get( 'MaxArticleSize' ); + if ( $this->contentLength > $maxArticleSize * 1024 ) { // Error will be displayed by showEditForm() $this->tooBig = true; $status->setResult( false, self::AS_CONTENT_TOO_BIG ); return $status; } - if ( !$wgUser->isAllowed( 'edit' ) ) { - if ( $wgUser->isAnon() ) { + if ( !$user->isAllowed( 'edit' ) ) { + if ( $user->isAnon() ) { $status->setResult( false, self::AS_READ_ONLY_PAGE_ANON ); return $status; } else { @@ -1871,19 +1902,19 @@ class EditPage { $changingContentModel = false; if ( $this->contentModel !== $this->mTitle->getContentModel() ) { - if ( !$wgContentHandlerUseDB ) { + if ( !$config->get( 'ContentHandlerUseDB' ) ) { $status->fatal( 'editpage-cannot-use-custom-model' ); $status->value = self::AS_CANNOT_USE_CUSTOM_MODEL; return $status; - } elseif ( !$wgUser->isAllowed( 'editcontentmodel' ) ) { + } elseif ( !$user->isAllowed( 'editcontentmodel' ) ) { $status->setResult( false, self::AS_NO_CHANGE_CONTENT_MODEL ); return $status; } // Make sure the user can edit the page under the new content model too $titleWithNewContentModel = clone $this->mTitle; $titleWithNewContentModel->setContentModel( $this->contentModel ); - if ( !$titleWithNewContentModel->userCan( 'editcontentmodel', $wgUser ) - || !$titleWithNewContentModel->userCan( 'edit', $wgUser ) + if ( !$titleWithNewContentModel->userCan( 'editcontentmodel', $user ) + || !$titleWithNewContentModel->userCan( 'edit', $user ) ) { $status->setResult( false, self::AS_NO_CHANGE_CONTENT_MODEL ); return $status; @@ -1895,7 +1926,7 @@ class EditPage { if ( $this->changeTags ) { $changeTagsStatus = ChangeTags::canAddTagsAccompanyingChange( - $this->changeTags, $wgUser ); + $this->changeTags, $user ); if ( !$changeTagsStatus->isOK() ) { $changeTagsStatus->value = self::AS_CHANGE_TAG_ERROR; return $changeTagsStatus; @@ -1907,8 +1938,8 @@ class EditPage { $status->value = self::AS_READ_ONLY_PAGE; return $status; } - if ( $wgUser->pingLimiter() || $wgUser->pingLimiter( 'linkpurge', 0 ) - || ( $changingContentModel && $wgUser->pingLimiter( 'editcontentmodel' ) ) + if ( $user->pingLimiter() || $user->pingLimiter( 'linkpurge', 0 ) + || ( $changingContentModel && $user->pingLimiter( 'editcontentmodel' ) ) ) { $status->fatal( 'actionthrottledtext' ); $status->value = self::AS_RATE_LIMITED; @@ -1929,7 +1960,7 @@ class EditPage { if ( $new ) { // Late check for create permission, just in case *PARANOIA* - if ( !$this->mTitle->userCan( 'create', $wgUser ) ) { + if ( !$this->mTitle->userCan( 'create', $user ) ) { $status->fatal( 'nocreatetext' ); $status->value = self::AS_NO_CREATE_PERMISSION; wfDebug( __METHOD__ . ": no create permission\n" ); @@ -1953,7 +1984,7 @@ class EditPage { return $status; } - if ( !$this->runPostMergeFilters( $textbox_content, $status, $wgUser ) ) { + if ( !$this->runPostMergeFilters( $textbox_content, $status, $user ) ) { return $status; } @@ -1989,7 +2020,7 @@ class EditPage { ) { $this->isConflict = true; if ( $this->section == 'new' ) { - if ( $this->page->getUserText() == $wgUser->getName() && + if ( $this->page->getUserText() == $user->getName() && $this->page->getComment() == $this->newSectionSummary() ) { // Probably a duplicate submission of a new comment. @@ -2005,7 +2036,7 @@ class EditPage { } elseif ( $this->section == '' && Revision::userWasLastToEdit( DB_MASTER, $this->mTitle->getArticleID(), - $wgUser->getId(), $this->edittime + $user->getId(), $this->edittime ) ) { # Suppress edit conflict with self, except for section edits where merging is required. @@ -2075,7 +2106,7 @@ class EditPage { return $status; } - if ( !$this->runPostMergeFilters( $content, $status, $wgUser ) ) { + if ( !$this->runPostMergeFilters( $content, $status, $user ) ) { return $status; } @@ -2096,7 +2127,7 @@ class EditPage { return $status; } } elseif ( !$this->allowBlankSummary - && !$content->equals( $this->getOriginalContent( $wgUser ) ) + && !$content->equals( $this->getOriginalContent( $user ) ) && !$content->isRedirect() && md5( $this->summary ) == $this->autoSumm ) { @@ -2119,7 +2150,7 @@ class EditPage { # We can't deal with anchors, includes, html etc in the header for now, # headline would need to be parsed to improve this. if ( $hasmatch && strlen( $matches[2] ) > 0 ) { - $sectionanchor = $wgParser->guessLegacySectionNameFromWikiText( $matches[2] ); + $sectionanchor = $this->guessSectionName( $matches[2] ); } } $result['sectionanchor'] = $sectionanchor; @@ -2150,7 +2181,7 @@ class EditPage { // Check for length errors again now that the section is merged in $this->contentLength = strlen( $this->toEditText( $content ) ); - if ( $this->contentLength > $wgMaxArticleSize * 1024 ) { + if ( $this->contentLength > $maxArticleSize * 1024 ) { $this->tooBig = true; $status->setResult( false, self::AS_MAX_ARTICLE_SIZE_EXCEEDED ); return $status; @@ -2166,7 +2197,7 @@ class EditPage { $this->summary, $flags, false, - $wgUser, + $user, $content->getDefaultFormat(), $this->changeTags, $this->undidRev @@ -2190,7 +2221,7 @@ class EditPage { $result['nullEdit'] = $doEditStatus->hasMessage( 'edit-no-change' ); if ( $result['nullEdit'] ) { // We don't know if it was a null edit until now, so increment here - $wgUser->pingLimiter( 'linkpurge' ); + $user->pingLimiter( 'linkpurge' ); } $result['redirect'] = $content->isRedirect(); @@ -2199,7 +2230,7 @@ class EditPage { // If the content model changed, add a log entry if ( $changingContentModel ) { $this->addContentModelChangeLogEntry( - $wgUser, + $user, $new ? false : $oldContentModel, $this->contentModel, $this->summary @@ -2233,13 +2264,11 @@ class EditPage { * Register the change of watch status */ protected function updateWatchlist() { - global $wgUser; - - if ( !$wgUser->isLoggedIn() ) { + $user = $this->context->getUser(); + if ( !$user->isLoggedIn() ) { return; } - $user = $wgUser; $title = $this->mTitle; $watch = $this->watchthis; // Do this in its own transaction to reduce contention... @@ -2353,29 +2382,30 @@ class EditPage { } public function setHeaders() { - global $wgOut, $wgUser, $wgAjaxEditStash; + $out = $this->context->getOutput(); - $wgOut->addModules( 'mediawiki.action.edit' ); - $wgOut->addModuleStyles( 'mediawiki.action.edit.styles' ); + $out->addModules( 'mediawiki.action.edit' ); + $out->addModuleStyles( 'mediawiki.action.edit.styles' ); - if ( $wgUser->getOption( 'showtoolbar' ) ) { + $user = $this->context->getUser(); + if ( $user->getOption( 'showtoolbar' ) ) { // The addition of default buttons is handled by getEditToolbar() which // has its own dependency on this module. The call here ensures the module // is loaded in time (it has position "top") for other modules to register // buttons (e.g. extensions, gadgets, user scripts). - $wgOut->addModules( 'mediawiki.toolbar' ); + $out->addModules( 'mediawiki.toolbar' ); } - if ( $wgUser->getOption( 'uselivepreview' ) ) { - $wgOut->addModules( 'mediawiki.action.edit.preview' ); + if ( $user->getOption( 'uselivepreview' ) ) { + $out->addModules( 'mediawiki.action.edit.preview' ); } - if ( $wgUser->getOption( 'useeditwarning' ) ) { - $wgOut->addModules( 'mediawiki.action.edit.editWarning' ); + if ( $user->getOption( 'useeditwarning' ) ) { + $out->addModules( 'mediawiki.action.edit.editWarning' ); } # Enabled article-related sidebar, toplinks, etc. - $wgOut->setArticleRelated( true ); + $out->setArticleRelated( true ); $contextTitle = $this->getContextTitle(); if ( $this->isConflict ) { @@ -2398,12 +2428,12 @@ class EditPage { if ( $displayTitle === false ) { $displayTitle = $contextTitle->getPrefixedText(); } - $wgOut->setPageTitle( $this->context->msg( $msg, $displayTitle ) ); + $out->setPageTitle( $this->context->msg( $msg, $displayTitle ) ); # Transmit the name of the message to JavaScript for live preview # Keep Resources.php/mediawiki.action.edit.preview in sync with the possible keys - $wgOut->addJsConfigVars( [ + $out->addJsConfigVars( [ 'wgEditMessage' => $msg, - 'wgAjaxEditStash' => $wgAjaxEditStash, + 'wgAjaxEditStash' => $this->context->getConfig()->get( 'AjaxEditStash' ), ] ); } @@ -2411,16 +2441,16 @@ class EditPage { * Show all applicable editing introductions */ protected function showIntro() { - global $wgOut, $wgUser; if ( $this->suppressIntro ) { return; } + $out = $this->context->getOutput(); $namespace = $this->mTitle->getNamespace(); if ( $namespace == NS_MEDIAWIKI ) { # Show a warning if editing an interface message - $wgOut->wrapWikiMsg( "
\n$1\n
", 'editinginterface' ); + $out->wrapWikiMsg( "
\n$1\n
", 'editinginterface' ); # If this is a default message (but not css or js), # show a hint that it is translatable on translatewiki.net if ( !$this->mTitle->hasContentModel( CONTENT_MODEL_CSS ) @@ -2428,7 +2458,7 @@ class EditPage { ) { $defaultMessageText = $this->mTitle->getDefaultMessageText(); if ( $defaultMessageText !== false ) { - $wgOut->wrapWikiMsg( "
\n$1\n
", + $out->wrapWikiMsg( "
\n$1\n
", 'translateinterface' ); } } @@ -2440,11 +2470,11 @@ class EditPage { # there must be a description url to show a hint to shared repo if ( $descUrl ) { if ( !$this->mTitle->exists() ) { - $wgOut->wrapWikiMsg( "
\n$1\n
", [ + $out->wrapWikiMsg( "
\n$1\n
", [ 'sharedupload-desc-create', $file->getRepo()->getDisplayName(), $descUrl ] ); } else { - $wgOut->wrapWikiMsg( "
\n$1\n
", [ + $out->wrapWikiMsg( "
\n$1\n
", [ 'sharedupload-desc-edit', $file->getRepo()->getDisplayName(), $descUrl ] ); } @@ -2460,12 +2490,12 @@ class EditPage { $ip = User::isIP( $username ); $block = Block::newFromTarget( $user, $user ); if ( !( $user && $user->isLoggedIn() ) && !$ip ) { # User does not exist - $wgOut->wrapWikiMsg( "
\n$1\n
", + $out->wrapWikiMsg( "
\n$1\n
", [ 'userpage-userdoesnotexist', wfEscapeWikiText( $username ) ] ); } elseif ( !is_null( $block ) && $block->getType() != Block::TYPE_AUTO ) { # Show log extract if the user is currently blocked LogEventsList::showLogExtract( - $wgOut, + $out, 'block', MWNamespace::getCanonicalName( NS_USER ) . ':' . $block->getTarget(), '', @@ -2485,8 +2515,8 @@ class EditPage { $helpLink = wfExpandUrl( Skin::makeInternalOrExternalUrl( $this->context->msg( 'helppage' )->inContentLanguage()->text() ) ); - if ( $wgUser->isLoggedIn() ) { - $wgOut->wrapWikiMsg( + if ( $this->context->getUser()->isLoggedIn() ) { + $out->wrapWikiMsg( // Suppress the external link icon, consider the help url an internal one "
\n$1\n
", [ @@ -2495,7 +2525,7 @@ class EditPage { ] ); } else { - $wgOut->wrapWikiMsg( + $out->wrapWikiMsg( // Suppress the external link icon, consider the help url an internal one "
\n$1\n
", [ @@ -2509,7 +2539,7 @@ class EditPage { if ( !$this->mTitle->exists() ) { $dbr = wfGetDB( DB_REPLICA ); - LogEventsList::showLogExtract( $wgOut, [ 'delete', 'move' ], $this->mTitle, + LogEventsList::showLogExtract( $out, [ 'delete', 'move' ], $this->mTitle, '', [ 'lim' => 10, @@ -2530,9 +2560,8 @@ class EditPage { if ( $this->editintro ) { $title = Title::newFromText( $this->editintro ); if ( $title instanceof Title && $title->exists() && $title->userCan( 'read' ) ) { - global $wgOut; // Added using template syntax, to take 's into account. - $wgOut->addWikiTextTitleTidy( + $this->context->getOutput()->addWikiTextTitleTidy( '
{{:' . $title->getFullText() . '}}
', $this->mTitle ); @@ -2604,7 +2633,7 @@ class EditPage { } /** - * Send the edit form and related headers to $wgOut + * Send the edit form and related headers to OutputPage * @param callable|null $formCallback That takes an OutputPage parameter; will be called * during form output near the top, for captchas and the like. * @@ -2612,8 +2641,6 @@ class EditPage { * use the EditPage::showEditForm:fields hook instead. */ public function showEditForm( $formCallback = null ) { - global $wgOut, $wgUser; - # need to parse the preview early so that we know which templates are used, # otherwise users with "show preview after edit box" will get a blank list # we parse this near the beginning so that setHeaders can do the title @@ -2623,9 +2650,11 @@ class EditPage { $previewOutput = $this->getPreviewText(); } + $out = $this->context->getOutput(); + // Avoid PHP 7.1 warning of passing $this by reference $editPage = $this; - Hooks::run( 'EditPage::showEditForm:initial', [ &$editPage, &$wgOut ] ); + Hooks::run( 'EditPage::showEditForm:initial', [ &$editPage, &$out ] ); $this->setHeaders(); @@ -2638,19 +2667,20 @@ class EditPage { // We use $this->section to much before this and getVal('wgSection') directly in other places // at this point we can't reset $this->section to '' to fallback to non-section editing. // Someone is welcome to try refactoring though - $wgOut->showErrorPage( 'sectioneditnotsupported-title', 'sectioneditnotsupported-text' ); + $out->showErrorPage( 'sectioneditnotsupported-title', 'sectioneditnotsupported-text' ); return; } $this->showHeader(); - $wgOut->addHTML( $this->editFormPageTop ); + $out->addHTML( $this->editFormPageTop ); - if ( $wgUser->getOption( 'previewontop' ) ) { + $user = $this->context->getUser(); + if ( $user->getOption( 'previewontop' ) ) { $this->displayPreviewArea( $previewOutput, true ); } - $wgOut->addHTML( $this->editFormTextTop ); + $out->addHTML( $this->editFormTextTop ); $showToolbar = true; if ( $this->wasDeletedSinceLastEdit() ) { @@ -2659,17 +2689,17 @@ class EditPage { // Add an confirmation checkbox and explanation. $showToolbar = false; } else { - $wgOut->wrapWikiMsg( "
\n$1\n
", + $out->wrapWikiMsg( "
\n$1\n
", 'deletedwhileediting' ); } } // @todo add EditForm plugin interface and use it here! // search for textarea1 and textarea2, and allow EditForm to override all uses. - $wgOut->addHTML( Html::openElement( + $out->addHTML( Html::openElement( 'form', [ - 'class' => $this->oouiEnabled ? 'mw-editform-ooui' : 'mw-editform-legacy', + 'class' => 'mw-editform', 'id' => self::EDITFORM_ID, 'name' => self::EDITFORM_ID, 'method' => 'post', @@ -2680,11 +2710,14 @@ class EditPage { if ( is_callable( $formCallback ) ) { wfWarn( 'The $formCallback parameter to ' . __METHOD__ . 'is deprecated' ); - call_user_func_array( $formCallback, [ &$wgOut ] ); + call_user_func_array( $formCallback, [ &$out ] ); } + // Add a check for Unicode support + $out->addHTML( Html::hidden( 'wpUnicodeCheck', self::UNICODE_CHECK ) ); + // Add an empty field to trip up spambots - $wgOut->addHTML( + $out->addHTML( Xml::openElement( 'div', [ 'id' => 'antispam-container', 'style' => 'display: none;' ] ) . Html::rawElement( 'label', @@ -2705,21 +2738,21 @@ class EditPage { // Avoid PHP 7.1 warning of passing $this by reference $editPage = $this; - Hooks::run( 'EditPage::showEditForm:fields', [ &$editPage, &$wgOut ] ); + Hooks::run( 'EditPage::showEditForm:fields', [ &$editPage, &$out ] ); // Put these up at the top to ensure they aren't lost on early form submission $this->showFormBeforeText(); if ( $this->wasDeletedSinceLastEdit() && 'save' == $this->formtype ) { $username = $this->lastDelete->user_name; - $comment = $this->lastDelete->log_comment; + $comment = CommentStore::newKey( 'log_comment' )->getComment( $this->lastDelete )->text; // It is better to not parse the comment at all than to have templates expanded in the middle // TODO: can the checkLabel be moved outside of the div so that wrapWikiMsg could be used? $key = $comment === '' ? 'confirmrecreate-noreason' : 'confirmrecreate'; - $wgOut->addHTML( + $out->addHTML( '
' . $this->context->msg( $key, $username, "$comment" )->parse() . Xml::checkLabel( $this->context->msg( 'recreate' )->text(), 'wpRecreate', 'wpRecreate', false, @@ -2731,7 +2764,7 @@ class EditPage { # When the summary is hidden, also hide them on preview/show changes if ( $this->nosummary ) { - $wgOut->addHTML( Html::hidden( 'nosummary', true ) ); + $out->addHTML( Html::hidden( 'nosummary', true ) ); } # If a blank edit summary was previously provided, and the appropriate @@ -2742,15 +2775,15 @@ class EditPage { # For a bit more sophisticated detection of blank summaries, hash the # automatic one and pass that in the hidden field wpAutoSummary. if ( $this->missingSummary || ( $this->section == 'new' && $this->nosummary ) ) { - $wgOut->addHTML( Html::hidden( 'wpIgnoreBlankSummary', true ) ); + $out->addHTML( Html::hidden( 'wpIgnoreBlankSummary', true ) ); } if ( $this->undidRev ) { - $wgOut->addHTML( Html::hidden( 'wpUndidRevision', $this->undidRev ) ); + $out->addHTML( Html::hidden( 'wpUndidRevision', $this->undidRev ) ); } if ( $this->selfRedirect ) { - $wgOut->addHTML( Html::hidden( 'wpIgnoreSelfRedirect', true ) ); + $out->addHTML( Html::hidden( 'wpIgnoreSelfRedirect', true ) ); } if ( $this->hasPresetSummary ) { @@ -2761,35 +2794,29 @@ class EditPage { } $autosumm = $this->autoSumm ? $this->autoSumm : md5( $this->summary ); - $wgOut->addHTML( Html::hidden( 'wpAutoSummary', $autosumm ) ); - - $wgOut->addHTML( Html::hidden( 'oldid', $this->oldid ) ); - $wgOut->addHTML( Html::hidden( 'parentRevId', $this->getParentRevId() ) ); + $out->addHTML( Html::hidden( 'wpAutoSummary', $autosumm ) ); - $wgOut->addHTML( Html::hidden( 'format', $this->contentFormat ) ); - $wgOut->addHTML( Html::hidden( 'model', $this->contentModel ) ); + $out->addHTML( Html::hidden( 'oldid', $this->oldid ) ); + $out->addHTML( Html::hidden( 'parentRevId', $this->getParentRevId() ) ); - // Preserve &ooui=1 / &ooui=0 from URL parameters after submitting the page for preview - $wgOut->addHTML( Html::hidden( 'ooui', $this->oouiEnabled ? '1' : '0' ) ); + $out->addHTML( Html::hidden( 'format', $this->contentFormat ) ); + $out->addHTML( Html::hidden( 'model', $this->contentModel ) ); - // following functions will need OOUI, enable it only once; here. - if ( $this->oouiEnabled ) { - $wgOut->enableOOUI(); - } + $out->enableOOUI(); if ( $this->section == 'new' ) { $this->showSummaryInput( true, $this->summary ); - $wgOut->addHTML( $this->getSummaryPreview( true, $this->summary ) ); + $out->addHTML( $this->getSummaryPreview( true, $this->summary ) ); } - $wgOut->addHTML( $this->editFormTextBeforeContent ); + $out->addHTML( $this->editFormTextBeforeContent ); - if ( !$this->isCssJsSubpage && $showToolbar && $wgUser->getOption( 'showtoolbar' ) ) { - $wgOut->addHTML( EditPage::getEditToolbar( $this->mTitle ) ); + if ( !$this->mTitle->isCssJsSubpage() && $showToolbar && $user->getOption( 'showtoolbar' ) ) { + $out->addHTML( self::getEditToolbar( $this->mTitle ) ); } if ( $this->blankArticle ) { - $wgOut->addHTML( Html::hidden( 'wpIgnoreBlankArticle', true ) ); + $out->addHTML( Html::hidden( 'wpIgnoreBlankArticle', true ) ); } if ( $this->isConflict ) { @@ -2807,7 +2834,7 @@ class EditPage { $this->showContentForm(); } - $wgOut->addHTML( $this->editFormTextAfterContent ); + $out->addHTML( $this->editFormTextAfterContent ); $this->showStandardInputs(); @@ -2817,17 +2844,17 @@ class EditPage { $this->showEditTools(); - $wgOut->addHTML( $this->editFormTextAfterTools . "\n" ); + $out->addHTML( $this->editFormTextAfterTools . "\n" ); - $wgOut->addHTML( $this->makeTemplatesOnThisPageList( $this->getTemplates() ) ); + $out->addHTML( $this->makeTemplatesOnThisPageList( $this->getTemplates() ) ); - $wgOut->addHTML( Html::rawElement( 'div', [ 'class' => 'hiddencats' ], + $out->addHTML( Html::rawElement( 'div', [ 'class' => 'hiddencats' ], Linker::formatHiddenCategories( $this->page->getHiddenCategories() ) ) ); - $wgOut->addHTML( Html::rawElement( 'div', [ 'class' => 'limitreport' ], + $out->addHTML( Html::rawElement( 'div', [ 'class' => 'limitreport' ], self::getPreviewLimitReport( $this->mParserOutput ) ) ); - $wgOut->addModules( 'mediawiki.action.edit.collapsibleFooter' ); + $out->addModules( 'mediawiki.action.edit.collapsibleFooter' ); if ( $this->isConflict ) { try { @@ -2840,7 +2867,7 @@ class EditPage { $this->contentFormat, $ex->getMessage() ); - $wgOut->addWikiText( '
' . $msg->text() . '
' ); + $out->addWikiText( '
' . $msg->text() . '
' ); } } @@ -2854,14 +2881,14 @@ class EditPage { } else { $mode = 'text'; } - $wgOut->addHTML( Html::hidden( 'mode', $mode, [ 'id' => 'mw-edit-mode' ] ) ); + $out->addHTML( Html::hidden( 'mode', $mode, [ 'id' => 'mw-edit-mode' ] ) ); // Marker for detecting truncated form data. This must be the last // parameter sent in order to be of use, so do not move me. - $wgOut->addHTML( Html::hidden( 'wpUltimateParam', true ) ); - $wgOut->addHTML( $this->editFormTextBottom . "\n\n" ); + $out->addHTML( Html::hidden( 'wpUltimateParam', true ) ); + $out->addHTML( $this->editFormTextBottom . "\n\n" ); - if ( !$wgUser->getOption( 'previewontop' ) ) { + if ( !$user->getOption( 'previewontop' ) ) { $this->displayPreviewArea( $previewOutput, false ); } } @@ -2908,11 +2935,10 @@ class EditPage { } protected function showHeader() { - global $wgOut, $wgUser; - global $wgAllowUserCss, $wgAllowUserJs; - + $out = $this->context->getOutput(); + $user = $this->context->getUser(); if ( $this->isConflict ) { - $this->addExplainConflictHeader( $wgOut ); + $this->addExplainConflictHeader( $out ); $this->editRevId = $this->page->getLatest(); } else { if ( $this->section != '' && $this->section != 'new' ) { @@ -2924,46 +2950,42 @@ class EditPage { } } - $buttonLabel = $this->context->msg( $this->getSaveButtonLabel() )->text(); + $buttonLabel = $this->context->msg( $this->getSubmitButtonLabel() )->text(); if ( $this->missingComment ) { - $wgOut->wrapWikiMsg( "
\n$1\n
", 'missingcommenttext' ); + $out->wrapWikiMsg( "
\n$1\n
", 'missingcommenttext' ); } if ( $this->missingSummary && $this->section != 'new' ) { - $wgOut->wrapWikiMsg( + $out->wrapWikiMsg( "
\n$1\n
", [ 'missingsummary', $buttonLabel ] ); } if ( $this->missingSummary && $this->section == 'new' ) { - $wgOut->wrapWikiMsg( + $out->wrapWikiMsg( "
\n$1\n
", [ 'missingcommentheader', $buttonLabel ] ); } if ( $this->blankArticle ) { - $wgOut->wrapWikiMsg( + $out->wrapWikiMsg( "
\n$1\n
", [ 'blankarticle', $buttonLabel ] ); } if ( $this->selfRedirect ) { - $wgOut->wrapWikiMsg( + $out->wrapWikiMsg( "
\n$1\n
", [ 'selfredirect', $buttonLabel ] ); } if ( $this->hookError !== '' ) { - $wgOut->addWikiText( $this->hookError ); - } - - if ( !$this->checkUnicodeCompliantBrowser() ) { - $wgOut->addWikiMsg( 'nonunicodebrowser' ); + $out->addWikiText( $this->hookError ); } if ( $this->section != 'new' ) { @@ -2971,13 +2993,13 @@ class EditPage { if ( $revision ) { // Let sysop know that this will make private content public if saved - if ( !$revision->userCan( Revision::DELETED_TEXT, $wgUser ) ) { - $wgOut->wrapWikiMsg( + if ( !$revision->userCan( Revision::DELETED_TEXT, $user ) ) { + $out->wrapWikiMsg( "\n", 'rev-deleted-text-permission' ); } elseif ( $revision->isDeleted( Revision::DELETED_TEXT ) ) { - $wgOut->wrapWikiMsg( + $out->wrapWikiMsg( "\n", 'rev-deleted-text-view' ); @@ -2985,26 +3007,26 @@ class EditPage { if ( !$revision->isCurrent() ) { $this->mArticle->setOldSubtitle( $revision->getId() ); - $wgOut->addWikiMsg( 'editingold' ); + $out->addWikiMsg( 'editingold' ); $this->isOldRev = true; } } elseif ( $this->mTitle->exists() ) { // Something went wrong - $wgOut->wrapWikiMsg( "
\n$1\n
\n", + $out->wrapWikiMsg( "
\n$1\n
\n", [ 'missing-revision', $this->oldid ] ); } } } if ( wfReadOnly() ) { - $wgOut->wrapWikiMsg( + $out->wrapWikiMsg( "
\n$1\n
", [ 'readonlywarning', wfReadOnlyReason() ] ); - } elseif ( $wgUser->isAnon() ) { + } elseif ( $user->isAnon() ) { if ( $this->formtype != 'preview' ) { - $wgOut->wrapWikiMsg( + $out->wrapWikiMsg( "
\n$1\n
", [ 'anoneditwarning', // Log-in link @@ -3018,33 +3040,35 @@ class EditPage { ] ); } else { - $wgOut->wrapWikiMsg( "
\n$1
", + $out->wrapWikiMsg( "
\n$1
", 'anonpreviewwarning' ); } } else { - if ( $this->isCssJsSubpage ) { + if ( $this->mTitle->isCssJsSubpage() ) { # Check the skin exists - if ( $this->isWrongCaseCssJsPage ) { - $wgOut->wrapWikiMsg( + if ( $this->isWrongCaseCssJsPage() ) { + $out->wrapWikiMsg( "
\n$1\n
", [ 'userinvalidcssjstitle', $this->mTitle->getSkinFromCssJsSubpage() ] ); } - if ( $this->getTitle()->isSubpageOf( $wgUser->getUserPage() ) ) { - $wgOut->wrapWikiMsg( '
$1
', - $this->isCssSubpage ? 'usercssispublic' : 'userjsispublic' + if ( $this->getTitle()->isSubpageOf( $user->getUserPage() ) ) { + $isCssSubpage = $this->mTitle->isCssSubpage(); + $out->wrapWikiMsg( '
$1
', + $isCssSubpage ? 'usercssispublic' : 'userjsispublic' ); if ( $this->formtype !== 'preview' ) { - if ( $this->isCssSubpage && $wgAllowUserCss ) { - $wgOut->wrapWikiMsg( + $config = $this->context->getConfig(); + if ( $isCssSubpage && $config->get( 'AllowUserCss' ) ) { + $out->wrapWikiMsg( "
\n$1\n
", [ 'usercssyoucanpreview' ] ); } - if ( $this->isJsSubpage && $wgAllowUserJs ) { - $wgOut->wrapWikiMsg( + if ( $this->mTitle->isJsSubpage() && $config->get( 'AllowUserJs' ) ) { + $out->wrapWikiMsg( "
\n$1\n
", [ 'userjsyoucanpreview' ] ); @@ -3078,7 +3102,7 @@ class EditPage { 'tabindex' => 1, 'size' => 60, 'spellcheck' => 'true', - ] + Linker::tooltipAndAccesskeyAttribs( 'summary' ); + ]; } /** @@ -3088,17 +3112,19 @@ class EditPage { * inferred by the id given to the input. You can remove them both by * passing [ 'id' => false ] to $userInputAttrs. * + * @deprecated since 1.30 Use getSummaryInputWidget() instead * @param string $summary The value of the summary input * @param string $labelText The html to place inside the label * @param array $inputAttrs Array of attrs to use on the input * @param array $spanLabelAttrs Array of attrs to use on the span inside the label - * * @return array An array in the format [ $label, $input ] */ public function getSummaryInput( $summary = "", $labelText = null, $inputAttrs = null, $spanLabelAttrs = null ) { + wfDeprecated( __METHOD__, '1.30' ); $inputAttrs = $this->getSummaryInputAttributes( $inputAttrs ); + $inputAttrs += Linker::tooltipAndAccesskeyAttribs( 'summary' ); $spanLabelAttrs = ( is_array( $spanLabelAttrs ) ? $spanLabelAttrs : [] ) + [ 'class' => $this->missingSummary ? 'mw-summarymissed' : 'mw-summary', @@ -3121,9 +3147,9 @@ class EditPage { } /** - * Same as self::getSummaryInput, but uses OOUI, instead of plain HTML. * Builds a standard summary input with a label. * + * @deprecated since 1.30 Use getSummaryInputWidget() instead * @param string $summary The value of the summary input * @param string $labelText The html to place inside the label * @param array $inputAttrs Array of attrs to use on the input @@ -3131,9 +3157,27 @@ class EditPage { * @return OOUI\FieldLayout OOUI FieldLayout with Label and Input */ function getSummaryInputOOUI( $summary = "", $labelText = null, $inputAttrs = null ) { + wfDeprecated( __METHOD__, '1.30' ); + $this->getSummaryInputWidget( $summary, $labelText, $inputAttrs ); + } + + /** + * Builds a standard summary input with a label. + * + * @param string $summary The value of the summary input + * @param string $labelText The html to place inside the label + * @param array $inputAttrs Array of attrs to use on the input + * + * @return OOUI\FieldLayout OOUI FieldLayout with Label and Input + */ + function getSummaryInputWidget( $summary = "", $labelText = null, $inputAttrs = null ) { $inputAttrs = OOUI\Element::configFromHtmlAttributes( $this->getSummaryInputAttributes( $inputAttrs ) ); + $inputAttrs += [ + 'title' => Linker::titleAttrib( 'summary' ), + 'accessKey' => Linker::accesskey( 'summary' ), + ]; // For compatibility with old scripts and extensions, we want the legacy 'id' on the `` $inputAttrs['inputId'] = $inputAttrs['id']; @@ -3160,8 +3204,6 @@ class EditPage { * @param string $summary The text of the summary to display */ protected function showSummaryInput( $isSubjectPreview, $summary = "" ) { - global $wgOut; - # Add a class if 'missingsummary' is triggered to allow styling of the summary line $summaryClass = $this->missingSummary ? 'mw-summarymissed' : 'mw-summary'; if ( $isSubjectPreview ) { @@ -3175,20 +3217,11 @@ class EditPage { } $labelText = $this->context->msg( $isSubjectPreview ? 'subject' : 'summary' )->parse(); - if ( $this->oouiEnabled ) { - $wgOut->addHTML( $this->getSummaryInputOOUI( + $this->context->getOutput()->addHTML( $this->getSummaryInputWidget( $summary, $labelText, [ 'class' => $summaryClass ] ) ); - } else { - list( $label, $input ) = $this->getSummaryInput( - $summary, - $labelText, - [ 'class' => $summaryClass ] - ); - $wgOut->addHTML( "{$label} {$input}" ); - } } /** @@ -3221,24 +3254,15 @@ class EditPage { } protected function showFormBeforeText() { - global $wgOut; - $section = htmlspecialchars( $this->section ); - $wgOut->addHTML( << - - - - - -HTML - ); - if ( !$this->checkUnicodeCompliantBrowser() ) { - $wgOut->addHTML( Html::hidden( 'safemode', '1' ) ); - } + $out = $this->context->getOutput(); + $out->addHTML( Html::hidden( 'wpSection', htmlspecialchars( $this->section ) ) ); + $out->addHTML( Html::hidden( 'wpStarttime', $this->starttime ) ); + $out->addHTML( Html::hidden( 'wpEdittime', $this->edittime ) ); + $out->addHTML( Html::hidden( 'editRevId', $this->editRevId ) ); + $out->addHTML( Html::hidden( 'wpScrolltop', $this->scrolltop, [ 'id' => 'wpScrolltop' ] ) ); } protected function showFormAfterText() { - global $wgOut, $wgUser; /** * To make it harder for someone to slip a user a page * which submits an edit form to the wiki without their @@ -3251,7 +3275,11 @@ HTML * include the constant suffix to prevent editing from * broken text-mangling proxies. */ - $wgOut->addHTML( "\n" . Html::hidden( "wpEditToken", $wgUser->getEditToken() ) . "\n" ); + $this->context->getOutput()->addHTML( + "\n" . + Html::hidden( "wpEditToken", $this->context->getUser()->getEditToken() ) . + "\n" + ); } /** @@ -3325,18 +3353,14 @@ HTML } protected function showTextbox( $text, $name, $customAttribs = [] ) { - global $wgOut, $wgUser; + $wikitext = $this->addNewLineAtEnd( $text ); - $wikitext = $this->safeUnicodeOutput( $text ); - $wikitext = $this->addNewLineAtEnd( $wikitext ); + $attribs = $this->buildTextboxAttribs( $name, $customAttribs, $this->context->getUser() ); - $attribs = $this->buildTextboxAttribs( $name, $customAttribs, $wgUser ); - - $wgOut->addHTML( Html::textarea( $name, $wikitext, $attribs ) ); + $this->context->getOutput()->addHTML( Html::textarea( $name, $wikitext, $attribs ) ); } protected function displayPreviewArea( $previewOutput, $isOnTop = false ) { - global $wgOut; $classes = []; if ( $isOnTop ) { $classes[] = 'ontop'; @@ -3348,7 +3372,8 @@ HTML $attribs['style'] = 'display: none;'; } - $wgOut->addHTML( Xml::openElement( 'div', $attribs ) ); + $out = $this->context->getOutput(); + $out->addHTML( Xml::openElement( 'div', $attribs ) ); if ( $this->formtype == 'preview' ) { $this->showPreview( $previewOutput ); @@ -3357,10 +3382,10 @@ HTML $pageViewLang = $this->mTitle->getPageViewLanguage(); $attribs = [ 'lang' => $pageViewLang->getHtmlCode(), 'dir' => $pageViewLang->getDir(), 'class' => 'mw-content-' . $pageViewLang->getDir() ]; - $wgOut->addHTML( Html::rawElement( 'div', $attribs ) ); + $out->addHTML( Html::rawElement( 'div', $attribs ) ); } - $wgOut->addHTML( '
' ); + $out->addHTML( '
' ); if ( $this->formtype == 'diff' ) { try { @@ -3372,26 +3397,26 @@ HTML $this->contentFormat, $ex->getMessage() ); - $wgOut->addWikiText( '
' . $msg->text() . '
' ); + $out->addWikiText( '
' . $msg->text() . '
' ); } } } /** - * Append preview output to $wgOut. + * Append preview output to OutputPage. * Includes category rendering if this is a category page. * * @param string $text The HTML to be output for the preview. */ protected function showPreview( $text ) { - global $wgOut; if ( $this->mArticle instanceof CategoryPage ) { $this->mArticle->openShowCategory(); } # This hook seems slightly odd here, but makes things more # consistent for extensions. - Hooks::run( 'OutputPageBeforeHTML', [ &$wgOut, &$text ] ); - $wgOut->addHTML( $text ); + $out = $this->context->getOutput(); + Hooks::run( 'OutputPageBeforeHTML', [ &$out, &$text ] ); + $out->addHTML( $text ); if ( $this->mArticle instanceof CategoryPage ) { $this->mArticle->closeShowCategory(); } @@ -3405,7 +3430,7 @@ HTML * save and then make a comparison. */ public function showDiff() { - global $wgUser, $wgContLang, $wgOut; + global $wgContLang; $oldtitlemsg = 'currentrev'; # if message does not exist, show diff against the preloaded default @@ -3435,8 +3460,9 @@ HTML if ( $newContent ) { Hooks::run( 'EditPageGetDiffContent', [ $this, &$newContent ] ); - $popts = ParserOptions::newFromUserAndLang( $wgUser, $wgContLang ); - $newContent = $newContent->preSaveTransform( $this->mTitle, $wgUser, $popts ); + $user = $this->context->getUser(); + $popts = ParserOptions::newFromUserAndLang( $user, $wgContLang ); + $newContent = $newContent->preSaveTransform( $this->mTitle, $user, $popts ); } if ( ( $oldContent && !$oldContent->isEmpty() ) || ( $newContent && !$newContent->isEmpty() ) ) { @@ -3451,7 +3477,7 @@ HTML $newContent = $oldContent->getContentHandler()->makeEmptyContent(); } - $de = $oldContent->getContentHandler()->createDifferenceEngine( $this->mArticle->getContext() ); + $de = $oldContent->getContentHandler()->createDifferenceEngine( $this->context ); $de->setContent( $oldContent, $newContent ); $difftext = $de->getDiff( $oldtitle, $newtitle ); @@ -3460,7 +3486,7 @@ HTML $difftext = ''; } - $wgOut->addHTML( '
' . $difftext . '
' ); + $this->context->getOutput()->addHTML( '
' . $difftext . '
' ); } /** @@ -3469,8 +3495,7 @@ HTML protected function showHeaderCopyrightWarning() { $msg = 'editpage-head-copy-warn'; if ( !$this->context->msg( $msg )->isDisabled() ) { - global $wgOut; - $wgOut->wrapWikiMsg( "
\n$1\n
", + $this->context->getOutput()->wrapWikiMsg( "
\n$1\n
", 'editpage-head-copy-warn' ); } } @@ -3487,16 +3512,19 @@ HTML $msg = 'editpage-tos-summary'; Hooks::run( 'EditPageTosSummary', [ $this->mTitle, &$msg ] ); if ( !$this->context->msg( $msg )->isDisabled() ) { - global $wgOut; - $wgOut->addHTML( '
' ); - $wgOut->addWikiMsg( $msg ); - $wgOut->addHTML( '
' ); + $out = $this->context->getOutput(); + $out->addHTML( '
' ); + $out->addWikiMsg( $msg ); + $out->addHTML( '
' ); } } + /** + * 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; - $wgOut->addHTML( '
' . + $this->context->getOutput()->addHTML( '
' . $this->context->msg( 'edittools' )->inContentLanguage()->parse() . '
' ); } @@ -3590,36 +3618,28 @@ HTML } protected function showStandardInputs( &$tabindex = 2 ) { - global $wgOut; - $wgOut->addHTML( "
\n" ); + $out = $this->context->getOutput(); + $out->addHTML( "
\n" ); if ( $this->section != 'new' ) { $this->showSummaryInput( false, $this->summary ); - $wgOut->addHTML( $this->getSummaryPreview( false, $this->summary ) ); + $out->addHTML( $this->getSummaryPreview( false, $this->summary ) ); } - if ( $this->oouiEnabled ) { - $checkboxes = $this->getCheckboxesOOUI( - $tabindex, - [ 'minor' => $this->minoredit, 'watch' => $this->watchthis ] - ); - $checkboxesHTML = new OOUI\HorizontalLayout( [ 'items' => $checkboxes ] ); - } else { - $checkboxes = $this->getCheckboxes( - $tabindex, - [ 'minor' => $this->minoredit, 'watch' => $this->watchthis ] - ); - $checkboxesHTML = implode( $checkboxes, "\n" ); - } + $checkboxes = $this->getCheckboxesWidget( + $tabindex, + [ 'minor' => $this->minoredit, 'watch' => $this->watchthis ] + ); + $checkboxesHTML = new OOUI\HorizontalLayout( [ 'items' => $checkboxes ] ); - $wgOut->addHTML( "
" . $checkboxesHTML . "
\n" ); + $out->addHTML( "
" . $checkboxesHTML . "
\n" ); // Show copyright warning. - $wgOut->addWikiText( $this->getCopywarn() ); - $wgOut->addHTML( $this->editFormTextAfterWarn ); + $out->addWikiText( $this->getCopywarn() ); + $out->addHTML( $this->editFormTextAfterWarn ); - $wgOut->addHTML( "
\n" ); - $wgOut->addHTML( implode( $this->getEditButtons( $tabindex ), "\n" ) . "\n" ); + $out->addHTML( "
\n" ); + $out->addHTML( implode( $this->getEditButtons( $tabindex ), "\n" ) . "\n" ); $cancel = $this->getCancelLink(); if ( $cancel !== '' ) { @@ -3639,13 +3659,13 @@ HTML $this->context->msg( 'word-separator' )->escaped() . $this->context->msg( 'newwindow' )->parse(); - $wgOut->addHTML( " {$cancel}\n" ); - $wgOut->addHTML( " {$edithelp}\n" ); - $wgOut->addHTML( "
\n" ); + $out->addHTML( " {$cancel}\n" ); + $out->addHTML( " {$edithelp}\n" ); + $out->addHTML( "
\n" ); - Hooks::run( 'EditPage::showStandardInputs:options', [ $this, $wgOut, &$tabindex ] ); + Hooks::run( 'EditPage::showStandardInputs:options', [ $this, $out, &$tabindex ] ); - $wgOut->addHTML( "
\n" ); + $out->addHTML( "
\n" ); } /** @@ -3653,27 +3673,26 @@ HTML * If you want to use another entry point to this function, be careful. */ protected function showConflict() { - global $wgOut; - + $out = $this->context->getOutput(); // Avoid PHP 7.1 warning of passing $this by reference $editPage = $this; - if ( Hooks::run( 'EditPageBeforeConflictDiff', [ &$editPage, &$wgOut ] ) ) { + if ( Hooks::run( 'EditPageBeforeConflictDiff', [ &$editPage, &$out ] ) ) { $this->incrementConflictStats(); - $wgOut->wrapWikiMsg( '

$1

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

$1

', "yourdiff" ); $content1 = $this->toEditContent( $this->textbox1 ); $content2 = $this->toEditContent( $this->textbox2 ); $handler = ContentHandler::getForModelID( $this->contentModel ); - $de = $handler->createDifferenceEngine( $this->mArticle->getContext() ); + $de = $handler->createDifferenceEngine( $this->context ); $de->setContent( $content2, $content1 ); $de->showDiff( $this->context->msg( 'yourtext' )->parse(), $this->context->msg( 'storedversion' )->text() ); - $wgOut->wrapWikiMsg( '

$1

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

$1

', "yourtext" ); $this->showTextbox2(); } } @@ -3700,23 +3719,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', + ] ); } /** @@ -3764,8 +3775,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', @@ -3773,11 +3785,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', @@ -3785,7 +3796,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 ) ) { @@ -3794,7 +3808,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; } } @@ -3807,10 +3822,10 @@ HTML * @return string */ public function getPreviewText() { - global $wgOut, $wgRawHtml, $wgLang; - global $wgAllowUserCss, $wgAllowUserJs; + $out = $this->context->getOutput(); + $config = $this->context->getConfig(); - if ( $wgRawHtml && !$this->mTokenOk ) { + if ( $config->get( 'RawHtml' ) && !$this->mTokenOk ) { // Could be an offsite preview attempt. This is very unsafe if // HTML is enabled, as it could be an attack. $parsedNote = ''; @@ -3818,7 +3833,7 @@ HTML // Do not put big scary notice, if previewing the empty // string, which happens when you initially edit // a category page, due to automatic preview-on-open. - $parsedNote = $wgOut->parse( "
" . + $parsedNote = $out->parse( "
" . $this->context->msg( 'session_fail_preview_html' )->text() . "
", true, /* interface */true ); } @@ -3841,7 +3856,8 @@ HTML # provide a anchor link to the editform $continueEditing = '' . - '[[#' . self::EDITFORM_ID . '|' . $wgLang->getArrow() . ' ' . + '[[#' . self::EDITFORM_ID . '|' . + $this->context->getLanguage()->getArrow() . ' ' . $this->context->msg( 'continue-editing' )->text() . ']]'; if ( $this->mTriedSave && !$this->mTokenOk ) { if ( $this->mTokenOkExceptSuffix ) { @@ -3872,12 +3888,12 @@ HTML if ( $content->getModel() == CONTENT_MODEL_CSS ) { $format = 'css'; - if ( $level === 'user' && !$wgAllowUserCss ) { + if ( $level === 'user' && !$config->get( 'AllowUserCss' ) ) { $format = false; } } elseif ( $content->getModel() == CONTENT_MODEL_JAVASCRIPT ) { $format = 'js'; - if ( $level === 'user' && !$wgAllowUserJs ) { + if ( $level === 'user' && !$config->get( 'AllowUserJs' ) ) { $format = false; } } else { @@ -3906,7 +3922,7 @@ HTML $parserOutput = $parserResult['parserOutput']; $previewHTML = $parserResult['html']; $this->mParserOutput = $parserOutput; - $wgOut->addParserOutputMetadata( $parserOutput ); + $out->addParserOutputMetadata( $parserOutput ); if ( count( $parserOutput->getWarnings() ) ) { $note .= "\n\n" . implode( "\n\n", $parserOutput->getWarnings() ); @@ -3932,7 +3948,7 @@ HTML $previewhead = "
\n" . '

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

" . - $wgOut->parse( $note, true, /* interface */true ) . $conflict . "
\n"; + $out->parse( $note, true, /* interface */true ) . $conflict . "
\n"; $pageViewLang = $this->mTitle->getPageViewLanguage(); $attribs = [ 'lang' => $pageViewLang->getHtmlCode(), 'dir' => $pageViewLang->getDir(), @@ -3952,7 +3968,7 @@ HTML * @return ParserOptions */ protected function getPreviewParserOptions() { - $parserOptions = $this->page->makeParserOptions( $this->mArticle->getContext() ); + $parserOptions = $this->page->makeParserOptions( $this->context ); $parserOptions->setIsPreview( true ); $parserOptions->setIsSectionPreview( !is_null( $this->section ) && $this->section !== '' ); $parserOptions->enableLimitReport(); @@ -3969,11 +3985,11 @@ HTML * - html: The HTML to be displayed */ protected function doPreviewParse( Content $content ) { - global $wgUser; + $user = $this->context->getUser(); $parserOptions = $this->getPreviewParserOptions(); - $pstContent = $content->preSaveTransform( $this->mTitle, $wgUser, $parserOptions ); + $pstContent = $content->preSaveTransform( $this->mTitle, $user, $parserOptions ); $scopedCallback = $parserOptions->setupFakeRevision( - $this->mTitle, $pstContent, $wgUser ); + $this->mTitle, $pstContent, $user ); $parserOutput = $pstContent->getParserOutput( $this->mTitle, null, $parserOptions ); ScopedCallback::consume( $scopedCallback ); $parserOutput->setEditSectionTokens( false ); // no section edit links @@ -4159,12 +4175,12 @@ HTML * where bool indicates the checked status of the checkbox * @return array */ - protected function getCheckboxesDefinition( $checked ) { - global $wgUser; + public function getCheckboxesDefinition( $checked ) { $checkboxes = []; + $user = $this->context->getUser(); // don't show the minor edit checkbox if it's a new page or section - if ( !$this->isNew && $wgUser->isAllowed( 'minoredit' ) ) { + if ( !$this->isNew && $user->isAllowed( 'minoredit' ) ) { $checkboxes['wpMinoredit'] = [ 'id' => 'wpMinoredit', 'label-message' => 'minoredit', @@ -4176,7 +4192,7 @@ HTML ]; } - if ( $wgUser->isLoggedIn() ) { + if ( $user->isLoggedIn() ) { $checkboxes['wpWatchthis'] = [ 'id' => 'wpWatchthis', 'label-message' => 'watchthis', @@ -4198,13 +4214,12 @@ HTML * Returns an array of html code of the following checkboxes old style: * minor and watch * - * @param int $tabindex Current tabindex + * @deprecated since 1.30 Use getCheckboxesWidget() or getCheckboxesDefinition() instead + * @param int &$tabindex Current tabindex * @param array $checked See getCheckboxesDefinition() * @return array */ public function getCheckboxes( &$tabindex, $checked ) { - global $wgUseMediaWikiUIEverywhere; - $checkboxes = []; $checkboxesDef = $this->getCheckboxesDefinition( $checked ); @@ -4239,10 +4254,6 @@ HTML ' ' . Xml::tags( 'label', $labelAttribs, $label ); - if ( $wgUseMediaWikiUIEverywhere ) { - $checkboxHtml = Html::rawElement( 'div', [ 'class' => 'mw-ui-checkbox' ], $checkboxHtml ); - } - $checkboxes[ $legacyName ] = $checkboxHtml; } @@ -4253,21 +4264,34 @@ HTML } /** - * Returns an array of html code of the following checkboxes: - * minor and watch + * Returns an array of checkboxes for the edit form, including 'minor' and 'watch' checkboxes and + * any other added by extensions. * - * @param int $tabindex Current tabindex + * @deprecated since 1.30 Use getCheckboxesWidget() or getCheckboxesDefinition() instead + * @param int &$tabindex Current tabindex * @param array $checked Array of checkbox => bool, where bool indicates the checked * status of the checkbox * - * @return array + * @return array Associative array of string keys to OOUI\FieldLayout instances */ public function getCheckboxesOOUI( &$tabindex, $checked ) { + return $this->getCheckboxesWidget( $tabindex, $checked ); + } + + /** + * Returns an array of checkboxes for the edit form, including 'minor' and 'watch' checkboxes and + * any other added by extensions. + * + * @param int &$tabindex Current tabindex + * @param array $checked Array of checkbox => bool, where bool indicates the checked + * status of the checkbox + * + * @return array Associative array of string keys to OOUI\FieldLayout instances + */ + public function getCheckboxesWidget( &$tabindex, $checked ) { $checkboxes = []; $checkboxesDef = $this->getCheckboxesDefinition( $checked ); - $origTabindex = $tabindex; - foreach ( $checkboxesDef as $name => $options ) { $legacyName = isset( $options['legacy-name'] ) ? $options['legacy-name'] : $name; @@ -4275,14 +4299,11 @@ HTML $accesskey = null; if ( isset( $options['tooltip'] ) ) { $accesskey = $this->context->msg( "accesskey-{$options['tooltip']}" )->text(); - $title = Linker::titleAttrib( $options['tooltip'], 'withaccess' ); + $title = Linker::titleAttrib( $options['tooltip'] ); } if ( isset( $options['title-message'] ) ) { $title = $this->context->msg( $options['title-message'] )->text(); } - if ( isset( $options['label-id'] ) ) { - $labelAttribs['id'] = $options['label-id']; - } $checkboxes[ $legacyName ] = new OOUI\FieldLayout( new OOUI\CheckboxInputWidget( [ @@ -4306,7 +4327,19 @@ HTML // Backwards-compatibility hack to run the EditPageBeforeEditChecks hook. It's important, // people have used it for the weirdest things completely unrelated to checkboxes... // And if we're gonna run it, might as well allow its legacy checkboxes to be shown. - $legacyCheckboxes = $this->getCheckboxes( $origTabindex, $checked ); + $legacyCheckboxes = []; + if ( !$this->isNew ) { + $legacyCheckboxes['minor'] = ''; + } + $legacyCheckboxes['watch'] = ''; + // Copy new-style checkboxes into an old-style structure + foreach ( $checkboxes as $name => $oouiLayout ) { + $legacyCheckboxes[$name] = (string)$oouiLayout; + } + // Avoid PHP 7.1 warning of passing $this by reference + $ep = $this; + Hooks::run( 'EditPageBeforeEditChecks', [ &$ep, &$legacyCheckboxes, &$tabindex ], '1.29' ); + // Copy back any additional old-style checkboxes into the new-style structure foreach ( $legacyCheckboxes as $name => $html ) { if ( $html && !isset( $checkboxes[$name] ) ) { $checkboxes[$name] = new OOUI\Widget( [ 'content' => new OOUI\HtmlSnippet( $html ) ] ); @@ -4319,17 +4352,18 @@ HTML /** * Get the message key of the label for the button to save the page * + * @since 1.30 * @return string */ - private function getSaveButtonLabel() { + protected function getSubmitButtonLabel() { $labelAsPublish = - $this->mArticle->getContext()->getConfig()->get( 'EditSubmitButtonLabelPublish' ); + $this->context->getConfig()->get( 'EditSubmitButtonLabelPublish' ); // Can't use $this->isNew as that's also true if we're adding a new section to an extant page $newPage = !$this->mTitle->exists(); if ( $labelAsPublish ) { - $buttonLabelKey = $newPage ? 'publishpage' : 'publishchanges'; + $buttonLabelKey = $newPage ? 'publishpage' : 'publishchanges'; } else { $buttonLabelKey = $newPage ? 'savearticle' : 'savechanges'; } @@ -4341,82 +4375,69 @@ 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 */ public function getEditButtons( &$tabindex ) { $buttons = []; - $buttonLabel = $this->context->msg( $this->getSaveButtonLabel() )->text(); + $buttonLabel = $this->context->msg( $this->getSubmitButtonLabel() )->text(); $attribs = [ 'name' => 'wpSave', 'tabindex' => ++$tabindex, - ] + Linker::tooltipAndAccesskeyAttribs( 'save' ); - - 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', - ] + $saveConfig ); - } else { - $buttons['save'] = Html::submitButton( - $buttonLabel, - $attribs + [ '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, - ] + Linker::tooltipAndAccesskeyAttribs( 'preview' ); - 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' - ] + $previewConfig ); - } else { - $buttons['preview'] = Html::submitButton( - $this->context->msg( 'showpreview' )->text(), - $attribs + [ '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, - ] + Linker::tooltipAndAccesskeyAttribs( 'diff' ); - 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', - ] + $diffConfig ); - } else { - $buttons['diff'] = Html::submitButton( - $this->context->msg( 'showdiff' )->text(), - $attribs + [ '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; @@ -4430,18 +4451,17 @@ HTML * they have attempted to edit a nonexistent section. */ public function noSuchSectionPage() { - global $wgOut; - - $wgOut->prepareErrorPage( $this->context->msg( 'nosuchsectiontitle' ) ); + $out = $this->context->getOutput(); + $out->prepareErrorPage( $this->context->msg( 'nosuchsectiontitle' ) ); $res = $this->context->msg( 'nosuchsectiontext', $this->section )->parseAsBlock(); // Avoid PHP 7.1 warning of passing $this by reference $editPage = $this; Hooks::run( 'EditPageNoSuchSection', [ &$editPage, &$res ] ); - $wgOut->addHTML( $res ); + $out->addHTML( $res ); - $wgOut->returnToMain( false, $this->mTitle ); + $out->returnToMain( false, $this->mTitle ); } /** @@ -4450,177 +4470,69 @@ HTML * @param string|array|bool $match Text (or array of texts) which triggered one or more filters */ public function spamPageWithContent( $match = false ) { - global $wgOut, $wgLang; $this->textbox2 = $this->textbox1; if ( is_array( $match ) ) { - $match = $wgLang->listToText( $match ); + $match = $this->context->getLanguage()->listToText( $match ); } - $wgOut->prepareErrorPage( $this->context->msg( 'spamprotectiontitle' ) ); + $out = $this->context->getOutput(); + $out->prepareErrorPage( $this->context->msg( 'spamprotectiontitle' ) ); - $wgOut->addHTML( '
' ); - $wgOut->addWikiMsg( 'spamprotectiontext' ); + $out->addHTML( '
' ); + $out->addWikiMsg( 'spamprotectiontext' ); if ( $match ) { - $wgOut->addWikiMsg( 'spamprotectionmatch', wfEscapeWikiText( $match ) ); + $out->addWikiMsg( 'spamprotectionmatch', wfEscapeWikiText( $match ) ); } - $wgOut->addHTML( '
' ); + $out->addHTML( '
' ); - $wgOut->wrapWikiMsg( '

$1

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

$1

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

$1

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

$1

', "yourtext" ); $this->showTextbox2(); - $wgOut->addReturnTo( $this->getContextTitle(), [ 'action' => 'edit' ] ); - } - - /** - * Check if the browser is on a blacklist of user-agents known to - * mangle UTF-8 data on form submission. Returns true if Unicode - * should make it through, false if it's known to be a problem. - * @return bool - */ - private function checkUnicodeCompliantBrowser() { - global $wgBrowserBlackList, $wgRequest; - - $currentbrowser = $wgRequest->getHeader( 'User-Agent' ); - if ( $currentbrowser === false ) { - // No User-Agent header sent? Trust it by default... - return true; - } - - foreach ( $wgBrowserBlackList as $browser ) { - if ( preg_match( $browser, $currentbrowser ) ) { - return false; - } - } - return true; + $out->addReturnTo( $this->getContextTitle(), [ 'action' => 'edit' ] ); } /** * Filter an input field through a Unicode de-armoring process if it * came from an old browser with known broken Unicode editing issues. * + * @deprecated since 1.30, does nothing + * * @param WebRequest $request * @param string $field * @return string */ protected function safeUnicodeInput( $request, $field ) { - $text = rtrim( $request->getText( $field ) ); - return $request->getBool( 'safemode' ) - ? $this->unmakeSafe( $text ) - : $text; + return rtrim( $request->getText( $field ) ); } /** * Filter an output field through a Unicode armoring process if it is * going to an old browser with known broken Unicode editing issues. * + * @deprecated since 1.30, does nothing + * * @param string $text * @return string */ protected function safeUnicodeOutput( $text ) { - return $this->checkUnicodeCompliantBrowser() - ? $text - : $this->makeSafe( $text ); - } - - /** - * A number of web browsers are known to corrupt non-ASCII characters - * in a UTF-8 text editing environment. To protect against this, - * detected browsers will be served an armored version of the text, - * with non-ASCII chars converted to numeric HTML character references. - * - * Preexisting such character references will have a 0 added to them - * to ensure that round-trips do not alter the original data. - * - * @param string $invalue - * @return string - */ - private function makeSafe( $invalue ) { - // Armor existing references for reversibility. - $invalue = strtr( $invalue, [ "&#x" => "�" ] ); - - $bytesleft = 0; - $result = ""; - $working = 0; - $valueLength = strlen( $invalue ); - for ( $i = 0; $i < $valueLength; $i++ ) { - $bytevalue = ord( $invalue[$i] ); - if ( $bytevalue <= 0x7F ) { // 0xxx xxxx - $result .= chr( $bytevalue ); - $bytesleft = 0; - } elseif ( $bytevalue <= 0xBF ) { // 10xx xxxx - $working = $working << 6; - $working += ( $bytevalue & 0x3F ); - $bytesleft--; - if ( $bytesleft <= 0 ) { - $result .= "&#x" . strtoupper( dechex( $working ) ) . ";"; - } - } elseif ( $bytevalue <= 0xDF ) { // 110x xxxx - $working = $bytevalue & 0x1F; - $bytesleft = 1; - } elseif ( $bytevalue <= 0xEF ) { // 1110 xxxx - $working = $bytevalue & 0x0F; - $bytesleft = 2; - } else { // 1111 0xxx - $working = $bytevalue & 0x07; - $bytesleft = 3; - } - } - return $result; - } - - /** - * Reverse the previously applied transliteration of non-ASCII characters - * back to UTF-8. Used to protect data from corruption by broken web browsers - * as listed in $wgBrowserBlackList. - * - * @param string $invalue - * @return string - */ - private function unmakeSafe( $invalue ) { - $result = ""; - $valueLength = strlen( $invalue ); - for ( $i = 0; $i < $valueLength; $i++ ) { - if ( ( substr( $invalue, $i, 3 ) == "&#x" ) && ( $invalue[$i + 3] != '0' ) ) { - $i += 3; - $hexstring = ""; - do { - $hexstring .= $invalue[$i]; - $i++; - } while ( ctype_xdigit( $invalue[$i] ) && ( $i < strlen( $invalue ) ) ); - - // Do some sanity checks. These aren't needed for reversibility, - // but should help keep the breakage down if the editor - // breaks one of the entities whilst editing. - if ( ( substr( $invalue, $i, 1 ) == ";" ) && ( strlen( $hexstring ) <= 6 ) ) { - $codepoint = hexdec( $hexstring ); - $result .= UtfNormal\Utils::codepointToUtf8( $codepoint ); - } else { - $result .= "&#x" . $hexstring . substr( $invalue, $i, 1 ); - } - } else { - $result .= substr( $invalue, $i, 1 ); - } - } - // reverse the transform that we made for reversibility reasons. - return strtr( $result, [ "�" => "&#x" ] ); + return $text; } /** * @since 1.29 */ protected function addEditNotices() { - global $wgOut; - + $out = $this->context->getOutput(); $editNotices = $this->mTitle->getEditNotices( $this->oldid ); if ( count( $editNotices ) ) { - $wgOut->addHTML( implode( "\n", $editNotices ) ); + $out->addHTML( implode( "\n", $editNotices ) ); } else { $msg = $this->context->msg( 'editnotice-notext' ); if ( !$msg->isDisabled() ) { - $wgOut->addHTML( + $out->addHTML( '
' . $msg->parseAsBlock() . '
' @@ -4633,10 +4545,8 @@ HTML * @since 1.29 */ protected function addTalkPageText() { - global $wgOut; - if ( $this->mTitle->isTalkPage() ) { - $wgOut->addWikiMsg( 'talkpagetext' ); + $this->context->getOutput()->addWikiMsg( 'talkpagetext' ); } } @@ -4644,26 +4554,27 @@ HTML * @since 1.29 */ protected function addLongPageWarningHeader() { - global $wgMaxArticleSize, $wgOut, $wgLang; - if ( $this->contentLength === false ) { $this->contentLength = strlen( $this->textbox1 ); } - if ( $this->tooBig || $this->contentLength > $wgMaxArticleSize * 1024 ) { - $wgOut->wrapWikiMsg( "
\n$1\n
", + $out = $this->context->getOutput(); + $lang = $this->context->getLanguage(); + $maxArticleSize = $this->context->getConfig()->get( 'MaxArticleSize' ); + if ( $this->tooBig || $this->contentLength > $maxArticleSize * 1024 ) { + $out->wrapWikiMsg( "
\n$1\n
", [ 'longpageerror', - $wgLang->formatNum( round( $this->contentLength / 1024, 3 ) ), - $wgLang->formatNum( $wgMaxArticleSize ) + $lang->formatNum( round( $this->contentLength / 1024, 3 ) ), + $lang->formatNum( $maxArticleSize ) ] ); } else { if ( !$this->context->msg( 'longpage-hint' )->isDisabled() ) { - $wgOut->wrapWikiMsg( "
\n$1\n
", + $out->wrapWikiMsg( "
\n$1\n
", [ 'longpage-hint', - $wgLang->formatSize( strlen( $this->textbox1 ) ), + $lang->formatSize( strlen( $this->textbox1 ) ), strlen( $this->textbox1 ) ] ); @@ -4675,8 +4586,7 @@ HTML * @since 1.29 */ protected function addPageProtectionWarningHeaders() { - global $wgOut; - + $out = $this->context->getOutput(); if ( $this->mTitle->isProtected( 'edit' ) && MWNamespace::getRestrictionLevels( $this->mTitle->getNamespace() ) !== [ '' ] ) { @@ -4687,7 +4597,7 @@ HTML # Then it must be protected based on static groups (regular) $noticeMsg = 'protectedpagewarning'; } - LogEventsList::showLogExtract( $wgOut, 'protect', $this->mTitle, '', + LogEventsList::showLogExtract( $out, 'protect', $this->mTitle, '', [ 'lim' => 1, 'msgKey' => [ $noticeMsg ] ] ); } if ( $this->mTitle->isCascadeProtected() ) { @@ -4703,10 +4613,10 @@ HTML } } $notice .= '
'; - $wgOut->wrapWikiMsg( $notice, [ 'cascadeprotectedwarning', $cascadeSourcesCount ] ); + $out->wrapWikiMsg( $notice, [ 'cascadeprotectedwarning', $cascadeSourcesCount ] ); } if ( !$this->mTitle->exists() && $this->mTitle->getRestrictions( 'create' ) ) { - LogEventsList::showLogExtract( $wgOut, 'protect', $this->mTitle, '', + LogEventsList::showLogExtract( $out, 'protect', $this->mTitle, '', [ 'lim' => 1, 'showIfEmpty' => false, 'msgKey' => [ 'titleprotectedwarning' ], @@ -4721,7 +4631,7 @@ HTML protected function addExplainConflictHeader( OutputPage $out ) { $out->wrapWikiMsg( "
\n$1\n
", - [ 'explainconflict', $this->context->msg( $this->getSaveButtonLabel() )->text() ] + [ 'explainconflict', $this->context->msg( $this->getSubmitButtonLabel() )->text() ] ); } @@ -4783,4 +4693,27 @@ HTML } return $wikitext; } + + /** + * Turns section name wikitext into anchors for use in HTTP redirects. Various + * versions of Microsoft browsers misinterpret fragment encoding of Location: headers + * resulting in mojibake in address bar. Redirect them to legacy section IDs, + * if possible. All the other browsers get HTML5 if the wiki is configured for it, to + * spread the new style links more efficiently. + * + * @param string $text + * @return string + */ + private function guessSectionName( $text ) { + global $wgParser; + + // Detect Microsoft browsers + $userAgent = $this->context->getRequest()->getHeader( 'User-Agent' ); + if ( $userAgent && preg_match( '/MSIE|Edge/', $userAgent ) ) { + // ...and redirect them to legacy encoding, if available + return $wgParser->guessLegacySectionNameFromWikiText( $text ); + } + // Meanwhile, real browsers get real anchors + return $wgParser->guessSectionNameFromWikiText( $text ); + } } 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/Feed.php b/includes/Feed.php index 189fd9f2fb..f76a634d3f 100644 --- a/includes/Feed.php +++ b/includes/Feed.php @@ -54,8 +54,6 @@ class FeedItem { public $rssIsPermalink = false; /** - * Constructor - * * @param string|Title $title Item's title * @param string $description * @param string $url URL uniquely designating the item. 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 e7b4a1f8e6..8c843c4438 100644 --- a/includes/FileDeleteForm.php +++ b/includes/FileDeleteForm.php @@ -47,8 +47,6 @@ class FileDeleteForm { private $oldimage = ''; /** - * Constructor - * * @param File $file File object we're deleting */ public function __construct( $file ) { @@ -145,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 @@ -400,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/FormOptions.php b/includes/FormOptions.php index 725a512980..53c8d3bf7c 100644 --- a/includes/FormOptions.php +++ b/includes/FormOptions.php @@ -246,6 +246,9 @@ class FormOptions implements ArrayAccess { /** * @see validateBounds() + * @param string $name + * @param int $min + * @param int $max */ public function validateIntBounds( $name, $min, $max ) { $this->validateBounds( $name, $min, $max ); diff --git a/includes/GlobalFunctions.php b/includes/GlobalFunctions.php index 92cb8d8569..484dfe8d4d 100644 --- a/includes/GlobalFunctions.php +++ b/includes/GlobalFunctions.php @@ -26,8 +26,10 @@ if ( !defined( 'MEDIAWIKI' ) ) { use Liuggio\StatsdClient\Sender\SocketSender; use MediaWiki\Logger\LoggerFactory; +use MediaWiki\ProcOpenError; use MediaWiki\Session\SessionManager; use MediaWiki\MediaWikiServices; +use MediaWiki\Shell\Shell; use Wikimedia\ScopedCallback; use Wikimedia\Rdbms\DBReplicationWaitError; @@ -193,11 +195,15 @@ function wfArrayDiff2_cmp( $a, $b ) { } else { reset( $a ); reset( $b ); - while ( ( list( , $valueA ) = each( $a ) ) && ( list( , $valueB ) = each( $b ) ) ) { + while ( key( $a ) !== null && key( $b ) !== null ) { + $valueA = current( $a ); + $valueB = current( $b ); $cmp = strcmp( $valueA, $valueB ); if ( $cmp !== 0 ) { return $cmp; } + next( $a ); + next( $b ); } return 0; } @@ -241,7 +247,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 +1756,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 +1772,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,66 +2240,15 @@ 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 + * @deprecated since 1.30 use MediaWiki\Shell::escape() */ function wfEscapeShellArg( /*...*/ ) { $args = func_get_args(); - if ( count( $args ) === 1 && is_array( reset( $args ) ) ) { - // If only one argument has been passed, and that argument is an array, - // treat it as a list of arguments - $args = reset( $args ); - } - $first = true; - $retVal = ''; - foreach ( $args as $arg ) { - if ( !$first ) { - $retVal .= ' '; - } else { - $first = false; - } - - if ( wfIsWindows() ) { - // Escaping for an MSVC-style command line parser and CMD.EXE - // @codingStandardsIgnoreStart For long URLs - // Refs: - // * https://web.archive.org/web/20020708081031/http://mailman.lyra.org/pipermail/scite-interest/2002-March/000436.html - // * https://technet.microsoft.com/en-us/library/cc723564.aspx - // * T15518 - // * CR r63214 - // Double the backslashes before any double quotes. Escape the double quotes. - // @codingStandardsIgnoreEnd - $tokens = preg_split( '/(\\\\*")/', $arg, -1, PREG_SPLIT_DELIM_CAPTURE ); - $arg = ''; - $iteration = 0; - foreach ( $tokens as $token ) { - if ( $iteration % 2 == 1 ) { - // Delimiter, a double quote preceded by zero or more slashes - $arg .= str_replace( '\\', '\\\\', substr( $token, 0, -1 ) ) . '\\"'; - } elseif ( $iteration % 4 == 2 ) { - // ^ in $token will be outside quotes, need to be escaped - $arg .= str_replace( '^', '^^', $token ); - } else { // $iteration % 4 == 0 - // ^ in $token will appear inside double quotes, so leave as is - $arg .= $token; - } - $iteration++; - } - // Double the backslashes before the end of the string, because - // we will soon add a quote - $m = []; - if ( preg_match( '/^(.*?)(\\\\+)$/', $arg, $m ) ) { - $arg = $m[1] . str_replace( '\\', '\\\\', $m[2] ); - } - - // Add surrounding quotes - $retVal .= '"' . $arg . '"'; - } else { - $retVal .= escapeshellarg( $arg ); - } - } - return $retVal; + return call_user_func_array( Shell::class . '::escape', $args ); } /** @@ -2301,18 +2256,10 @@ function wfEscapeShellArg( /*...*/ ) { * * @return bool|string False or 'disabled' * @since 1.22 + * @deprecated since 1.30 use MediaWiki\Shell::isDisabled() */ function wfShellExecDisabled() { - static $disabled = null; - if ( is_null( $disabled ) ) { - if ( !function_exists( 'proc_open' ) ) { - wfDebug( "proc_open() is disabled\n" ); - $disabled = 'disabled'; - } else { - $disabled = false; - } - } - return $disabled; + return Shell::isDisabled() ? 'disabled' : false; } /** @@ -2336,221 +2283,40 @@ function wfShellExecDisabled() { * method. Set this to a string for an alternative method to profile from * * @return string Collected stdout as a string + * @deprecated since 1.30 use class MediaWiki\Shell\Shell */ function wfShellExec( $cmd, &$retval = null, $environ = [], $limits = [], $options = [] ) { - global $IP, $wgMaxShellMemory, $wgMaxShellFileSize, $wgMaxShellTime, - $wgMaxShellWallClockTime, $wgShellCgroup; - - $disabled = wfShellExecDisabled(); - if ( $disabled ) { + if ( Shell::isDisabled() ) { $retval = 1; + // Backwards compatibility be upon us... return 'Unable to run external programs, proc_open() is disabled.'; } - $includeStderr = isset( $options['duplicateStderr'] ) && $options['duplicateStderr']; - $profileMethod = isset( $options['profileMethod'] ) ? $options['profileMethod'] : wfGetCaller(); - - $envcmd = ''; - foreach ( $environ as $k => $v ) { - if ( wfIsWindows() ) { - /* Surrounding a set in quotes (method used by wfEscapeShellArg) makes the quotes themselves - * appear in the environment variable, so we must use carat escaping as documented in - * https://technet.microsoft.com/en-us/library/cc723564.aspx - * Note however that the quote isn't listed there, but is needed, and the parentheses - * are listed there but doesn't appear to need it. - */ - $envcmd .= "set $k=" . preg_replace( '/([&|()<>^"])/', '^\\1', $v ) . '&& '; - } else { - /* Assume this is a POSIX shell, thus required to accept variable assignments before the command - * http://www.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_09_01 - */ - $envcmd .= "$k=" . escapeshellarg( $v ) . ' '; - } - } if ( is_array( $cmd ) ) { - $cmd = wfEscapeShellArg( $cmd ); + $cmd = Shell::escape( $cmd ); } - $cmd = $envcmd . $cmd; + $includeStderr = isset( $options['duplicateStderr'] ) && $options['duplicateStderr']; + $profileMethod = isset( $options['profileMethod'] ) ? $options['profileMethod'] : wfGetCaller(); - $useLogPipe = false; - if ( is_executable( '/bin/bash' ) ) { - $time = intval( isset( $limits['time'] ) ? $limits['time'] : $wgMaxShellTime ); - if ( isset( $limits['walltime'] ) ) { - $wallTime = intval( $limits['walltime'] ); - } elseif ( isset( $limits['time'] ) ) { - $wallTime = $time; - } else { - $wallTime = intval( $wgMaxShellWallClockTime ); - } - $mem = intval( isset( $limits['memory'] ) ? $limits['memory'] : $wgMaxShellMemory ); - $filesize = intval( isset( $limits['filesize'] ) ? $limits['filesize'] : $wgMaxShellFileSize ); - - if ( $time > 0 || $mem > 0 || $filesize > 0 || $wallTime > 0 ) { - $cmd = '/bin/bash ' . escapeshellarg( "$IP/includes/limit.sh" ) . ' ' . - escapeshellarg( $cmd ) . ' ' . - escapeshellarg( - "MW_INCLUDE_STDERR=" . ( $includeStderr ? '1' : '' ) . ';' . - "MW_CPU_LIMIT=$time; " . - 'MW_CGROUP=' . escapeshellarg( $wgShellCgroup ) . '; ' . - "MW_MEM_LIMIT=$mem; " . - "MW_FILE_SIZE_LIMIT=$filesize; " . - "MW_WALL_CLOCK_LIMIT=$wallTime; " . - "MW_USE_LOG_PIPE=yes" - ); - $useLogPipe = true; - } elseif ( $includeStderr ) { - $cmd .= ' 2>&1'; - } - } elseif ( $includeStderr ) { - $cmd .= ' 2>&1'; - } - wfDebug( "wfShellExec: $cmd\n" ); - - // Don't try to execute commands that exceed Linux's MAX_ARG_STRLEN. - // Other platforms may be more accomodating, but we don't want to be - // accomodating, because very long commands probably include user - // input. See T129506. - if ( strlen( $cmd ) > SHELL_MAX_ARG_STRLEN ) { - throw new Exception( __METHOD__ . - '(): total length of $cmd must not exceed SHELL_MAX_ARG_STRLEN' ); - } - - $desc = [ - 0 => [ 'file', 'php://stdin', 'r' ], - 1 => [ 'pipe', 'w' ], - 2 => [ 'file', 'php://stderr', 'w' ] ]; - if ( $useLogPipe ) { - $desc[3] = [ 'pipe', 'w' ]; - } - $pipes = null; - $scoped = Profiler::instance()->scopedProfileIn( __FUNCTION__ . '-' . $profileMethod ); - $proc = proc_open( $cmd, $desc, $pipes ); - if ( !$proc ) { - wfDebugLog( 'exec', "proc_open() failed: $cmd" ); + try { + $result = Shell::command( [] ) + ->unsafeParams( (array)$cmd ) + ->environment( $environ ) + ->limits( $limits ) + ->includeStderr( $includeStderr ) + ->profileMethod( $profileMethod ) + ->execute(); + } catch ( ProcOpenError $ex ) { $retval = -1; return ''; } - $outBuffer = $logBuffer = ''; - $emptyArray = []; - $status = false; - $logMsg = false; - - /* According to the documentation, it is possible for stream_select() - * to fail due to EINTR. I haven't managed to induce this in testing - * despite sending various signals. If it did happen, the error - * message would take the form: - * - * stream_select(): unable to select [4]: Interrupted system call (max_fd=5) - * - * where [4] is the value of the macro EINTR and "Interrupted system - * call" is string which according to the Linux manual is "possibly" - * localised according to LC_MESSAGES. - */ - $eintr = defined( 'SOCKET_EINTR' ) ? SOCKET_EINTR : 4; - $eintrMessage = "stream_select(): unable to select [$eintr]"; - - $running = true; - $timeout = null; - $numReadyPipes = 0; - - while ( $running === true || $numReadyPipes !== 0 ) { - if ( $running ) { - $status = proc_get_status( $proc ); - // If the process has terminated, switch to nonblocking selects - // for getting any data still waiting to be read. - if ( !$status['running'] ) { - $running = false; - $timeout = 0; - } - } - $readyPipes = $pipes; + $retval = $result->getExitCode(); - // Clear last error - // @codingStandardsIgnoreStart Generic.PHP.NoSilencedErrors.Discouraged - @trigger_error( '' ); - $numReadyPipes = @stream_select( $readyPipes, $emptyArray, $emptyArray, $timeout ); - if ( $numReadyPipes === false ) { - // @codingStandardsIgnoreEnd - $error = error_get_last(); - if ( strncmp( $error['message'], $eintrMessage, strlen( $eintrMessage ) ) == 0 ) { - continue; - } else { - trigger_error( $error['message'], E_USER_WARNING ); - $logMsg = $error['message']; - break; - } - } - foreach ( $readyPipes as $fd => $pipe ) { - $block = fread( $pipe, 65536 ); - if ( $block === '' ) { - // End of file - fclose( $pipes[$fd] ); - unset( $pipes[$fd] ); - if ( !$pipes ) { - break 2; - } - } elseif ( $block === false ) { - // Read error - $logMsg = "Error reading from pipe"; - break 2; - } elseif ( $fd == 1 ) { - // From stdout - $outBuffer .= $block; - } elseif ( $fd == 3 ) { - // From log FD - $logBuffer .= $block; - if ( strpos( $block, "\n" ) !== false ) { - $lines = explode( "\n", $logBuffer ); - $logBuffer = array_pop( $lines ); - foreach ( $lines as $line ) { - wfDebugLog( 'exec', $line ); - } - } - } - } - } - - foreach ( $pipes as $pipe ) { - fclose( $pipe ); - } - - // Use the status previously collected if possible, since proc_get_status() - // just calls waitpid() which will not return anything useful the second time. - if ( $running ) { - $status = proc_get_status( $proc ); - } - - if ( $logMsg !== false ) { - // Read/select error - $retval = -1; - proc_close( $proc ); - } elseif ( $status['signaled'] ) { - $logMsg = "Exited with signal {$status['termsig']}"; - $retval = 128 + $status['termsig']; - proc_close( $proc ); - } else { - if ( $status['running'] ) { - $retval = proc_close( $proc ); - } else { - $retval = $status['exitcode']; - proc_close( $proc ); - } - if ( $retval == 127 ) { - $logMsg = "Possibly missing executable file"; - } elseif ( $retval >= 129 && $retval <= 192 ) { - $logMsg = "Probably exited with signal " . ( $retval - 128 ); - } - } - - if ( $logMsg !== false ) { - wfDebugLog( 'exec', "$logMsg: $cmd" ); - } - - return $outBuffer; + return $result->getStdout(); } /** @@ -2568,6 +2334,7 @@ function wfShellExec( $cmd, &$retval = null, $environ = [], * @param array $limits Optional array with limits(filesize, memory, time, walltime) * this overwrites the global wgMaxShell* limits. * @return string Collected stdout and stderr as a string + * @deprecated since 1.30 use class MediaWiki\Shell\Shell */ function wfShellExecWithStderr( $cmd, &$retval = null, $environ = [], $limits = [] ) { return wfShellExec( $cmd, $retval, $environ, $limits, @@ -2608,7 +2375,7 @@ function wfShellWikiCmd( $script, array $parameters = [], array $options = [] ) } $cmd[] = $script; // Escape each parameter for shell - return wfEscapeShellArg( array_merge( $cmd, $parameters ) ); + return Shell::escape( array_merge( $cmd, $parameters ) ); } /** @@ -2618,7 +2385,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 ) { @@ -2653,7 +2420,7 @@ function wfMerge( $old, $mine, $yours, &$result ) { fclose( $yourtextFile ); # Check for a conflict - $cmd = wfEscapeShellArg( $wgDiff3, '-a', '--overlap-only', $mytextName, + $cmd = Shell::escape( $wgDiff3, '-a', '--overlap-only', $mytextName, $oldtextName, $yourtextName ); $handle = popen( $cmd, 'r' ); @@ -2665,7 +2432,7 @@ function wfMerge( $old, $mine, $yours, &$result ) { pclose( $handle ); # Merge differences - $cmd = wfEscapeShellArg( $wgDiff3, '-a', '-e', '--merge', $mytextName, + $cmd = Shell::escape( $wgDiff3, '-a', '-e', '--merge', $mytextName, $oldtextName, $yourtextName ); $handle = popen( $cmd, 'r' ); $result = ''; @@ -2729,7 +2496,7 @@ function wfDiff( $before, $after, $params = '-u' ) { fclose( $newtextFile ); // Get the diff of the two files - $cmd = "$wgDiff " . $params . ' ' . wfEscapeShellArg( $oldtextName, $newtextName ); + $cmd = "$wgDiff " . $params . ' ' . Shell::escape( $oldtextName, $newtextName ); $h = popen( $cmd, 'r' ); if ( !$h ) { @@ -2780,6 +2547,9 @@ function wfDiff( $before, $after, $params = '-u' ) { * @see perldoc -f use * * @param string|int|float $req_ver The version to check, can be a string, an integer, or a float + * + * @deprecated since 1.30 + * * @throws MWException */ function wfUsePHP( $req_ver ) { @@ -2808,7 +2578,7 @@ function wfUsePHP( $req_ver ) { * * @see perldoc -f use * - * @deprecated since 1.26, use the "requires' property of extension.json + * @deprecated since 1.26, use the "requires" property of extension.json * @param string|int|float $req_ver The version to check, can be a string, an integer, or a float * @throws MWException */ @@ -2915,14 +2685,6 @@ function wfBaseConvert( $input, $sourceBase, $destBase, $pad = 1, return Wikimedia\base_convert( $input, $sourceBase, $destBase, $pad, $lowercase, $engine ); } -/** - * @deprecated since 1.27, PHP's session generation isn't used with - * MediaWiki\Session\SessionManager - */ -function wfFixSessionID() { - wfDeprecated( __FUNCTION__, '1.27' ); -} - /** * Reset the session id * @@ -3402,6 +3164,7 @@ function wfShorthandToInteger( $string = '', $default = -1 ) { /** * Get the normalised IETF language tag * See unit test for examples. + * See mediawiki.language.bcp47 for the JavaScript implementation. * * @param string $code The language code. * @return string The language code which complying with BCP 47 standards. @@ -3617,6 +3380,7 @@ function wfCanIPUseHTTPS( $ip ) { * @since 1.25 */ function wfIsInfinity( $str ) { + // These are hardcoded elsewhere in MediaWiki (e.g. mediawiki.special.block.js). $infinityValues = [ 'infinite', 'indefinite', 'infinity', 'never' ]; return in_array( $str, $infinityValues ); } diff --git a/includes/HistoryBlob.php b/includes/HistoryBlob.php index 56cf815e45..51bd7a9e94 100644 --- a/includes/HistoryBlob.php +++ b/includes/HistoryBlob.php @@ -76,9 +76,6 @@ class ConcatenatedGzipHistoryBlob implements HistoryBlob { public $mMaxSize = 10000000; public $mMaxCount = 100; - /** - * Constructor - */ public function __construct() { if ( !function_exists( 'gzdeflate' ) ) { throw new MWException( "Need zlib support to read or write this " diff --git a/includes/Hooks.php b/includes/Hooks.php index f4f86be68b..c22dc97f46 100644 --- a/includes/Hooks.php +++ b/includes/Hooks.php @@ -108,17 +108,89 @@ class Hooks { } } + /** + * @param string $event Event name + * @param array|callable $hook + * @param array $args Array of parameters passed to hook functions + * @param string|null $deprecatedVersion [optional] + * @param string &$fname [optional] Readable name of hook [returned] + * @return null|string|bool + */ + private static function callHook( $event, $hook, array $args, $deprecatedVersion = null, + &$fname = null + ) { + // Turn non-array values into an array. (Can't use casting because of objects.) + if ( !is_array( $hook ) ) { + $hook = [ $hook ]; + } + + if ( !array_filter( $hook ) ) { + // Either array is empty or it's an array filled with null/false/empty. + return null; + } + + if ( is_array( $hook[0] ) ) { + // First element is an array, meaning the developer intended + // the first element to be a callback. Merge it in so that + // processing can be uniform. + $hook = array_merge( $hook[0], array_slice( $hook, 1 ) ); + } + + /** + * $hook can be: a function, an object, an array of $function and + * $data, an array of just a function, an array of object and + * method, or an array of object, method, and data. + */ + if ( $hook[0] instanceof Closure ) { + $fname = "hook-$event-closure"; + $callback = array_shift( $hook ); + } elseif ( is_object( $hook[0] ) ) { + $object = array_shift( $hook ); + $method = array_shift( $hook ); + + // If no method was specified, default to on$event. + if ( $method === null ) { + $method = "on$event"; + } + + $fname = get_class( $object ) . '::' . $method; + $callback = [ $object, $method ]; + } elseif ( is_string( $hook[0] ) ) { + $fname = $callback = array_shift( $hook ); + } else { + throw new MWException( 'Unknown datatype in hooks for ' . $event . "\n" ); + } + + // Run autoloader (workaround for call_user_func_array bug) + // and throw error if not callable. + if ( !is_callable( $callback ) ) { + throw new MWException( 'Invalid callback ' . $fname . ' in hooks for ' . $event . "\n" ); + } + + // mark hook as deprecated, if deprecation version is specified + if ( $deprecatedVersion !== null ) { + wfDeprecated( "$event hook (used in $fname)", $deprecatedVersion ); + } + + // Call the hook. + $hook_args = array_merge( $hook, $args ); + return call_user_func_array( $callback, $hook_args ); + } + /** * Call hook functions defined in Hooks::register and $wgHooks. * - * For a certain hook event, fetch the array of hook events and + * For the given hook event, fetch the array of hook events and * process them. Determine the proper callback for each hook and * then call the actual hook using the appropriate arguments. * Finally, process the return value and return/throw accordingly. * + * For hook event that are not abortable through a handler's return value, + * use runWithoutAbort() instead. + * * @param string $event Event name * @param array $args Array of parameters passed to hook functions - * @param string|null $deprecatedVersion Optionally, mark hook as deprecated with version number + * @param string|null $deprecatedVersion [optional] Mark hook as deprecated with version number * @return bool True if no handler aborted the hook * * @throws Exception @@ -130,61 +202,11 @@ class Hooks { */ public static function run( $event, array $args = [], $deprecatedVersion = null ) { foreach ( self::getHandlers( $event ) as $hook ) { - // Turn non-array values into an array. (Can't use casting because of objects.) - if ( !is_array( $hook ) ) { - $hook = [ $hook ]; - } - - if ( !array_filter( $hook ) ) { - // Either array is empty or it's an array filled with null/false/empty. + $retval = self::callHook( $event, $hook, $args, $deprecatedVersion ); + if ( $retval === null ) { continue; - } elseif ( is_array( $hook[0] ) ) { - // First element is an array, meaning the developer intended - // the first element to be a callback. Merge it in so that - // processing can be uniform. - $hook = array_merge( $hook[0], array_slice( $hook, 1 ) ); - } - - /** - * $hook can be: a function, an object, an array of $function and - * $data, an array of just a function, an array of object and - * method, or an array of object, method, and data. - */ - if ( $hook[0] instanceof Closure ) { - $func = "hook-$event-closure"; - $callback = array_shift( $hook ); - } elseif ( is_object( $hook[0] ) ) { - $object = array_shift( $hook ); - $method = array_shift( $hook ); - - // If no method was specified, default to on$event. - if ( $method === null ) { - $method = "on$event"; - } - - $func = get_class( $object ) . '::' . $method; - $callback = [ $object, $method ]; - } elseif ( is_string( $hook[0] ) ) { - $func = $callback = array_shift( $hook ); - } else { - throw new MWException( 'Unknown datatype in hooks for ' . $event . "\n" ); - } - - // Run autoloader (workaround for call_user_func_array bug) - // and throw error if not callable. - if ( !is_callable( $callback ) ) { - throw new MWException( 'Invalid callback ' . $func . ' in hooks for ' . $event . "\n" ); } - // mark hook as deprecated, if deprecation version is specified - if ( $deprecatedVersion !== null ) { - wfDeprecated( "$event hook (used in $func)", $deprecatedVersion ); - } - - // Call the hook. - $hook_args = array_merge( $hook, $args ); - $retval = call_user_func_array( $callback, $hook_args ); - // Process the return value. if ( is_string( $retval ) ) { // String returned means error. @@ -197,4 +219,26 @@ class Hooks { return true; } + + /** + * Call hook functions defined in Hooks::register and $wgHooks. + * + * @param string $event Event name + * @param array $args Array of parameters passed to hook functions + * @param string|null $deprecatedVersion [optional] Mark hook as deprecated with version number + * @return bool Always true + * @throws MWException If a callback is invalid, unknown + * @throws UnexpectedValueException If a callback returns an abort value. + * @since 1.30 + */ + public static function runWithoutAbort( $event, array $args = [], $deprecatedVersion = null ) { + foreach ( self::getHandlers( $event ) as $hook ) { + $fname = null; + $retval = self::callHook( $event, $hook, $args, $deprecatedVersion, $fname ); + if ( $retval !== null && $retval !== true ) { + throw new UnexpectedValueException( "Invalid return from $fname for unabortable $event." ); + } + } + return true; + } } diff --git a/includes/Licenses.php b/includes/Licenses.php deleted file mode 100644 index da1a8da6b0..0000000000 --- a/includes/Licenses.php +++ /dev/null @@ -1,210 +0,0 @@ - - * @copyright Copyright © 2005, Ævar Arnfjörð Bjarmason - * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later - */ - -/** - * A License class for use on Special:Upload - */ -class Licenses extends HTMLFormField { - /** @var string */ - protected $msg; - - /** @var array */ - protected $licenses = []; - - /** @var string */ - protected $html; - /**#@-*/ - - /** - * @param array $params - */ - public function __construct( $params ) { - parent::__construct( $params ); - - $this->msg = empty( $params['licenses'] ) - ? wfMessage( 'licenses' )->inContentLanguage()->plain() - : $params['licenses']; - $this->selected = null; - - $this->makeLicenses(); - } - - /** - * @private - */ - protected function makeLicenses() { - $levels = []; - $lines = explode( "\n", $this->msg ); - - foreach ( $lines as $line ) { - if ( strpos( $line, '*' ) !== 0 ) { - continue; - } else { - list( $level, $line ) = $this->trimStars( $line ); - - if ( strpos( $line, '|' ) !== false ) { - $obj = new License( $line ); - $this->stackItem( $this->licenses, $levels, $obj ); - } else { - if ( $level < count( $levels ) ) { - $levels = array_slice( $levels, 0, $level ); - } - if ( $level == count( $levels ) ) { - $levels[$level - 1] = $line; - } elseif ( $level > count( $levels ) ) { - $levels[] = $line; - } - } - } - } - } - - /** - * @param string $str - * @return array - */ - protected function trimStars( $str ) { - $numStars = strspn( $str, '*' ); - return [ $numStars, ltrim( substr( $str, $numStars ), ' ' ) ]; - } - - /** - * @param array $list - * @param array $path - * @param mixed $item - */ - protected function stackItem( &$list, $path, $item ) { - $position =& $list; - if ( $path ) { - foreach ( $path as $key ) { - $position =& $position[$key]; - } - } - $position[] = $item; - } - - /** - * @param array $tagset - * @param int $depth - */ - protected function makeHtml( $tagset, $depth = 0 ) { - foreach ( $tagset as $key => $val ) { - if ( is_array( $val ) ) { - $this->html .= $this->outputOption( - $key, '', - [ - 'disabled' => 'disabled', - 'style' => 'color: GrayText', // for MSIE - ], - $depth - ); - $this->makeHtml( $val, $depth + 1 ); - } else { - $this->html .= $this->outputOption( - $val->text, $val->template, - [ 'title' => '{{' . $val->template . '}}' ], - $depth - ); - } - } - } - - /** - * @param string $message - * @param string $value - * @param null|array $attribs - * @param int $depth - * @return string - */ - protected function outputOption( $message, $value, $attribs = null, $depth = 0 ) { - $msgObj = $this->msg( $message ); - $text = $msgObj->exists() ? $msgObj->text() : $message; - $attribs['value'] = $value; - if ( $value === $this->selected ) { - $attribs['selected'] = 'selected'; - } - - $val = str_repeat( /*   */ "\xc2\xa0", $depth * 2 ) . $text; - return str_repeat( "\t", $depth ) . Xml::element( 'option', $attribs, $val ) . "\n"; - } - - /**#@-*/ - - /** - * Accessor for $this->licenses - * - * @return array - */ - public function getLicenses() { - return $this->licenses; - } - - /** - * Accessor for $this->html - * - * @param bool $value - * - * @return string - */ - public function getInputHTML( $value ) { - $this->selected = $value; - - $this->html = $this->outputOption( wfMessage( 'nolicense' )->text(), '', - (bool)$this->selected ? null : [ 'selected' => 'selected' ] ); - $this->makeHtml( $this->getLicenses() ); - - $attribs = [ - 'name' => $this->mName, - 'id' => $this->mID - ]; - if ( !empty( $this->mParams['disabled'] ) ) { - $attibs['disabled'] = 'disabled'; - } - - return Html::rawElement( 'select', $attribs, $this->html ); - } -} - -/** - * A License class for use on Special:Upload (represents a single type of license). - */ -class License { - /** @var string */ - public $template; - - /** @var string */ - public $text; - - /** - * @param string $str License name?? - */ - function __construct( $str ) { - list( $text, $template ) = explode( '|', strrev( $str ), 2 ); - - $this->template = strrev( $template ); - $this->text = strrev( $text ); - } -} diff --git a/includes/LinkFilter.php b/includes/LinkFilter.php index 2f5055871a..790e2be448 100644 --- a/includes/LinkFilter.php +++ b/includes/LinkFilter.php @@ -50,7 +50,7 @@ class LinkFilter { $text = $content->getNativeData(); - $regex = LinkFilter::makeRegex( $filterEntry ); + $regex = self::makeRegex( $filterEntry ); return preg_match( $regex, $text ); } diff --git a/includes/Linker.php b/includes/Linker.php index f2e4ac4581..403b10a149 100644 --- a/includes/Linker.php +++ b/includes/Linker.php @@ -76,7 +76,7 @@ class Linker { * @since 1.18 Method exists since 1.16 as non-static, made static in 1.18. * @deprecated since 1.28, use MediaWiki\Linker\LinkRenderer instead * - * @param Title $target Can currently only be a Title, but this may + * @param LinkTarget $target Can currently only be a LinkTarget, but this may * change to support Images, literal URLs, etc. * @param string $html The HTML contents of the element, i.e., * the link text. This is raw HTML and will not be escaped. If null, @@ -107,8 +107,8 @@ class Linker { public static function link( $target, $html = null, $customAttribs = [], $query = [], $options = [] ) { - if ( !$target instanceof Title ) { - wfWarn( __METHOD__ . ': Requires $target to be a Title object.', 2 ); + if ( !$target instanceof LinkTarget ) { + wfWarn( __METHOD__ . ': Requires $target to be a LinkTarget object.', 2 ); return "$html"; } @@ -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( @@ -1170,7 +1175,7 @@ class Linker { $sectionTitle = Title::newFromText( '#' . $section ); } else { $sectionTitle = Title::makeTitleSafe( $title->getNamespace(), - $title->getDBkey(), $section ); + $title->getDBkey(), Sanitizer::decodeCharReferences( $section ) ); } if ( $sectionTitle ) { $link = Linker::makeCommentLink( $sectionTitle, $wgLang->getArrow(), $wikiId, 'noclasses' ); @@ -1286,9 +1291,7 @@ class Linker { if ( $target->getText() == '' && !$target->isExternal() && !$local && $title ) { - $newTarget = clone $title; - $newTarget->setFragment( '#' . $target->getFragment() ); - $target = $newTarget; + $target = $title->createFragmentTarget( $target->getFragment() ); } $thelink = Linker::makeCommentLink( $target, $linkText . $inside, $wikiId ) . $trail; @@ -1316,7 +1319,7 @@ class Linker { * * @note This is only public for technical reasons. It's not intended for use outside Linker. * - * @param Title $title + * @param LinkTarget $linkTarget * @param string $text * @param string|null $wikiId Id of the wiki to link to (if not the local wiki), * as used by WikiMap. @@ -1325,23 +1328,23 @@ class Linker { * @return string HTML link */ public static function makeCommentLink( - Title $title, $text, $wikiId = null, $options = [] + LinkTarget $linkTarget, $text, $wikiId = null, $options = [] ) { - if ( $wikiId !== null && !$title->isExternal() ) { - $link = Linker::makeExternalLink( + if ( $wikiId !== null && !$linkTarget->isExternal() ) { + $link = self::makeExternalLink( WikiMap::getForeignURL( $wikiId, - $title->getNamespace() === 0 - ? $title->getDBkey() - : MWNamespace::getCanonicalName( $title->getNamespace() ) . ':' - . $title->getDBkey(), - $title->getFragment() + $linkTarget->getNamespace() === 0 + ? $linkTarget->getDBkey() + : MWNamespace::getCanonicalName( $linkTarget->getNamespace() ) . ':' + . $linkTarget->getDBkey(), + $linkTarget->getFragment() ), $text, /* escape = */ false // Already escaped ); } else { - $link = Linker::link( $title, $text, [], [], $options ); + $link = self::link( $linkTarget, $text, [], [], $options ); } return $link; @@ -1350,7 +1353,7 @@ class Linker { /** * @param Title $contextTitle * @param string $target - * @param string $text + * @param string &$text * @return string */ public static function normalizeSubpageLink( $contextTitle, $target, &$text ) { @@ -1534,10 +1537,16 @@ class Linker { if ( $sectionIndex !== false ) { $classes .= " tocsection-$sectionIndex"; } - return "\n
  • ' . - $tocnumber . ' ' . - $tocline . ''; + + // \n
  • + // $tocnumber $tocline + return "\n" . Html::openElement( 'li', [ 'class' => $classes ] ) + . Html::rawElement( 'a', + [ 'href' => "#$anchor" ], + Html::element( 'span', [ 'class' => 'tocnumber' ], $tocnumber ) + . ' ' + . Html::rawElement( 'span', [ 'class' => 'toctext' ], $tocline ) + ); } /** @@ -1608,23 +1617,27 @@ class Linker { * a space and ending with '>' * This *must* be at least '>' for no attribs * @param string $anchor The anchor to give the headline (the bit after the #) - * @param string $html Html for the text of the header + * @param string $html HTML for the text of the header * @param string $link HTML to add for the section edit link - * @param bool|string $legacyAnchor A second, optional anchor to give for + * @param string|bool $fallbackAnchor A second, optional anchor to give for * backward compatibility (false to omit) * * @return string HTML headline */ public static function makeHeadline( $level, $attribs, $anchor, $html, - $link, $legacyAnchor = false + $link, $fallbackAnchor = false ) { + $anchorEscaped = htmlspecialchars( $anchor ); + $fallback = ''; + if ( $fallbackAnchor !== false && $fallbackAnchor !== $anchor ) { + $fallbackAnchor = htmlspecialchars( $fallbackAnchor ); + $fallback = ""; + } $ret = "$html" + . "$fallback$html" . $link . ""; - if ( $legacyAnchor !== false ) { - $ret = "
    $ret"; - } + return $ret; } @@ -2021,7 +2034,7 @@ class Linker { } if ( !$rev->userCan( Revision::DELETED_RESTRICTED, $user ) ) { - return Linker::revDeleteLinkDisabled( $canHide ); // revision was hidden from sysops + return self::revDeleteLinkDisabled( $canHide ); // revision was hidden from sysops } else { if ( $rev->getId() ) { // RevDelete links using revision ID are stable across @@ -2040,7 +2053,7 @@ class Linker { 'ids' => $rev->getTimestamp() ]; } - return Linker::revDeleteLink( $query, + return self::revDeleteLink( $query, $rev->isDeleted( Revision::DELETED_RESTRICTED ), $canHide ); } } diff --git a/includes/ListToggle.php b/includes/ListToggle.php index 2c87b8bac0..7a5fd9a1be 100644 --- a/includes/ListToggle.php +++ b/includes/ListToggle.php @@ -42,7 +42,7 @@ class ListToggle { private function checkboxLink( $checkboxType ) { return Html::element( // CSS classes: mw-checkbox-all, mw-checkbox-none, mw-checkbox-invert - 'a', [ 'href' => '#', 'class' => 'mw-checkbox-' . $checkboxType ], + 'a', [ 'class' => 'mw-checkbox-' . $checkboxType, 'role' => 'button', 'tabindex' => 0 ], $this->output->msg( 'checkbox-' . $checkboxType )->text() ); } diff --git a/includes/MWNamespace.php b/includes/MWNamespace.php index 89cb616a7b..97dba26b95 100644 --- a/includes/MWNamespace.php +++ b/includes/MWNamespace.php @@ -370,7 +370,7 @@ class MWNamespace { */ public static function getSubjectNamespaces() { return array_filter( - MWNamespace::getValidNamespaces(), + self::getValidNamespaces(), 'MWNamespace::isSubject' ); } @@ -383,7 +383,7 @@ class MWNamespace { */ public static function getTalkNamespaces() { return array_filter( - MWNamespace::getValidNamespaces(), + self::getValidNamespaces(), 'MWNamespace::isTalk' ); } diff --git a/includes/MagicWord.php b/includes/MagicWord.php index ee95918700..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 = MagicWord::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..4010ec7585 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 { @@ -194,7 +203,9 @@ class MagicWordArray { */ public function parseMatch( $m ) { reset( $m ); - while ( list( $key, $value ) = each( $m ) ) { + while ( ( $key = key( $m ) ) !== null ) { + $value = current( $m ); + next( $m ); if ( $key === 0 || $value === '' ) { continue; } @@ -260,7 +271,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 +315,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 4df4d76f53..0f40c19201 100644 --- a/includes/MediaWiki.php +++ b/includes/MediaWiki.php @@ -607,8 +607,9 @@ 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' ) { // OutputPage::output() will be fast; $postCommitWork will not be useful for // masking the latency of syncing DB positions accross all datacenters synchronously. @@ -616,7 +617,7 @@ class MediaWiki { $flags = $lbFactory::SHUTDOWN_CHRONPROT_ASYNC; $cpPosTime = microtime( true ); // Client's next request should see 1+ positions with this DBMasterPos::asOf() time - if ( $urlDomainDistance === 'local' ) { + if ( $urlDomainDistance === 'local' && $allowHeaders ) { // Client will stay on this domain, so set an unobtrusive cookie $expires = time() + ChronologyProtector::POSITION_TTL; $options = [ 'prefix' => '' ]; @@ -633,7 +634,7 @@ class MediaWiki { // OutputPage::output() is fairly slow; run it in $postCommitWork to mask // the latency of syncing DB positions accross all datacenters synchronously $flags = $lbFactory::SHUTDOWN_CHRONPROT_SYNC; - if ( $lbFactory->hasOrMadeRecentMasterChanges( INF ) ) { + if ( $lbFactory->hasOrMadeRecentMasterChanges( INF ) && $allowHeaders ) { $cpPosTime = microtime( true ); // Set a cookie in case the DB position store cannot sync accross datacenters. // This will at least cover the common case of the user staying on the domain. @@ -675,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'; @@ -731,10 +712,11 @@ class MediaWiki { MWExceptionHandler::rollbackMasterChangesAndLog( $e ); } + $blocksHttpClient = true; // Defer everything else if possible... - $callback = function () use ( $mode ) { + $callback = function () use ( $mode, &$blocksHttpClient ) { try { - $this->restInPeace( $mode ); + $this->restInPeace( $mode, $blocksHttpClient ); } catch ( Exception $e ) { // If this is post-send, then displaying errors can cause broken HTML MWExceptionHandler::rollbackMasterChangesAndLog( $e ); @@ -744,9 +726,11 @@ class MediaWiki { if ( function_exists( 'register_postsend_function' ) ) { // https://github.com/facebook/hhvm/issues/1230 register_postsend_function( $callback ); + $blocksHttpClient = false; } else { if ( function_exists( 'fastcgi_finish_request' ) ) { fastcgi_finish_request(); + $blocksHttpClient = false; } else { // Either all DB and deferred updates should happen or none. // The latter should not be cancelled due to client disconnect. @@ -889,8 +873,9 @@ class MediaWiki { /** * Ends this task peacefully * @param string $mode Use 'fast' to always skip job running + * @param bool $blocksHttpClient Whether this blocks an HTTP response to a client */ - public function restInPeace( $mode = 'fast' ) { + public function restInPeace( $mode = 'fast', $blocksHttpClient = true ) { $lbFactory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory(); // Assure deferred updates are not in the main transaction $lbFactory->commitMasterChanges( __METHOD__ ); @@ -906,8 +891,8 @@ class MediaWiki { // Important: this must be the last deferred update added (T100085, T154425) DeferredUpdates::addCallableUpdate( [ JobQueueGroup::class, 'pushLazyJobs' ] ); - // Do any deferred jobs - DeferredUpdates::doUpdates( 'enqueue' ); + // Do any deferred jobs; preferring to run them now if a client will not wait on them + DeferredUpdates::doUpdates( $blocksHttpClient ? 'enqueue' : 'run' ); // Now that everything specific to this request is done, // try to occasionally run jobs (if enabled) from the queues @@ -969,7 +954,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 ) { @@ -978,7 +963,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/MimeMagic.php b/includes/MimeMagic.php index 8670729300..a2a44bb868 100644 --- a/includes/MimeMagic.php +++ b/includes/MimeMagic.php @@ -35,7 +35,7 @@ class MimeMagic extends MimeAnalyzer { $instance = MediaWikiServices::getInstance()->getMimeAnalyzer(); Assert::postcondition( $instance instanceof MimeMagic, - __METHOD__ . ' should return an instance of ' . MimeMagic::class + __METHOD__ . ' should return an instance of ' . self::class ); return $instance; } diff --git a/includes/MovePage.php b/includes/MovePage.php index 8d0c33dcc2..2f8255ba38 100644 --- a/includes/MovePage.php +++ b/includes/MovePage.php @@ -442,7 +442,6 @@ class MovePage { private function moveToInternal( User $user, &$nt, $reason = '', $createRedirect = true, array $changeTags = [] ) { - global $wgContLang; if ( $nt->exists() ) { $moveOverRedirect = true; $logType = 'move_redir'; @@ -511,7 +510,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 ); @@ -520,8 +519,6 @@ class MovePage { if ( $reason ) { $comment .= wfMessage( 'colon-separator' )->inContentLanguage()->text() . $reason; } - # Truncate for whole multibyte characters. - $comment = $wgContLang->truncate( $comment, 255 ); $dbw = wfGetDB( DB_MASTER ); diff --git a/includes/OrderedStreamingForkController.php b/includes/OrderedStreamingForkController.php new file mode 100644 index 0000000000..ff29cb510d --- /dev/null +++ b/includes/OrderedStreamingForkController.php @@ -0,0 +1,216 @@ +workCallback = $workCallback; + $this->input = $input; + $this->output = $output; + } + + /** + * @inheritDoc + */ + public function start() { + if ( $this->procsToStart > 0 ) { + $status = parent::start(); + if ( $status === 'child' ) { + $this->consume(); + } + } else { + $status = 'parent'; + $this->consumeNoFork(); + } + return $status; + } + + /** + * @param int $numProcs + * @return string + */ + protected function forkWorkers( $numProcs ) { + $this->prepareEnvironment(); + + $childSockets = []; + // Create the child processes + for ( $i = 0; $i < $numProcs; $i++ ) { + $sockets = stream_socket_pair( STREAM_PF_UNIX, STREAM_SOCK_STREAM, STREAM_IPPROTO_IP ); + // Do the fork + $pid = pcntl_fork(); + if ( $pid === -1 || $pid === false ) { + echo "Error creating child processes\n"; + exit( 1 ); + } + + if ( !$pid ) { + $this->initChild(); + $this->childNumber = $i; + $this->input = $sockets[0]; + $this->output = $sockets[0]; + fclose( $sockets[1] ); + return 'child'; + } else { + // This is the parent process + $this->children[$pid] = true; + fclose( $sockets[0] ); + $childSockets[] = $sockets[1]; + } + } + $this->feedChildren( $childSockets ); + foreach ( $childSockets as $socket ) { + // if a child has already shutdown the sockets will be closed, + // closing a second time would raise a warning. + if ( is_resource( $socket ) ) { + fclose( $socket ); + } + } + return 'parent'; + } + + /** + * Child worker process. Reads work from $this->input and writes the + * result of that work to $this->output when completed. + */ + protected function consume() { + while ( !feof( $this->input ) ) { + $line = trim( fgets( $this->input ) ); + if ( $line ) { + list( $id, $data ) = json_decode( $line ); + $result = call_user_func( $this->workCallback, $data ); + fwrite( $this->output, json_encode( [ $id, $result ] ) . "\n" ); + } + } + } + + /** + * Special cased version of self::consume() when no forking occurs + */ + protected function consumeNoFork() { + while ( !feof( $this->input ) ) { + $line = trim( fgets( $this->input ) ); + if ( $line ) { + $result = call_user_func( $this->workCallback, $line ); + fwrite( $this->output, "$result\n" ); + } + } + } + + /** + * Reads lines of work from $this->input and farms them out to + * the provided socket. + * + * @param resource[] $sockets + */ + protected function feedChildren( array $sockets ) { + $used = []; + $id = 0; + $this->nextOutputId = 0; + + while ( !feof( $this->input ) ) { + $data = fgets( $this->input ); + if ( $used ) { + do { + $this->updateAvailableSockets( $sockets, $used, $sockets ? 0 : 5 ); + } while ( !$sockets ); + } + $data = trim( $data ); + if ( !$data ) { + continue; + } + $socket = array_pop( $sockets ); + fwrite( $socket, json_encode( [ $id++, $data ] ) . "\n" ); + $used[] = $socket; + } + while ( $used ) { + $this->updateAvailableSockets( $sockets, $used, 5 ); + } + } + + /** + * Moves sockets from $used to $sockets when they are available + * for more work + * + * @param resource[] &$sockets List of sockets that are waiting for work + * @param resource[] &$used List of sockets currently performing work + * @param int $timeout The number of seconds to block waiting. 0 for + * non-blocking operation. + */ + protected function updateAvailableSockets( &$sockets, &$used, $timeout ) { + $read = $used; + $write = $except = []; + stream_select( $read, $write, $except, $timeout ); + foreach ( $read as $socket ) { + $line = fgets( $socket ); + list( $id, $data ) = json_decode( trim( $line ) ); + $this->receive( (int)$id, $data ); + $sockets[] = $socket; + $idx = array_search( $socket, $used ); + unset( $used[$idx] ); + } + } + + /** + * @param int $id + * @param string $data + */ + protected function receive( $id, $data ) { + if ( $id !== $this->nextOutputId ) { + $this->delayedOutputData[$id] = $data; + return; + } + fwrite( $this->output, $data . "\n" ); + $this->nextOutputId = $id + 1; + while ( isset( $this->delayedOutputData[$this->nextOutputId] ) ) { + fwrite( $this->output, $this->delayedOutputData[$this->nextOutputId] . "\n" ); + unset( $this->delayedOutputData[$this->nextOutputId] ); + $this->nextOutputId++; + } + } +} diff --git a/includes/OutputPage.php b/includes/OutputPage.php index 969171d654..7c463b6f02 100644 --- a/includes/OutputPage.php +++ b/includes/OutputPage.php @@ -139,6 +139,9 @@ class OutputPage extends ContextSource { /** @var array Array of elements in "". Parser might add its own headers! */ protected $mHeadItems = []; + /** @var array Additional classes; there are also classes from other sources */ + protected $mAdditionalBodyClasses = []; + /** @var array */ protected $mModules = []; @@ -571,6 +574,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 +692,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 ); @@ -704,6 +708,16 @@ class OutputPage extends ContextSource { return isset( $this->mHeadItems[$name] ); } + /** + * Add a class to the element + * + * @since 1.30 + * @param string|string[] $classes One or more classes to add + */ + public function addBodyClasses( $classes ) { + $this->mAdditionalBodyClasses = array_merge( $this->mAdditionalBodyClasses, (array)$classes ); + } + /** * @deprecated since 1.28 Obsolete - wgUseETag experiment was removed. * @param string $tag @@ -1715,7 +1729,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 +1740,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 ) { @@ -1838,7 +1852,7 @@ class OutputPage extends ContextSource { // Avoid PHP 7.1 warning of passing $this by reference $outputPage = $this; Hooks::run( 'LanguageLinks', [ $this->getTitle(), &$this->mLanguageLinks, &$linkFlags ] ); - Hooks::run( 'OutputPageParserOutput', [ &$outputPage, $parserOutput ] ); + Hooks::runWithoutAbort( 'OutputPageParserOutput', [ &$outputPage, $parserOutput ] ); // This check must be after 'OutputPageParserOutput' runs in addParserOutputMetadata // so that extensions may modify ParserOutput to toggle TOC. @@ -1876,7 +1890,7 @@ class OutputPage extends ContextSource { $text = $parserOutput->getText(); // Avoid PHP 7.1 warning of passing $this by reference $outputPage = $this; - Hooks::run( 'OutputPageBeforeHTML', [ &$outputPage, &$text ] ); + Hooks::runWithoutAbort( 'OutputPageBeforeHTML', [ &$outputPage, &$text ] ); $this->addHTML( $text ); } @@ -1899,7 +1913,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 +1977,7 @@ class OutputPage extends ContextSource { } /** - * @param $maxage + * @param int $maxage * @deprecated since 1.27 Use setCdnMaxage() instead */ public function setSquidMaxage( $maxage ) { @@ -1997,10 +2011,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 ) { @@ -2012,7 +2026,7 @@ class OutputPage extends ContextSource { } $age = time() - wfTimestamp( TS_UNIX, $mtime ); - $adaptiveTTL = max( .9 * $age, $minTTL ); + $adaptiveTTL = max( 0.9 * $age, $minTTL ); $adaptiveTTL = min( $adaptiveTTL, $maxTTL ); $this->lowerCdnMaxage( (int)$adaptiveTTL ); @@ -2422,7 +2436,7 @@ class OutputPage extends ContextSource { $outputPage = $this; // Hook that allows last minute changes to the output page, e.g. // adding of CSS or Javascript by extensions. - Hooks::run( 'BeforePageDisplay', [ &$outputPage, &$sk ] ); + Hooks::runWithoutAbort( 'BeforePageDisplay', [ &$outputPage, &$sk ] ); try { $sk->outputPage(); @@ -2434,7 +2448,7 @@ class OutputPage extends ContextSource { try { // This hook allows last minute changes to final overall output by modifying output buffer - Hooks::run( 'AfterFinalPageOutput', [ $this ] ); + Hooks::runWithoutAbort( 'AfterFinalPageOutput', [ $this ] ); } catch ( Exception $e ) { ob_end_clean(); // bug T129657 throw $e; @@ -2908,9 +2922,21 @@ 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 = []; + $bodyClasses = $this->mAdditionalBodyClasses; $bodyClasses[] = 'mediawiki'; # Classes for LTR/RTL directionality support @@ -3785,7 +3811,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..a862903d52 100644 --- a/includes/PHPVersionCheck.php +++ b/includes/PHPVersionCheck.php @@ -29,13 +29,14 @@ */ class PHPVersionCheck { /* @var string The number of the MediaWiki version used */ - var $mwVersion = '1.30'; + var $mwVersion = '1.31'; var $functionsExtensionsMapping = array( 'mb_substr' => 'mbstring', 'utf8_encode' => 'xml', '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/Pingback.php b/includes/Pingback.php index bd1b2a25b4..c3393bcc1c 100644 --- a/includes/Pingback.php +++ b/includes/Pingback.php @@ -228,6 +228,7 @@ class Pingback { * * The schema for the data is located at: * + * @return bool */ public function sendPingback() { if ( !$this->acquireLock() ) { 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 @@ + 'tog-ccmeonemails', 'disabled' => $disableEmailPrefs, ]; + + if ( $config->get( 'EnableUserEmailBlacklist' ) + && !$disableEmailPrefs + && !(bool)$user->getOption( 'disablemail' ) + ) { + $lookup = CentralIdLookup::factory(); + $ids = $user->getOption( 'email-blacklist', [] ); + $names = $ids ? $lookup->namesFromCentralIds( $ids, $user ) : []; + + $defaultPreferences['email-blacklist'] = [ + 'type' => 'usersmultiselect', + 'label-message' => 'email-blacklist-label', + 'section' => 'personal/email', + 'default' => implode( "\n", $names ), + ]; + } } if ( $config->get( 'EnotifWatchlist' ) ) { @@ -599,7 +613,7 @@ class Preferences { /** * @param User $user * @param IContextSource $context - * @param array $defaultPreferences + * @param array &$defaultPreferences * @return void */ static function skinPreferences( $user, IContextSource $context, &$defaultPreferences ) { @@ -611,7 +625,6 @@ class Preferences { $defaultPreferences['skin'] = [ 'type' => 'radio', 'options' => $skinOptions, - 'label' => ' ', 'section' => 'rendering/skin', ]; } @@ -650,7 +663,7 @@ class Preferences { /** * @param User $user * @param IContextSource $context - * @param array $defaultPreferences + * @param array &$defaultPreferences */ static function filesPreferences( $user, IContextSource $context, &$defaultPreferences ) { # # Files ##################################### @@ -671,7 +684,7 @@ class Preferences { /** * @param User $user * @param IContextSource $context - * @param array $defaultPreferences + * @param array &$defaultPreferences * @return void */ static function datetimePreferences( $user, IContextSource $context, &$defaultPreferences ) { @@ -681,7 +694,6 @@ class Preferences { $defaultPreferences['date'] = [ 'type' => 'radio', 'options' => $dateOptions, - 'label' => ' ', 'section' => 'rendering/dateformat', ]; } @@ -749,7 +761,7 @@ class Preferences { /** * @param User $user * @param IContextSource $context - * @param array $defaultPreferences + * @param array &$defaultPreferences */ static function renderingPreferences( $user, IContextSource $context, &$defaultPreferences ) { # # Diffs #################################### @@ -811,7 +823,7 @@ class Preferences { /** * @param User $user * @param IContextSource $context - * @param array $defaultPreferences + * @param array &$defaultPreferences */ static function editingPreferences( $user, IContextSource $context, &$defaultPreferences ) { # # Editing ##################################### @@ -832,10 +844,10 @@ class Preferences { 'section' => '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 +896,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 +913,8 @@ class Preferences { ]; $defaultPreferences['rclimit'] = [ 'type' => 'int', + 'min' => 0, + 'max' => 1000, 'label-message' => 'recentchangescount', 'help-message' => 'prefs-help-recentchangescount', 'section' => 'rc/displayrc', @@ -918,6 +932,12 @@ class Preferences { $defaultPreferences['rcfilters-saved-queries'] = [ 'type' => 'api', ]; + $defaultPreferences['rcfilters-wl-saved-queries'] = [ + 'type' => 'api', + ]; + $defaultPreferences['rcfilters-rclimit'] = [ + 'type' => 'api', + ]; if ( $config->get( 'RCWatchCategoryMembership' ) ) { $defaultPreferences['hidecategorization'] = [ @@ -950,12 +970,21 @@ class Preferences { 'label-message' => 'tog-shownumberswatching', ]; } + + if ( $config->get( 'StructuredChangeFiltersShowPreference' ) ) { + $defaultPreferences['rcenhancedfilters-disable'] = [ + 'type' => 'toggle', + 'section' => 'rc/opt-out', + 'label-message' => 'rcfilters-preference-label', + 'help-message' => 'rcfilters-preference-help', + ]; + } } /** * @param User $user * @param IContextSource $context - * @param array $defaultPreferences + * @param array &$defaultPreferences */ static function watchlistPreferences( $user, IContextSource $context, &$defaultPreferences ) { $config = $context->getConfig(); @@ -1039,6 +1068,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'] = [ @@ -1105,7 +1139,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 ) { @@ -1117,6 +1151,9 @@ class Preferences { /** * Dummy, kept for backwards-compatibility. + * @param User $user + * @param IContextSource $context + * @param array &$defaultPreferences */ static function miscPreferences( $user, IContextSource $context, &$defaultPreferences ) { } @@ -1316,7 +1353,7 @@ class Preferences { $formClass = 'PreferencesForm', array $remove = [] ) { - $formDescriptor = Preferences::getPreferences( $user, $context ); + $formDescriptor = self::getPreferences( $user, $context ); if ( count( $remove ) ) { $removeKeys = array_flip( $remove ); $formDescriptor = array_diff_key( $formDescriptor, $removeKeys ); @@ -1340,7 +1377,7 @@ class Preferences { $htmlForm->setSubmitText( $context->msg( 'saveprefs' )->text() ); # Used message keys: 'accesskey-preferences-save', 'tooltip-preferences-save' $htmlForm->setSubmitTooltip( 'preferences-save' ); - $htmlForm->setSubmitID( 'prefsubmit' ); + $htmlForm->setSubmitID( 'prefcontrol' ); $htmlForm->setSubmitCallback( [ 'Preferences', 'tryFormSubmit' ] ); return $htmlForm; @@ -1610,123 +1647,3 @@ class Preferences { return $timeZoneList; } } - -/** Some tweaks to allow js prefs to work */ -class PreferencesForm extends HTMLForm { - // Override default value from HTMLForm - protected $mSubSectionBeforeFields = false; - - private $modifiedUser; - - /** - * @param User $user - */ - public function setModifiedUser( $user ) { - $this->modifiedUser = $user; - } - - /** - * @return User - */ - public function getModifiedUser() { - if ( $this->modifiedUser === null ) { - return $this->getUser(); - } else { - return $this->modifiedUser; - } - } - - /** - * Get extra parameters for the query string when redirecting after - * successful save. - * - * @return array - */ - public function getExtraSuccessRedirectParameters() { - return []; - } - - /** - * @param string $html - * @return string - */ - function wrapForm( $html ) { - $html = Xml::tags( 'div', [ 'id' => 'preferences' ], $html ); - - return parent::wrapForm( $html ); - } - - /** - * @return string - */ - function getButtons() { - $attrs = [ 'id' => 'mw-prefs-restoreprefs' ]; - - if ( !$this->getModifiedUser()->isAllowedAny( 'editmyprivateinfo', 'editmyoptions' ) ) { - return ''; - } - - $html = parent::getButtons(); - - if ( $this->getModifiedUser()->isAllowed( 'editmyoptions' ) ) { - $t = SpecialPage::getTitleFor( 'Preferences', 'reset' ); - - $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); - $html .= "\n" . $linkRenderer->makeLink( $t, $this->msg( 'restoreprefs' )->text(), - Html::buttonAttributes( $attrs, [ 'mw-ui-quiet' ] ) ); - - $html = Xml::tags( 'div', [ 'class' => 'mw-prefs-buttons' ], $html ); - } - - return $html; - } - - /** - * Separate multi-option preferences into multiple preferences, since we - * have to store them separately - * @param array $data - * @return array - */ - function filterDataForSubmit( $data ) { - foreach ( $this->mFlatFields as $fieldname => $field ) { - if ( $field instanceof HTMLNestedFilterable ) { - $info = $field->mParams; - $prefix = isset( $info['prefix'] ) ? $info['prefix'] : $fieldname; - foreach ( $field->filterDataForSubmit( $data[$fieldname] ) as $key => $value ) { - $data["$prefix$key"] = $value; - } - unset( $data[$fieldname] ); - } - } - - return $data; - } - - /** - * Get the whole body of the form. - * @return string - */ - function getBody() { - return $this->displaySection( $this->mFieldTree, '', 'mw-prefsection-' ); - } - - /** - * Get the "" for a given section key. Normally this is the - * prefs-$key message but we'll allow extensions to override it. - * @param string $key - * @return string - */ - function getLegend( $key ) { - $legend = parent::getLegend( $key ); - Hooks::run( 'PreferencesGetLegend', [ $this, $key, &$legend ] ); - return $legend; - } - - /** - * Get the keys of each top level preference section. - * @return array of section keys - */ - function getPreferenceSections() { - return array_keys( array_filter( $this->mFieldTree, 'is_array' ) ); - } -} 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 c3782ba18a..006e700645 100644 --- a/includes/Revision.php +++ b/includes/Revision.php @@ -192,7 +192,9 @@ class Revision implements IDBAccessObject { $attribs = $overrides + [ 'page' => isset( $row->ar_page_id ) ? $row->ar_page_id : null, 'id' => isset( $row->ar_rev_id ) ? $row->ar_rev_id : null, - 'comment' => $row->ar_comment, + 'comment' => CommentStore::newKey( 'ar_comment' ) + // Legacy because $row probably came from self::selectArchiveFields() + ->getCommentLegacy( wfGetDB( DB_REPLICA ), $row, true )->text, 'user' => $row->ar_user, 'user_text' => $row->ar_user_text, 'timestamp' => $row->ar_timestamp, @@ -443,6 +445,8 @@ class Revision implements IDBAccessObject { /** * Return the list of revision fields that should be selected to create * a new revision. + * @todo Deprecate this in favor of a method that returns tables and joins + * as well, and use CommentStore::getJoin(). * @return array */ public static function selectFields() { @@ -453,7 +457,6 @@ class Revision implements IDBAccessObject { 'rev_page', 'rev_text_id', 'rev_timestamp', - 'rev_comment', 'rev_user_text', 'rev_user', 'rev_minor_edit', @@ -463,6 +466,8 @@ class Revision implements IDBAccessObject { 'rev_sha1', ]; + $fields += CommentStore::newKey( 'rev_comment' )->getFields(); + if ( $wgContentHandlerUseDB ) { $fields[] = 'rev_content_format'; $fields[] = 'rev_content_model'; @@ -474,6 +479,8 @@ class Revision implements IDBAccessObject { /** * Return the list of revision fields that should be selected to create * a new revision from an archive row. + * @todo Deprecate this in favor of a method that returns tables and joins + * as well, and use CommentStore::getJoin(). * @return array */ public static function selectArchiveFields() { @@ -485,7 +492,6 @@ class Revision implements IDBAccessObject { 'ar_text', 'ar_text_id', 'ar_timestamp', - 'ar_comment', 'ar_user_text', 'ar_user', 'ar_minor_edit', @@ -495,6 +501,8 @@ class Revision implements IDBAccessObject { 'ar_sha1', ]; + $fields += CommentStore::newKey( 'ar_comment' )->getFields(); + if ( $wgContentHandlerUseDB ) { $fields[] = 'ar_content_format'; $fields[] = 'ar_content_model'; @@ -559,8 +567,6 @@ class Revision implements IDBAccessObject { } /** - * Constructor - * * @param object|array $row Either a database row or an array * @throws MWException * @access private @@ -570,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; @@ -754,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 ) { @@ -862,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 */ @@ -896,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 */ @@ -940,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 */ @@ -1004,7 +1012,7 @@ class Revision implements IDBAccessObject { return RecentChange::newFromConds( [ - 'rc_user_text' => $this->getUserText( Revision::RAW ), + 'rc_user_text' => $this->getUserText( self::RAW ), 'rc_timestamp' => $dbr->timestamp( $this->getTimestamp() ), 'rc_this_oldid' => $this->getId() ], @@ -1309,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 ) { @@ -1393,7 +1401,7 @@ class Revision implements IDBAccessObject { * * @param IDatabase $dbw (master connection) * @throws MWException - * @return int + * @return int The revision ID */ public function insertOn( $dbw ) { global $wgDefaultExternalStore, $wgContentHandlerUseDB; @@ -1434,10 +1442,8 @@ class Revision implements IDBAccessObject { # Record the text (or external storage URL) to the text table if ( $this->mTextId === null ) { - $old_id = $dbw->nextSequenceValue( 'text_old_id_seq' ); $dbw->insert( 'text', [ - 'old_id' => $old_id, 'old_text' => $data, 'old_flags' => $flags, ], __METHOD__ @@ -1450,14 +1456,9 @@ class Revision implements IDBAccessObject { } # Record the edit in revisions - $rev_id = $this->mId !== null - ? $this->mId - : $dbw->nextSequenceValue( 'revision_rev_id_seq' ); $row = [ - 'rev_id' => $rev_id, 'rev_page' => $this->mPage, 'rev_text_id' => $this->mTextId, - 'rev_comment' => $this->mComment, 'rev_minor_edit' => $this->mMinorEdit ? 1 : 0, 'rev_user' => $this->mUser, 'rev_user_text' => $this->mUserText, @@ -1468,9 +1469,16 @@ class Revision implements IDBAccessObject { ? $this->getPreviousRevisionId( $dbw ) : $this->mParentId, 'rev_sha1' => $this->mSha1 === null - ? Revision::base36Sha1( $this->mText ) + ? self::base36Sha1( $this->mText ) : $this->mSha1, ]; + if ( $this->mId !== null ) { + $row['rev_id'] = $this->mId; + } + + list( $commentFields, $commentCallback ) = + CommentStore::newKey( 'rev_comment' )->insertWithTempTable( $dbw, $this->mComment ); + $row += $commentFields; if ( $wgContentHandlerUseDB ) { // NOTE: Store null for the default model and format, to save space. @@ -1497,9 +1505,10 @@ class Revision implements IDBAccessObject { $dbw->insert( 'revision', $row, __METHOD__ ); if ( $this->mId === null ) { - // Only if nextSequenceValue() was called + // Only if auto-increment was used $this->mId = $dbw->insertId(); } + $commentCallback( $this->mId ); // Assertion to try to catch T92046 if ( (int)$this->mId === 0 ) { @@ -1509,6 +1518,16 @@ class Revision implements IDBAccessObject { ); } + // Insert IP revision into ip_changes for use when querying for a range. + if ( $this->mUser === 0 && IP::isValid( $this->mUserText ) ) { + $ipcRow = [ + 'ipc_rev_id' => $this->mId, + 'ipc_rev_timestamp' => $row['rev_timestamp'], + 'ipc_hex' => IP::toHex( $row['rev_user_text'] ), + ]; + $dbw->insert( 'ip_changes', $ipcRow, __METHOD__ ); + } + // Avoid PHP 7.1 warning of passing $this by reference $revision = $this; Hooks::run( 'RevisionInsertComplete', [ &$revision, $data, $flags ] ); @@ -1557,7 +1576,7 @@ class Revision implements IDBAccessObject { } } - $content = $this->getContent( Revision::RAW ); + $content = $this->getContent( self::RAW ); $prefixedDBkey = $title->getPrefixedDBkey(); $revId = $this->mId; @@ -1586,7 +1605,7 @@ class Revision implements IDBAccessObject { * Get the text cache TTL * * @param WANObjectCache $cache - * @return integer + * @return int */ private static function getCacheTTL( WANObjectCache $cache ) { global $wgRevisionCacheExpiry; @@ -1694,7 +1713,7 @@ class Revision implements IDBAccessObject { * @return Revision|null Revision or null on error */ public static function newNullRevision( $dbw, $pageId, $summary, $minor, $user = null ) { - global $wgContentHandlerUseDB, $wgContLang; + global $wgContentHandlerUseDB; $fields = [ 'page_latest', 'page_namespace', 'page_title', 'rev_text_id', 'rev_len', 'rev_sha1' ]; @@ -1721,9 +1740,6 @@ class Revision implements IDBAccessObject { $user = $wgUser; } - // Truncate for whole multibyte characters - $summary = $wgContLang->truncate( $summary, 255 ); - $row = [ 'page' => $pageId, 'user_text' => $user->getName(), diff --git a/includes/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 b08bc69425..a7f963a435 100644 --- a/includes/Sanitizer.php +++ b/includes/Sanitizer.php @@ -56,6 +56,21 @@ class Sanitizer { const EVIL_URI_PATTERN = '!(^|\s|\*/\s*)(javascript|vbscript)([^\w]|$)!i'; const XMLNS_ATTRIBUTE_PATTERN = "/^xmlns:[:A-Z_a-z-.0-9]+$/"; + /** + * Tells escapeUrlForHtml() to encode the ID using the wiki's primary encoding. + * + * @since 1.30 + */ + const ID_PRIMARY = 0; + + /** + * Tells escapeUrlForHtml() to encode the ID using the fallback encoding, or return false + * if no fallback is configured. + * + * @since 1.30 + */ + const ID_FALLBACK = 1; + /** * List of all named character entities defined in HTML 4.01 * https://www.w3.org/TR/html4/sgml/entities.html @@ -465,7 +480,7 @@ class Sanitizer { extract( self::getRecognizedTagData( $extratags, $removetags ) ); # Remove HTML comments - $text = Sanitizer::removeHTMLcomments( $text ); + $text = self::removeHTMLcomments( $text ); $bits = explode( '<', $text ); $text = str_replace( '>', '>', array_shift( $bits ) ); if ( !MWTidy::isEnabled() ) { @@ -583,12 +598,12 @@ class Sanitizer { call_user_func_array( $processCallback, [ &$params, $args ] ); } - if ( !Sanitizer::validateTag( $params, $t ) ) { + if ( !self::validateTag( $params, $t ) ) { $badtag = true; } # Strip non-approved attributes from the tag - $newparams = Sanitizer::fixTagAttributes( $params, $t ); + $newparams = self::fixTagAttributes( $params, $t ); } if ( !$badtag ) { $rest = str_replace( '>', '>', $rest ); @@ -629,11 +644,11 @@ class Sanitizer { call_user_func_array( $warnCallback, [ 'deprecated-self-close-category' ] ); } } - if ( !Sanitizer::validateTag( $params, $t ) ) { + if ( !self::validateTag( $params, $t ) ) { $badtag = true; } - $newparams = Sanitizer::fixTagAttributes( $params, $t ); + $newparams = self::fixTagAttributes( $params, $t ); if ( !$badtag ) { if ( $brace === '/>' && !isset( $htmlsingleonly[$t] ) ) { # Interpret self-closing tags as empty tags even when @@ -710,7 +725,7 @@ class Sanitizer { * @return bool */ static function validateTag( $params, $element ) { - $params = Sanitizer::decodeTagAttributes( $params ); + $params = self::decodeTagAttributes( $params ); if ( $element == 'meta' || $element == 'link' ) { if ( !isset( $params['itemprop'] ) ) { @@ -746,8 +761,8 @@ class Sanitizer { * @todo Check for unique id attribute :P */ static function validateTagAttributes( $attribs, $element ) { - return Sanitizer::validateAttributes( $attribs, - Sanitizer::attributeWhitelist( $element ) ); + return self::validateAttributes( $attribs, + self::attributeWhitelist( $element ) ); } /** @@ -795,12 +810,12 @@ class Sanitizer { # Strip javascript "expression" from stylesheets. # https://msdn.microsoft.com/en-us/library/ms537634.aspx if ( $attribute == 'style' ) { - $value = Sanitizer::checkCss( $value ); + $value = self::checkCss( $value ); } # Escape HTML id attributes if ( $attribute === 'id' ) { - $value = Sanitizer::escapeId( $value, 'noninitial' ); + $value = self::escapeIdForAttribute( $value, self::ID_PRIMARY ); } # Escape HTML id reference lists @@ -809,7 +824,7 @@ class Sanitizer { || $attribute === 'aria-labelledby' || $attribute === 'aria-owns' ) { - $value = Sanitizer::escapeIdReferenceList( $value, 'noninitial' ); + $value = self::escapeIdReferenceList( $value, 'noninitial' ); } // RDFa and microdata properties allow URLs, URIs and/or CURIs. @@ -907,7 +922,7 @@ class Sanitizer { */ public static function normalizeCss( $value ) { // Decode character references like { - $value = Sanitizer::decodeCharReferences( $value ); + $value = self::decodeCharReferences( $value ); // Decode escape sequences and line continuation // See the grammar in the CSS 2 spec, appendix D. @@ -1087,14 +1102,14 @@ class Sanitizer { return ''; } - $decoded = Sanitizer::decodeTagAttributes( $text ); - $stripped = Sanitizer::validateTagAttributes( $decoded, $element ); + $decoded = self::decodeTagAttributes( $text ); + $stripped = self::validateTagAttributes( $decoded, $element ); if ( $sorted ) { ksort( $stripped ); } - return Sanitizer::safeEncodeTagAttributes( $stripped ); + return self::safeEncodeTagAttributes( $stripped ); } /** @@ -1124,7 +1139,7 @@ class Sanitizer { * @return string HTML-encoded text fragment */ static function safeEncodeAttribute( $text ) { - $encValue = Sanitizer::encodeAttribute( $text ); + $encValue = self::encodeAttribute( $text ); # Templates and links may be expanded in later parsing, # creating invalid or dangerous output. Suppress this. @@ -1164,6 +1179,8 @@ class Sanitizer { * ambiguous if it's part of something that looks like a percent escape * (which don't work reliably in fragments cross-browser). * + * @deprecated since 1.30, use one of this class' escapeIdFor*() functions + * * @see https://www.w3.org/TR/html401/types.html#type-name Valid characters * in the id and name attributes * @see https://www.w3.org/TR/html401/struct/links.html#h-12.2.3 Anchors with @@ -1186,8 +1203,6 @@ class Sanitizer { global $wgExperimentalHtmlIds; $options = (array)$options; - $id = Sanitizer::decodeCharReferences( $id ); - if ( $wgExperimentalHtmlIds && !in_array( 'legacy', $options ) ) { $id = preg_replace( '/[ \t\n\r\f_\'"&#%]+/', '_', $id ); $id = trim( $id, '_' ); @@ -1215,21 +1230,126 @@ class Sanitizer { return $id; } + /** + * Given a section name or other user-generated or otherwise unsafe string, escapes it to be + * a valid HTML id attribute. + * + * WARNING: unlike escapeId(), the output of this function is not guaranteed to be HTML safe, + * be sure to use proper escaping. + * + * @param string $id String to escape + * @param int $mode One of ID_* constants, specifying whether the primary or fallback encoding + * should be used. + * @return string|bool Escaped ID or false if fallback encoding is requested but it's not + * configured. + * + * @since 1.30 + */ + public static function escapeIdForAttribute( $id, $mode = self::ID_PRIMARY ) { + global $wgFragmentMode; + + if ( !isset( $wgFragmentMode[$mode] ) ) { + if ( $mode === self::ID_PRIMARY ) { + throw new UnexpectedValueException( '$wgFragmentMode is configured with no primary mode' ); + } + return false; + } + + $internalMode = $wgFragmentMode[$mode]; + + return self::escapeIdInternal( $id, $internalMode ); + } + + /** + * Given a section name or other user-generated or otherwise unsafe string, escapes it to be + * a valid URL fragment. + * + * WARNING: unlike escapeId(), the output of this function is not guaranteed to be HTML safe, + * be sure to use proper escaping. + * + * @param string $id String to escape + * @return string Escaped ID + * + * @since 1.30 + */ + public static function escapeIdForLink( $id ) { + global $wgFragmentMode; + + if ( !isset( $wgFragmentMode[self::ID_PRIMARY] ) ) { + throw new UnexpectedValueException( '$wgFragmentMode is configured with no primary mode' ); + } + + $mode = $wgFragmentMode[self::ID_PRIMARY]; + + $id = self::escapeIdInternal( $id, $mode ); + + return $id; + } + + /** + * Given a section name or other user-generated or otherwise unsafe string, escapes it to be + * a valid URL fragment for external interwikis. + * + * @param string $id String to escape + * @return string Escaped ID + * + * @since 1.30 + */ + public static function escapeIdForExternalInterwiki( $id ) { + global $wgExternalInterwikiFragmentMode; + + $id = self::escapeIdInternal( $id, $wgExternalInterwikiFragmentMode ); + + return $id; + } + + /** + * Helper for escapeIdFor*() functions. Performs most of the actual escaping. + * + * @param string $id String to escape + * @param string $mode One of modes from $wgFragmentMode + * @return string + */ + private static function escapeIdInternal( $id, $mode ) { + switch ( $mode ) { + case 'html5': + $id = str_replace( ' ', '_', $id ); + break; + case 'legacy': + // This corresponds to 'noninitial' mode of the old escapeId() + static $replace = [ + '%3A' => ':', + '%' => '.' + ]; + + $id = urlencode( str_replace( ' ', '_', $id ) ); + $id = strtr( $id, $replace ); + break; + case 'html5-legacy': + $id = preg_replace( '/[ \t\n\r\f_\'"&#%]+/', '_', $id ); + $id = trim( $id, '_' ); + if ( $id === '' ) { + // Must have been all whitespace to start with. + $id = '_'; + } + break; + default: + throw new InvalidArgumentException( "Invalid mode '$mode' passed to '" . __METHOD__ ); + } + + return $id; + } + /** * Given a string containing a space delimited list of ids, escape each id * to match ids escaped by the escapeId() function. * + * @todo wfDeprecated() uses of $options in 1.31, remove completely in 1.32 + * * @since 1.27 * * @param string $referenceString Space delimited list of ids - * @param string|array $options String or array of strings (default is array()): - * 'noninitial': This is a non-initial fragment of an id, not a full id, - * so don't pay attention if the first character isn't valid at the - * beginning of an id. Only matters if $wgExperimentalHtmlIds is - * false. - * 'legacy': Behave the way the old HTML 4-based ID escaping worked even - * if $wgExperimentalHtmlIds is used, so we can generate extra - * anchors and links won't break. + * @param string|array $options Deprecated and does nothing. * @return string */ static function escapeIdReferenceList( $referenceString, $options = [] ) { @@ -1238,7 +1358,7 @@ class Sanitizer { # Escape each token as an id foreach ( $references as &$ref ) { - $ref = Sanitizer::escapeId( $ref, $options ); + $ref = self::escapeIdForAttribute( $ref ); } # Merge the array back to a space delimited list string @@ -1275,7 +1395,7 @@ class Sanitizer { * @return string Escaped input */ static function escapeHtmlAllowEntities( $html ) { - $html = Sanitizer::decodeCharReferences( $html ); + $html = self::decodeCharReferences( $html ); # It seems wise to escape ' as well as ", as a matter of course. Can't # hurt. Use ENT_SUBSTITUTE so that incorrectly truncated multibyte characters # don't cause the entire string to disappear. @@ -1317,14 +1437,14 @@ class Sanitizer { foreach ( $pairs as $set ) { $attribute = strtolower( $set[1] ); - $value = Sanitizer::getTagAttributeCallback( $set ); + $value = self::getTagAttributeCallback( $set ); // Normalize whitespace $value = preg_replace( '/[\t\r\n ]+/', ' ', $value ); $value = trim( $value ); // Decode character references - $attribs[$attribute] = Sanitizer::decodeCharReferences( $value ); + $attribs[$attribute] = self::decodeCharReferences( $value ); } return $attribs; } @@ -1340,7 +1460,7 @@ class Sanitizer { $attribs = []; foreach ( $assoc_array as $attribute => $value ) { $encAttribute = htmlspecialchars( $attribute ); - $encValue = Sanitizer::safeEncodeAttribute( $value ); + $encValue = self::safeEncodeAttribute( $value ); $attribs[] = "$encAttribute=\"$encValue\""; } @@ -1427,11 +1547,11 @@ class Sanitizer { static function normalizeCharReferencesCallback( $matches ) { $ret = null; if ( $matches[1] != '' ) { - $ret = Sanitizer::normalizeEntity( $matches[1] ); + $ret = self::normalizeEntity( $matches[1] ); } elseif ( $matches[2] != '' ) { - $ret = Sanitizer::decCharReference( $matches[2] ); + $ret = self::decCharReference( $matches[2] ); } elseif ( $matches[3] != '' ) { - $ret = Sanitizer::hexCharReference( $matches[3] ); + $ret = self::hexCharReference( $matches[3] ); } if ( is_null( $ret ) ) { return htmlspecialchars( $matches[0] ); @@ -1468,7 +1588,7 @@ class Sanitizer { */ static function decCharReference( $codepoint ) { $point = intval( $codepoint ); - if ( Sanitizer::validateCodepoint( $point ) ) { + if ( self::validateCodepoint( $point ) ) { return sprintf( '&#%d;', $point ); } else { return null; @@ -1481,7 +1601,7 @@ class Sanitizer { */ static function hexCharReference( $codepoint ) { $point = hexdec( $codepoint ); - if ( Sanitizer::validateCodepoint( $point ) ) { + if ( self::validateCodepoint( $point ) ) { return sprintf( '&#x%x;', $point ); } else { return null; @@ -1535,7 +1655,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 ); @@ -1550,11 +1673,11 @@ class Sanitizer { */ static function decodeCharReferencesCallback( $matches ) { if ( $matches[1] != '' ) { - return Sanitizer::decodeEntity( $matches[1] ); + return self::decodeEntity( $matches[1] ); } elseif ( $matches[2] != '' ) { - return Sanitizer::decodeChar( intval( $matches[2] ) ); + return self::decodeChar( intval( $matches[2] ) ); } elseif ( $matches[3] != '' ) { - return Sanitizer::decodeChar( hexdec( $matches[3] ) ); + return self::decodeChar( hexdec( $matches[3] ) ); } # Last case should be an ampersand by itself return $matches[0]; @@ -1568,7 +1691,7 @@ class Sanitizer { * @private */ static function decodeChar( $codepoint ) { - if ( Sanitizer::validateCodepoint( $codepoint ) ) { + if ( self::validateCodepoint( $codepoint ) ) { return UtfNormal\Utils::codepointToUtf8( $codepoint ); } else { return UtfNormal\Constants::UTF8_REPLACEMENT; @@ -1601,7 +1724,7 @@ class Sanitizer { * @return array */ static function attributeWhitelist( $element ) { - $list = Sanitizer::setupAttributeWhitelist(); + $list = self::setupAttributeWhitelist(); return isset( $list[$element] ) ? $list[$element] : []; @@ -1772,7 +1895,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' ] ), @@ -1809,6 +1932,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, @@ -1824,7 +1951,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; @@ -1876,7 +2003,7 @@ class Sanitizer { static function cleanUrl( $url ) { # Normalize any HTML entities in input. They will be # re-escaped by makeExternalLink(). - $url = Sanitizer::decodeCharReferences( $url ); + $url = self::decodeCharReferences( $url ); # Escape any control characters introduced by the above step $url = preg_replace_callback( '/[\][<>"\\x00-\\x20\\x7F\|]/', diff --git a/includes/ServiceWiring.php b/includes/ServiceWiring.php index e1244e7590..d048007c3a 100644 --- a/includes/ServiceWiring.php +++ b/includes/ServiceWiring.php @@ -287,7 +287,7 @@ return [ return ObjectFactory::constructClassInstance( $conf['class'], [ $conf ] ); }, - 'ParserCache' => function( MediaWikiServices $services ) { + 'ParserCache' => function ( MediaWikiServices $services ) { $config = $services->getMainConfig(); $cache = ObjectCache::getInstance( $config->get( 'ParserCacheType' ) ); wfDebugLog( 'caches', 'parser: ' . get_class( $cache ) ); @@ -298,7 +298,7 @@ return [ ); }, - 'LinkCache' => function( MediaWikiServices $services ) { + 'LinkCache' => function ( MediaWikiServices $services ) { return new LinkCache( $services->getTitleFormatter(), $services->getMainWANObjectCache() diff --git a/includes/Setup.php b/includes/Setup.php index ac00fab741..68e3d96afe 100644 --- a/includes/Setup.php +++ b/includes/Setup.php @@ -282,6 +282,11 @@ foreach ( $wgForeignFileRepos as &$repo ) { } unset( $repo ); // no global pollution; destroy reference +// Convert this deprecated setting to modern system +if ( $wgExperimentalHtmlIds ) { + $wgFragmentMode = [ 'html5-legacy', 'legacy' ]; +} + $rcMaxAgeDays = $wgRCMaxAge / ( 3600 * 24 ); if ( $wgRCFilterByAge ) { // Trim down $wgRCLinkDays so that it only lists links which are valid @@ -687,7 +692,7 @@ $messageMemc = wfGetMessageCacheStorage(); /** * @deprecated since 1.30 */ -$parserMemc = new DeprecatedGlobal( 'parserMemc', function() { +$parserMemc = new DeprecatedGlobal( 'parserMemc', function () { return MediaWikiServices::getInstance()->getParserCache()->getCacheStorage(); }, '1.30' ); 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 6ce1aed814..ce87596a5f 100644 --- a/includes/SiteStats.php +++ b/includes/SiteStats.php @@ -34,9 +34,6 @@ class SiteStats { /** @var bool */ private static $loaded = false; - /** @var int */ - private static $jobs; - /** @var int[] */ private static $pageCount = []; @@ -213,24 +210,24 @@ class SiteStats { } /** + * Total number of jobs in the job queue. * @return int */ static function jobs() { - if ( !isset( self::$jobs ) ) { - try{ - self::$jobs = array_sum( JobQueueGroup::singleton()->getQueueSizes() ); - } catch ( JobQueueError $e ) { - self::$jobs = 0; - } - /** - * Zero rows still do single row read for row that doesn't exist, - * but people are annoyed by that - */ - if ( self::$jobs == 1 ) { - self::$jobs = 0; - } - } - return self::$jobs; + $cache = MediaWikiServices::getInstance()->getMainWANObjectCache(); + return $cache->getWithSetCallback( + $cache->makeKey( 'SiteStats', 'jobscount' ), + $cache::TTL_MINUTE, + function ( $oldValue, &$ttl, array &$setOpts ) { + try{ + $jobs = array_sum( JobQueueGroup::singleton()->getQueueSizes() ); + } catch ( JobQueueError $e ) { + $jobs = 0; + } + return $jobs; + }, + [ 'pcTTL' => $cache::TTL_PROC_LONG ] + ); } /** @@ -296,9 +293,8 @@ class SiteStatsInit { private $mUsers = null, $mFiles = null; /** - * Constructor * @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 ) { @@ -383,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/TemplateParser.php b/includes/TemplateParser.php index 2759ff9baa..2293dabbd9 100644 --- a/includes/TemplateParser.php +++ b/includes/TemplateParser.php @@ -38,6 +38,13 @@ class TemplateParser { */ protected $forceRecompile = false; + /** + * @var int Compilation flags passed to LightnCandy + */ + // Do not add more flags here without discussion. + // If you do add more flags, be sure to update unit tests as well. + protected $compileFlags = LightnCandy::FLAG_ERROR_EXCEPTION; + /** * @param string $templateDir * @param bool $forceRecompile @@ -47,6 +54,18 @@ class TemplateParser { $this->forceRecompile = $forceRecompile; } + /** + * Enable/disable the use of recursive partials. + * @param bool $enable + */ + public function enableRecursivePartials( $enable ) { + if ( $enable ) { + $this->compileFlags = $this->compileFlags | LightnCandy::FLAG_RUNTIMEPARTIAL; + } else { + $this->compileFlags = $this->compileFlags & ~LightnCandy::FLAG_RUNTIMEPARTIAL; + } + } + /** * Constructs the location of the the source Mustache template * @param string $templateName The name of the template @@ -73,11 +92,13 @@ class TemplateParser { * @throws RuntimeException */ protected function getTemplate( $templateName ) { + $templateKey = $templateName . '|' . $this->compileFlags; + // If a renderer has already been defined for this template, reuse it - if ( isset( $this->renderers[$templateName] ) && - is_callable( $this->renderers[$templateName] ) + if ( isset( $this->renderers[$templateKey] ) && + is_callable( $this->renderers[$templateKey] ) ) { - return $this->renderers[$templateName]; + return $this->renderers[$templateKey]; } $filename = $this->getTemplateFilename( $templateName ); @@ -90,7 +111,7 @@ class TemplateParser { $fileContents = file_get_contents( $filename ); // Generate a quick hash for cache invalidation - $fastHash = md5( $fileContents ); + $fastHash = md5( $this->compileFlags . '|' . $fileContents ); // Fetch a secret key for building a keyed hash of the PHP code $config = MediaWikiServices::getInstance()->getMainConfig(); @@ -127,7 +148,7 @@ class TemplateParser { if ( !is_callable( $renderer ) ) { throw new RuntimeException( "Requested template, {$templateName}, is not callable" ); } - $this->renderers[$templateName] = $renderer; + $this->renderers[$templateKey] = $renderer; return $renderer; } @@ -168,9 +189,7 @@ class TemplateParser { return LightnCandy::compile( $code, [ - // Do not add more flags here without discussion. - // If you do add more flags, be sure to update unit tests as well. - 'flags' => LightnCandy::FLAG_ERROR_EXCEPTION, + 'flags' => $this->compileFlags, 'basedir' => $this->templateDir, 'fileext' => '.mustache', ] diff --git a/includes/Title.php b/includes/Title.php index 083a725d98..3da6ab9552 100644 --- a/includes/Title.php +++ b/includes/Title.php @@ -253,6 +253,9 @@ class Title implements LinkTarget { * Create a new Title from text, such as what one would find in a link. De- * codes any HTML entities in the text. * + * Title objects returned by this method are guaranteed to be valid, and + * thus return true from the isValid() method. + * * @param string|int|null $text The link text; spaces, prefixes, and an * initial ':' indicating the main namespace are accepted. * @param int $defaultNamespace The namespace to use if none is specified @@ -272,7 +275,7 @@ class Title implements LinkTarget { } try { - return Title::newFromTextThrow( strval( $text ), $defaultNamespace ); + return self::newFromTextThrow( strval( $text ), $defaultNamespace ); } catch ( MalformedTitleException $ex ) { return null; } @@ -284,6 +287,9 @@ class Title implements LinkTarget { * * The exception subclasses encode detailed information about why the title is invalid. * + * Title objects returned by this method are guaranteed to be valid, and + * thus return true from the isValid() method. + * * @see Title::newFromText * * @since 1.25 @@ -411,7 +417,7 @@ class Title implements LinkTarget { __METHOD__ ); if ( $row !== false ) { - $title = Title::newFromRow( $row ); + $title = self::newFromRow( $row ); } else { $title = null; } @@ -439,7 +445,7 @@ class Title implements LinkTarget { $titles = []; foreach ( $res as $row ) { - $titles[] = Title::newFromRow( $row ); + $titles[] = self::newFromRow( $row ); } return $titles; } @@ -500,10 +506,19 @@ class Title implements LinkTarget { /** * Create a new Title from a namespace index and a DB key. - * It's assumed that $ns and $title are *valid*, for instance when - * they came directly from the database or a special page name. - * For convenience, spaces are converted to underscores so that - * eg user_text fields can be used directly. + * + * It's assumed that $ns and $title are safe, for instance when + * they came directly from the database or a special page name, + * not from user input. + * + * No validation is applied. For convenience, spaces are normalized + * to underscores, so that e.g. user_text fields can be used directly. + * + * @note This method may return Title objects that are "invalid" + * according to the isValid() method. This is usually caused by + * configuration changes: e.g. a namespace that was once defined is + * no longer configured, or a character that was once allowed in + * titles is now forbidden. * * @param int $ns The namespace of the article * @param string $title The unprefixed database key form @@ -529,6 +544,10 @@ class Title implements LinkTarget { * The parameters will be checked for validity, which is a bit slower * than makeTitle() but safer for user-provided data. * + * Title objects returned by makeTitleSafe() are guaranteed to be valid, + * that is, they return true from the isValid() method. If no valid Title + * can be constructed from the input, this method returns null. + * * @param int $ns The namespace of the article * @param string $title Database key form * @param string $fragment The link fragment (after the "#") @@ -536,12 +555,15 @@ class Title implements LinkTarget { * @return Title|null The new object, or null on an error */ public static function makeTitleSafe( $ns, $title, $fragment = '', $interwiki = '' ) { + // NOTE: ideally, this would just call makeTitle() and then isValid(), + // but presently, that means more overhead on a potential performance hotspot. + if ( !MWNamespace::exists( $ns ) ) { return null; } $t = new Title(); - $t->mDbkeyform = Title::makeName( $ns, $title, $fragment, $interwiki, true ); + $t->mDbkeyform = self::makeName( $ns, $title, $fragment, $interwiki, true ); try { $t->secureAndSplit(); @@ -557,10 +579,10 @@ class Title implements LinkTarget { * @return Title The new object */ public static function newMainPage() { - $title = Title::newFromText( wfMessage( 'mainpage' )->inContentLanguage()->text() ); + $title = self::newFromText( wfMessage( 'mainpage' )->inContentLanguage()->text() ); // Don't give fatal errors if the message is broken if ( !$title ) { - $title = Title::newFromText( 'Main Page' ); + $title = self::newFromText( 'Main Page' ); } return $title; } @@ -748,6 +770,8 @@ class Title implements LinkTarget { /** * Escape a text fragment, say from a link, for a URL * + * @deprecated since 1.30, use Sanitizer::escapeIdForLink() or escapeIdForExternalInterwiki() + * * @param string $fragment Containing a URL or link fragment (after the "#") * @return string Escaped string */ @@ -775,6 +799,36 @@ class Title implements LinkTarget { } } + /** + * Returns true if the title is valid, false if it is invalid. + * + * Valid titles can be round-tripped via makeTitleSafe() and newFromText(). + * Invalid titles may get returned from makeTitle(), and it may be useful to + * allow them to exist, e.g. in order to process log entries about pages in + * namespaces that belong to extensions that are no longer installed. + * + * @note This method is relatively expensive. When constructing Title + * objects that need to be valid, use an instantiator method that is guaranteed + * to return valid titles, such as makeTitleSafe() or newFromText(). + * + * @return bool + */ + public function isValid() { + $ns = $this->getNamespace(); + + if ( !MWNamespace::exists( $ns ) ) { + return false; + } + + try { + $parser = MediaWikiServices::getInstance()->getTitleParser(); + $parser->parseTitle( $this->getDBkey(), $ns ); + return true; + } catch ( MalformedTitleException $ex ) { + return false; + } + } + /** * Determine whether the object refers to a page within * this project (either this wiki or a wiki with a local @@ -933,7 +987,7 @@ class Title implements LinkTarget { */ public function getContentModel( $flags = 0 ) { if ( !$this->mForcedContentModel - && ( !$this->mContentModel || $flags === Title::GAID_FOR_UPDATE ) + && ( !$this->mContentModel || $flags === self::GAID_FOR_UPDATE ) && $this->getArticleID( $flags ) ) { $linkCache = LinkCache::singleton(); @@ -1034,6 +1088,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. */ @@ -1096,7 +1151,7 @@ class Title implements LinkTarget { if ( $canonicalName ) { $localName = SpecialPageFactory::getLocalNameFor( $canonicalName, $par ); if ( $localName != $this->mDbkeyform ) { - return Title::makeTitle( NS_SPECIAL, $localName ); + return self::makeTitle( NS_SPECIAL, $localName ); } } } @@ -1195,7 +1250,7 @@ class Title implements LinkTarget { * @return bool */ public function isMainPage() { - return $this->equals( Title::newMainPage() ); + return $this->equals( self::newMainPage() ); } /** @@ -1313,7 +1368,24 @@ class Title implements LinkTarget { * @return Title The object for the talk page */ public function getTalkPage() { - return Title::makeTitle( MWNamespace::getTalk( $this->getNamespace() ), $this->getDBkey() ); + return self::makeTitle( MWNamespace::getTalk( $this->getNamespace() ), $this->getDBkey() ); + } + + /** + * Get a Title object associated with the talk page of this article, + * if such a talk page can exist. + * + * @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() { + if ( !$this->canHaveTalkPage() ) { + return null; + } + + return $this->getTalkPage(); } /** @@ -1328,7 +1400,7 @@ class Title implements LinkTarget { if ( $this->getNamespace() == $subjectNS ) { return $this; } - return Title::makeTitle( $subjectNS, $this->getDBkey() ); + return self::makeTitle( $subjectNS, $this->getDBkey() ); } /** @@ -1336,7 +1408,7 @@ class Title implements LinkTarget { * get the talk page, if it is a subject page get the talk page * * @since 1.25 - * @throws MWException + * @throws MWException If the page doesn't have an other page * @return Title */ public function getOtherPage() { @@ -1346,6 +1418,9 @@ class Title implements LinkTarget { if ( $this->isTalkPage() ) { return $this->getSubjectPage(); } else { + if ( !$this->canHaveTalkPage() ) { + throw new MWException( "{$this->getPrefixedText()} does not have an other page" ); + } return $this->getTalkPage(); } } @@ -1382,14 +1457,16 @@ class Title implements LinkTarget { /** * Get the fragment in URL form, including the "#" character if there is one + * * @return string Fragment in URL form */ public function getFragmentForURL() { if ( !$this->hasFragment() ) { return ''; - } else { - return '#' . Title::escapeFragmentForURL( $this->getFragment() ); + } elseif ( $this->isExternal() && !$this->getTransWikiID() ) { + return '#' . Sanitizer::escapeIdForExternalInterwiki( $this->getFragment() ); } + return '#' . Sanitizer::escapeIdForLink( $this->getFragment() ); } /** @@ -1535,7 +1612,7 @@ class Title implements LinkTarget { * @since 1.20 */ public function getRootTitle() { - return Title::makeTitle( $this->getNamespace(), $this->getRootText() ); + return self::makeTitle( $this->getNamespace(), $this->getRootText() ); } /** @@ -1575,7 +1652,7 @@ class Title implements LinkTarget { * @since 1.20 */ public function getBaseTitle() { - return Title::makeTitle( $this->getNamespace(), $this->getBaseText() ); + return self::makeTitle( $this->getNamespace(), $this->getBaseText() ); } /** @@ -1611,7 +1688,7 @@ class Title implements LinkTarget { * @since 1.20 */ public function getSubpage( $text ) { - return Title::makeTitleSafe( $this->getNamespace(), $this->getText() . '/' . $text ); + return self::makeTitleSafe( $this->getNamespace(), $this->getText() . '/' . $text ); } /** @@ -1720,7 +1797,7 @@ class Title implements LinkTarget { * @see self::getLocalURL for the arguments. * @param array|string $query * @param string $proto Protocol type to use in URL - * @return String. A url suitable to use in an HTTP location header. + * @return string A url suitable to use in an HTTP location header. */ public function getFullUrlForRedirect( $query = '', $proto = PROTO_CURRENT ) { $target = $this; @@ -1875,6 +1952,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 ) { @@ -1896,6 +1975,8 @@ class Title implements LinkTarget { * NOTE: Unlike getInternalURL(), the canonical URL includes the fragment * * @see self::getLocalURL for the arguments. + * @param string $query + * @param string|bool $query2 * @return string The URL * @since 1.18 */ @@ -2646,24 +2727,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; } @@ -2847,7 +2937,7 @@ class Title implements LinkTarget { $page_id = $row->pr_page; $page_ns = $row->page_namespace; $page_title = $row->page_title; - $sources[$page_id] = Title::makeTitle( $page_ns, $page_title ); + $sources[$page_id] = self::makeTitle( $page_ns, $page_title ); # Add groups needed for each restriction type if its not already there # Make sure this restriction type still exists @@ -3172,7 +3262,7 @@ class Title implements LinkTarget { if ( $limit > -1 ) { $options['LIMIT'] = $limit; } - $this->mSubpages = TitleArray::newFromResult( + return TitleArray::newFromResult( $dbr->select( 'page', [ 'page_id', 'page_namespace', 'page_title', 'page_is_redirect' ], $conds, @@ -3180,7 +3270,6 @@ class Title implements LinkTarget { $options ) ); - return $this->mSubpages; } /** @@ -3329,7 +3418,7 @@ class Title implements LinkTarget { * @return int Int or 0 if the page doesn't exist */ public function getLatestRevID( $flags = 0 ) { - if ( !( $flags & Title::GAID_FOR_UPDATE ) && $this->mLatestID !== false ) { + if ( !( $flags & self::GAID_FOR_UPDATE ) && $this->mLatestID !== false ) { return intval( $this->mLatestID ); } if ( !$this->getArticleID( $flags ) ) { @@ -3489,7 +3578,7 @@ class Title implements LinkTarget { if ( $res->numRows() ) { $linkCache = LinkCache::singleton(); foreach ( $res as $row ) { - $titleObj = Title::makeTitle( $row->page_namespace, $row->page_title ); + $titleObj = self::makeTitle( $row->page_namespace, $row->page_title ); if ( $titleObj ) { $linkCache->addGoodLinkObjFromRow( $titleObj, $row ); $retVal[] = $titleObj; @@ -3557,9 +3646,9 @@ class Title implements LinkTarget { $linkCache = LinkCache::singleton(); foreach ( $res as $row ) { if ( $row->page_id ) { - $titleObj = Title::newFromRow( $row ); + $titleObj = self::newFromRow( $row ); } else { - $titleObj = Title::makeTitle( $row->$blNamespace, $row->$blTitle ); + $titleObj = self::makeTitle( $row->$blNamespace, $row->$blTitle ); $linkCache->addBadLinkObj( $titleObj ); } $retVal[] = $titleObj; @@ -3615,7 +3704,7 @@ class Title implements LinkTarget { $retVal = []; foreach ( $res as $row ) { - $retVal[] = Title::makeTitle( $row->pl_namespace, $row->pl_title ); + $retVal[] = self::makeTitle( $row->pl_namespace, $row->pl_title ); } return $retVal; } @@ -3673,7 +3762,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 @@ -3725,7 +3814,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 @@ -3827,7 +3916,7 @@ class Title implements LinkTarget { } # T16385: we need makeTitleSafe because the new page names may # be longer than 255 characters. - $newSubpage = Title::makeTitleSafe( $newNs, $newPageName ); + $newSubpage = self::makeTitleSafe( $newNs, $newPageName ); $success = $oldSubpage->moveTo( $newSubpage, $auth, $reason, $createRedirect, $changeTags ); if ( $success === true ) { @@ -3989,7 +4078,7 @@ class Title implements LinkTarget { # Circular reference $stack[$parent] = []; } else { - $nt = Title::newFromText( $parent ); + $nt = self::newFromText( $parent ); if ( $nt ) { $stack[$parent] = $nt->getParentCategoryTree( $children + [ $parent => 1 ] ); } 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 a03bc19412..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 ) { @@ -115,7 +117,7 @@ class WikiMap { * @return string|int Wiki's name or $wiki_id if the wiki was not found */ public static function getWikiName( $wikiID ) { - $wiki = WikiMap::getWiki( $wikiID ); + $wiki = self::getWiki( $wikiID ); if ( $wiki ) { return $wiki->getDisplayName(); @@ -166,7 +168,7 @@ class WikiMap { * @return string|bool URL or false if the wiki was not found */ public static function getForeignURL( $wikiID, $page, $fragmentId = null ) { - $wiki = WikiMap::getWiki( $wikiID ); + $wiki = self::getWiki( $wikiID ); if ( $wiki ) { return $wiki->getFullUrl( $page, $fragmentId ); @@ -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/Xml.php b/includes/Xml.php index d0164331e1..0091513125 100644 --- a/includes/Xml.php +++ b/includes/Xml.php @@ -225,7 +225,7 @@ class Xml { $selected = isset( $languages[$selected] ) ? $selected : $wgLanguageCode; $options = "\n"; foreach ( $languages as $code => $name ) { - $options .= Xml::option( "$code - $name", $code, $code == $selected ) . "\n"; + $options .= self::option( "$code - $name", $code, $code == $selected ) . "\n"; } $attrs = [ 'id' => 'wpUserLanguage', 'name' => 'wpUserLanguage' ]; @@ -235,8 +235,8 @@ class Xml { $msg = wfMessage( 'yourlanguage' ); } return [ - Xml::label( $msg->text(), $attrs['id'] ), - Xml::tags( 'select', $attrs, $options ) + self::label( $msg->text(), $attrs['id'] ), + self::tags( 'select', $attrs, $options ) ]; } @@ -400,7 +400,7 @@ class Xml { $value = false, $attribs = [] ) { return [ - Xml::label( $label, $id, $attribs ), + self::label( $label, $id, $attribs ), self::input( $name, $size, $value, [ 'id' => $id ] + $attribs ) ]; } @@ -493,7 +493,8 @@ class Xml { } /** - * Build a drop-down box from a textual list. + * Build a drop-down box from a textual list. This is a wrapper + * for Xml::listDropDownOptions() plus the XmlSelect class. * * @param string $name Name and id for the drop-down * @param string $list Correctly formatted text (newline delimited) to be @@ -507,60 +508,91 @@ class Xml { public static function listDropDown( $name = '', $list = '', $other = '', $selected = '', $class = '', $tabindex = null ) { - $optgroup = false; + $options = self::listDropDownOptions( $list, [ 'other' => $other ] ); + + $xmlSelect = new XmlSelect( $name, $name, $selected ); + $xmlSelect->addOptions( $options ); + + if ( $class ) { + $xmlSelect->setAttribute( 'class', $class ); + } + if ( $tabindex ) { + $xmlSelect->setAttribute( 'tabindex', $tabindex ); + } - $options = self::option( $other, 'other', $selected === 'other' ); + return $xmlSelect->getHTML(); + } + /** + * Build options for a drop-down box from a textual list. + * + * The result of this function can be passed to XmlSelect::addOptions() + * (to render a plain `
    ' . $headline; + } + $help['datatypes'] .= $headline; $help['datatypes'] .= $this->msg( 'api-help-datatypes' )->parseAsBlock(); if ( !isset( $tocData['main/datatypes'] ) ) { $tocnumber[$level]++; @@ -1953,16 +1958,21 @@ class ApiMain extends ApiBase { ]; } - // Add an additional span with sanitized ID - if ( !$this->getConfig()->get( 'ExperimentalHtmlIds' ) ) { - $header = Html::element( 'span', [ 'id' => Sanitizer::escapeId( 'main/credits' ) ] ) . - $header; - } $header = $this->msg( 'api-credits-header' )->parse(); - $help['credits'] .= Html::rawElement( 'h' . min( 6, $level ), - [ 'id' => 'main/credits', 'class' => 'apihelp-header' ], - $header + $id = Sanitizer::escapeIdForAttribute( 'main/credits', Sanitizer::ID_PRIMARY ); + $idFallback = Sanitizer::escapeIdForAttribute( 'main/credits', Sanitizer::ID_FALLBACK ); + $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/ApiPageSet.php b/includes/api/ApiPageSet.php index 599b3de559..cfac761c91 100644 --- a/includes/api/ApiPageSet.php +++ b/includes/api/ApiPageSet.php @@ -121,7 +121,7 @@ class ApiPageSet extends ApiBase { public function __construct( ApiBase $dbSource, $flags = 0, $defaultNamespace = NS_MAIN ) { parent::__construct( $dbSource->getMain(), $dbSource->getModuleName() ); $this->mDbSource = $dbSource; - $this->mAllowGenerator = ( $flags & ApiPageSet::DISABLE_GENERATORS ) == 0; + $this->mAllowGenerator = ( $flags & self::DISABLE_GENERATORS ) == 0; $this->mDefaultNamespace = $defaultNamespace; $this->mParams = $this->extractRequestParams(); @@ -166,7 +166,7 @@ class ApiPageSet extends ApiBase { } // Create a temporary pageset to store generator's output, // add any additional fields generator may need, and execute pageset to populate titles/pageids - $tmpPageSet = new ApiPageSet( $dbSource, ApiPageSet::DISABLE_GENERATORS ); + $tmpPageSet = new ApiPageSet( $dbSource, self::DISABLE_GENERATORS ); $generator->setGeneratorMode( $tmpPageSet ); $this->mCacheMode = $generator->getCacheMode( $generator->extractRequestParams() ); 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/ApiParse.php b/includes/api/ApiParse.php index 031fbf76a7..7cbd35377e 100644 --- a/includes/api/ApiParse.php +++ b/includes/api/ApiParse.php @@ -48,10 +48,11 @@ class ApiParse extends ApiBase { // Get parameters $params = $this->extractRequestParams(); - // No easy way to say that text & title are allowed together while the - // rest aren't, so just do it in two calls. + // No easy way to say that text and title or revid are allowed together + // while the rest aren't, so just do it in three calls. $this->requireMaxOneParameter( $params, 'page', 'pageid', 'oldid', 'text' ); $this->requireMaxOneParameter( $params, 'page', 'pageid', 'oldid', 'title' ); + $this->requireMaxOneParameter( $params, 'page', 'pageid', 'oldid', 'revid' ); $text = $params['text']; $title = $params['title']; @@ -169,6 +170,25 @@ class ApiParse extends ApiBase { if ( !$titleObj || $titleObj->isExternal() ) { $this->dieWithError( [ 'apierror-invalidtitle', wfEscapeWikiText( $title ) ] ); } + $revid = $params['revid']; + if ( $revid !== null ) { + $rev = Revision::newFromId( $revid ); + if ( !$rev ) { + $this->dieWithError( [ 'apierror-nosuchrevid', $revid ] ); + } + $pTitleObj = $titleObj; + $titleObj = $rev->getTitle(); + if ( $titleProvided ) { + if ( !$titleObj->equals( $pTitleObj ) ) { + $this->addWarning( [ 'apierror-revwrongpage', $rev->getId(), + wfEscapeWikiText( $pTitleObj->getPrefixedText() ) ] ); + } + } else { + // Consider the title derived from the revid as having + // been provided. + $titleProvided = true; + } + } $wgTitle = $titleObj; if ( $titleObj->canExist() ) { $pageObj = WikiPage::factory( $titleObj ); @@ -183,7 +203,11 @@ class ApiParse extends ApiBase { if ( !$textProvided ) { if ( $titleProvided && ( $prop || $params['generatexml'] ) ) { - $this->addWarning( 'apiwarn-parse-titlewithouttext' ); + if ( $revid !== null ) { + $this->addWarning( 'apiwarn-parse-revidwithouttext' ); + } else { + $this->addWarning( 'apiwarn-parse-titlewithouttext' ); + } } // Prevent warning from ContentHandler::makeContent() $text = ''; @@ -247,9 +271,9 @@ class ApiParse extends ApiBase { // Not cached (save or load) if ( $params['pst'] ) { - $p_result = $this->pstContent->getParserOutput( $titleObj, null, $popts ); + $p_result = $this->pstContent->getParserOutput( $titleObj, $revid, $popts ); } else { - $p_result = $this->content->getParserOutput( $titleObj, null, $popts ); + $p_result = $this->content->getParserOutput( $titleObj, $revid, $popts ); } } @@ -785,6 +809,9 @@ class ApiParse extends ApiBase { 'text' => [ ApiBase::PARAM_TYPE => 'text', ], + 'revid' => [ + ApiBase::PARAM_TYPE => 'integer', + ], 'summary' => null, 'page' => null, 'pageid' => [ diff --git a/includes/api/ApiPurge.php b/includes/api/ApiPurge.php index 83227a2fc2..35f93e076a 100644 --- a/includes/api/ApiPurge.php +++ b/includes/api/ApiPurge.php @@ -25,6 +25,7 @@ * @file */ use MediaWiki\Logger\LoggerFactory; +use MediaWiki\MediaWikiServices; /** * API interface for page purging @@ -98,7 +99,7 @@ class ApiPurge extends ApiBase { $r['linkupdate'] = true; if ( $enableParserCache ) { - $pcache = ParserCache::singleton(); + $pcache = MediaWikiServices::getInstance()->getParserCache(); $pcache->save( $p_result, $page, $popts ); } } diff --git a/includes/api/ApiQuery.php b/includes/api/ApiQuery.php index e6f3fc45f7..44a46b8d16 100644 --- a/includes/api/ApiQuery.php +++ b/includes/api/ApiQuery.php @@ -169,7 +169,7 @@ class ApiQuery extends ApiBase { * as the first, regardless of the values of $db and $groups * @param string $name Name to assign to the database connection * @param int $db One of the DB_* constants - * @param array $groups Query groups + * @param string|string[] $groups Query groups * @return IDatabase */ public function getNamedDB( $name, $db, $groups ) { @@ -245,7 +245,7 @@ class ApiQuery extends ApiBase { $cacheMode = $this->mPageSet->getCacheMode(); // Execute all unfinished modules - /** @var $module ApiQueryBase */ + /** @var ApiQueryBase $module */ foreach ( $modules as $module ) { $params = $module->extractRequestParams(); $cacheMode = $this->mergeCacheMode( @@ -381,7 +381,7 @@ class ApiQuery extends ApiBase { ]; } // Report special pages - /** @var $title Title */ + /** @var Title $title */ foreach ( $pageSet->getSpecialTitles() as $fakeId => $title ) { $vals = []; ApiQueryBase::addTitleInfo( $vals, $title ); @@ -434,7 +434,7 @@ class ApiQuery extends ApiBase { $titles = $pageSet->getGoodTitles(); if ( count( $titles ) ) { $user = $this->getUser(); - /** @var $title Title */ + /** @var Title $title */ foreach ( $titles as $title ) { if ( $title->userCan( 'read', $user ) ) { $exportTitles[] = $title; diff --git a/includes/api/ApiQueryAllUsers.php b/includes/api/ApiQueryAllUsers.php index fd95e1785a..d594ad44a0 100644 --- a/includes/api/ApiQueryAllUsers.php +++ b/includes/api/ApiQueryAllUsers.php @@ -49,6 +49,7 @@ class ApiQueryAllUsers extends ApiQueryBase { $activeUserDays = $this->getConfig()->get( 'ActiveUserDays' ); $db = $this->getDB(); + $commentStore = new CommentStore( 'ipb_reason' ); $prop = $params['prop']; if ( !is_null( $prop ) ) { @@ -263,7 +264,7 @@ class ApiQueryAllUsers extends ApiQueryBase { $data['blockedby'] = $row->ipb_by_text; $data['blockedbyid'] = (int)$row->ipb_by; $data['blockedtimestamp'] = wfTimestamp( TS_ISO_8601, $row->ipb_timestamp ); - $data['blockreason'] = $row->ipb_reason; + $data['blockreason'] = $commentStore->getComment( $row )->text; $data['blockexpiry'] = $row->ipb_expiry; } if ( $row->ipb_deleted ) { diff --git a/includes/api/ApiQueryBacklinks.php b/includes/api/ApiQueryBacklinks.php index 56cbaac3c1..54be254d59 100644 --- a/includes/api/ApiQueryBacklinks.php +++ b/includes/api/ApiQueryBacklinks.php @@ -228,7 +228,7 @@ class ApiQueryBacklinks extends ApiQueryGeneratorBase { $titleWhere = []; $allRedirNs = []; $allRedirDBkey = []; - /** @var $t Title */ + /** @var Title $t */ foreach ( $this->redirTitles as $t ) { $redirNs = $t->getNamespace(); $redirDBkey = $t->getDBkey(); diff --git a/includes/api/ApiQueryBase.php b/includes/api/ApiQueryBase.php index f8eaa84074..6987dfb13f 100644 --- a/includes/api/ApiQueryBase.php +++ b/includes/api/ApiQueryBase.php @@ -97,9 +97,7 @@ abstract class ApiQueryBase extends ApiBase { return $this->mQueryModule; } - /** - * @see ApiBase::getParent() - */ + /** @inheritDoc */ public function getParent() { return $this->getQuery(); } @@ -121,7 +119,7 @@ abstract class ApiQueryBase extends ApiBase { * See ApiQuery::getNamedDB() for more information * @param string $name Name to assign to the database connection * @param int $db One of the DB_* constants - * @param array $groups Query groups + * @param string|string[] $groups Query groups * @return IDatabase */ public function selectNamedDB( $name, $db, $groups ) { @@ -456,10 +454,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 +479,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/ApiQueryCategoryInfo.php b/includes/api/ApiQueryCategoryInfo.php index 2a3bf38718..25e9b27499 100644 --- a/includes/api/ApiQueryCategoryInfo.php +++ b/includes/api/ApiQueryCategoryInfo.php @@ -47,7 +47,7 @@ class ApiQueryCategoryInfo extends ApiQueryBase { $titles = $this->getPageSet()->getGoodAndMissingTitles(); $cattitles = []; foreach ( $categories as $c ) { - /** @var $t Title */ + /** @var Title $t */ $t = $titles[$c]; $cattitles[$c] = $t->getDBkey(); } diff --git a/includes/api/ApiQueryDeletedrevs.php b/includes/api/ApiQueryDeletedrevs.php index b68a8682c5..5dd007b49a 100644 --- a/includes/api/ApiQueryDeletedrevs.php +++ b/includes/api/ApiQueryDeletedrevs.php @@ -44,6 +44,7 @@ class ApiQueryDeletedrevs extends ApiQueryBase { $user = $this->getUser(); $db = $this->getDB(); + $commentStore = new CommentStore( 'ar_comment' ); $params = $this->extractRequestParams( false ); $prop = array_flip( $params['prop'] ); $fld_parentid = isset( $prop['parentid'] ); @@ -115,11 +116,17 @@ class ApiQueryDeletedrevs extends ApiQueryBase { $this->addFieldsIf( 'ar_rev_id', $fld_revid ); $this->addFieldsIf( 'ar_user_text', $fld_user ); $this->addFieldsIf( 'ar_user', $fld_userid ); - $this->addFieldsIf( 'ar_comment', $fld_comment || $fld_parsedcomment ); $this->addFieldsIf( 'ar_minor_edit', $fld_minor ); $this->addFieldsIf( 'ar_len', $fld_len ); $this->addFieldsIf( 'ar_sha1', $fld_sha1 ); + if ( $fld_comment || $fld_parsedcomment ) { + $commentQuery = $commentStore->getJoin(); + $this->addTables( $commentQuery['tables'] ); + $this->addFields( $commentQuery['fields'] ); + $this->addJoinConds( $commentQuery['joins'] ); + } + if ( $fld_tags ) { $this->addTables( 'tag_summary' ); $this->addJoinConds( @@ -322,12 +329,13 @@ class ApiQueryDeletedrevs extends ApiQueryBase { $anyHidden = true; } if ( Revision::userCanBitfield( $row->ar_deleted, Revision::DELETED_COMMENT, $user ) ) { + $comment = $commentStore->getComment( $row )->text; if ( $fld_comment ) { - $rev['comment'] = $row->ar_comment; + $rev['comment'] = $comment; } if ( $fld_parsedcomment ) { $title = Title::makeTitle( $row->ar_namespace, $row->ar_title ); - $rev['parsedcomment'] = Linker::formatComment( $row->ar_comment, $title ); + $rev['parsedcomment'] = Linker::formatComment( $comment, $title ); } } } diff --git a/includes/api/ApiQueryDuplicateFiles.php b/includes/api/ApiQueryDuplicateFiles.php index 2ebd6de7d6..0eaeaece73 100644 --- a/includes/api/ApiQueryDuplicateFiles.php +++ b/includes/api/ApiQueryDuplicateFiles.php @@ -91,7 +91,7 @@ class ApiQueryDuplicateFiles extends ApiQueryGeneratorBase { $sha1s = []; foreach ( $files as $file ) { - /** @var $file File */ + /** @var File $file */ $sha1s[$file->getName()] = $file->getSha1(); } @@ -114,7 +114,7 @@ class ApiQueryDuplicateFiles extends ApiQueryGeneratorBase { if ( $params['dir'] == 'descending' ) { $dupFiles = array_reverse( $dupFiles ); } - /** @var $dupFile File */ + /** @var File $dupFile */ foreach ( $dupFiles as $dupFile ) { $dupName = $dupFile->getName(); if ( $image == $dupName && $dupFile->isLocal() ) { diff --git a/includes/api/ApiQueryFilearchive.php b/includes/api/ApiQueryFilearchive.php index 7383cba6cb..212b61340a 100644 --- a/includes/api/ApiQueryFilearchive.php +++ b/includes/api/ApiQueryFilearchive.php @@ -43,6 +43,7 @@ class ApiQueryFilearchive extends ApiQueryBase { $user = $this->getUser(); $db = $this->getDB(); + $commentStore = new CommentStore( 'fa_description' ); $params = $this->extractRequestParams(); @@ -66,13 +67,19 @@ class ApiQueryFilearchive extends ApiQueryBase { $this->addFieldsIf( 'fa_sha1', $fld_sha1 ); $this->addFieldsIf( [ 'fa_user', 'fa_user_text' ], $fld_user ); $this->addFieldsIf( [ 'fa_height', 'fa_width', 'fa_size' ], $fld_dimensions || $fld_size ); - $this->addFieldsIf( 'fa_description', $fld_description ); $this->addFieldsIf( [ 'fa_major_mime', 'fa_minor_mime' ], $fld_mime ); $this->addFieldsIf( 'fa_media_type', $fld_mediatype ); $this->addFieldsIf( 'fa_metadata', $fld_metadata ); $this->addFieldsIf( 'fa_bits', $fld_bitdepth ); $this->addFieldsIf( 'fa_archive_name', $fld_archivename ); + if ( $fld_description ) { + $commentQuery = $commentStore->getJoin(); + $this->addTables( $commentQuery['tables'] ); + $this->addFields( $commentQuery['fields'] ); + $this->addJoinConds( $commentQuery['joins'] ); + } + if ( !is_null( $params['continue'] ) ) { $cont = explode( '|', $params['continue'] ); $this->dieContinueUsageIf( count( $cont ) != 3 ); @@ -165,10 +172,10 @@ class ApiQueryFilearchive extends ApiQueryBase { if ( $fld_description && Revision::userCanBitfield( $row->fa_deleted, File::DELETED_COMMENT, $user ) ) { - $file['description'] = $row->fa_description; + $file['description'] = $commentStore->getComment( $row )->text; if ( isset( $prop['parseddescription'] ) ) { $file['parseddescription'] = Linker::formatComment( - $row->fa_description, $title ); + $file['description'], $title ); } } if ( $fld_user && diff --git a/includes/api/ApiQueryGeneratorBase.php b/includes/api/ApiQueryGeneratorBase.php index f7b94c7c01..5acd75f7ef 100644 --- a/includes/api/ApiQueryGeneratorBase.php +++ b/includes/api/ApiQueryGeneratorBase.php @@ -93,12 +93,9 @@ abstract class ApiQueryGeneratorBase extends ApiQueryBase { } } - /** - * @see ApiBase::getHelpFlags() - * - * Corresponding messages: api-help-flag-generator - */ + /** @inheritDoc */ protected function getHelpFlags() { + // Corresponding messages: api-help-flag-generator $flags = parent::getHelpFlags(); $flags[] = 'generator'; return $flags; diff --git a/includes/api/ApiQueryImageInfo.php b/includes/api/ApiQueryImageInfo.php index b2664dff1e..b1df982da7 100644 --- a/includes/api/ApiQueryImageInfo.php +++ b/includes/api/ApiQueryImageInfo.php @@ -124,7 +124,7 @@ class ApiQueryImageInfo extends ApiQueryBase { } } - /** @var $img File */ + /** @var File $img */ $img = $images[$title]; if ( self::getTransformCount() >= self::TRANSFORM_LIMIT ) { @@ -199,7 +199,7 @@ class ApiQueryImageInfo extends ApiQueryBase { // Get one more to facilitate query-continue functionality $count = ( $gotOne ? 1 : 0 ); $oldies = $img->getHistory( $params['limit'] - $count + 1, $start, $params['end'] ); - /** @var $oldie File */ + /** @var File $oldie */ foreach ( $oldies as $oldie ) { if ( ++$count > $params['limit'] ) { // We've reached the extra one which shows that there are @@ -677,7 +677,7 @@ class ApiQueryImageInfo extends ApiQueryBase { ApiBase::PARAM_DFLT => -1, ApiBase::PARAM_HELP_MSG => [ 'apihelp-query+imageinfo-param-urlwidth', - ApiQueryImageInfo::TRANSFORM_LIMIT, + self::TRANSFORM_LIMIT, ], ], 'urlheight' => [ @@ -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/ApiQueryInfo.php b/includes/api/ApiQueryInfo.php index 6b8f98c7b9..bff19780f6 100644 --- a/includes/api/ApiQueryInfo.php +++ b/includes/api/ApiQueryInfo.php @@ -128,7 +128,7 @@ class ApiQueryInfo extends ApiQueryBase { * @deprecated since 1.24 */ public static function resetTokenCache() { - ApiQueryInfo::$cachedTokens = []; + self::$cachedTokens = []; } /** @@ -144,11 +144,11 @@ class ApiQueryInfo extends ApiQueryBase { } // The token is always the same, let's exploit that - if ( !isset( ApiQueryInfo::$cachedTokens['edit'] ) ) { - ApiQueryInfo::$cachedTokens['edit'] = $wgUser->getEditToken(); + if ( !isset( self::$cachedTokens['edit'] ) ) { + self::$cachedTokens['edit'] = $wgUser->getEditToken(); } - return ApiQueryInfo::$cachedTokens['edit']; + return self::$cachedTokens['edit']; } /** @@ -161,11 +161,11 @@ class ApiQueryInfo extends ApiQueryBase { } // The token is always the same, let's exploit that - if ( !isset( ApiQueryInfo::$cachedTokens['delete'] ) ) { - ApiQueryInfo::$cachedTokens['delete'] = $wgUser->getEditToken(); + if ( !isset( self::$cachedTokens['delete'] ) ) { + self::$cachedTokens['delete'] = $wgUser->getEditToken(); } - return ApiQueryInfo::$cachedTokens['delete']; + return self::$cachedTokens['delete']; } /** @@ -178,11 +178,11 @@ class ApiQueryInfo extends ApiQueryBase { } // The token is always the same, let's exploit that - if ( !isset( ApiQueryInfo::$cachedTokens['protect'] ) ) { - ApiQueryInfo::$cachedTokens['protect'] = $wgUser->getEditToken(); + if ( !isset( self::$cachedTokens['protect'] ) ) { + self::$cachedTokens['protect'] = $wgUser->getEditToken(); } - return ApiQueryInfo::$cachedTokens['protect']; + return self::$cachedTokens['protect']; } /** @@ -195,11 +195,11 @@ class ApiQueryInfo extends ApiQueryBase { } // The token is always the same, let's exploit that - if ( !isset( ApiQueryInfo::$cachedTokens['move'] ) ) { - ApiQueryInfo::$cachedTokens['move'] = $wgUser->getEditToken(); + if ( !isset( self::$cachedTokens['move'] ) ) { + self::$cachedTokens['move'] = $wgUser->getEditToken(); } - return ApiQueryInfo::$cachedTokens['move']; + return self::$cachedTokens['move']; } /** @@ -212,11 +212,11 @@ class ApiQueryInfo extends ApiQueryBase { } // The token is always the same, let's exploit that - if ( !isset( ApiQueryInfo::$cachedTokens['block'] ) ) { - ApiQueryInfo::$cachedTokens['block'] = $wgUser->getEditToken(); + if ( !isset( self::$cachedTokens['block'] ) ) { + self::$cachedTokens['block'] = $wgUser->getEditToken(); } - return ApiQueryInfo::$cachedTokens['block']; + return self::$cachedTokens['block']; } /** @@ -237,11 +237,11 @@ class ApiQueryInfo extends ApiQueryBase { } // The token is always the same, let's exploit that - if ( !isset( ApiQueryInfo::$cachedTokens['email'] ) ) { - ApiQueryInfo::$cachedTokens['email'] = $wgUser->getEditToken(); + if ( !isset( self::$cachedTokens['email'] ) ) { + self::$cachedTokens['email'] = $wgUser->getEditToken(); } - return ApiQueryInfo::$cachedTokens['email']; + return self::$cachedTokens['email']; } /** @@ -254,11 +254,11 @@ class ApiQueryInfo extends ApiQueryBase { } // The token is always the same, let's exploit that - if ( !isset( ApiQueryInfo::$cachedTokens['import'] ) ) { - ApiQueryInfo::$cachedTokens['import'] = $wgUser->getEditToken(); + if ( !isset( self::$cachedTokens['import'] ) ) { + self::$cachedTokens['import'] = $wgUser->getEditToken(); } - return ApiQueryInfo::$cachedTokens['import']; + return self::$cachedTokens['import']; } /** @@ -271,11 +271,11 @@ class ApiQueryInfo extends ApiQueryBase { } // The token is always the same, let's exploit that - if ( !isset( ApiQueryInfo::$cachedTokens['watch'] ) ) { - ApiQueryInfo::$cachedTokens['watch'] = $wgUser->getEditToken( 'watch' ); + if ( !isset( self::$cachedTokens['watch'] ) ) { + self::$cachedTokens['watch'] = $wgUser->getEditToken( 'watch' ); } - return ApiQueryInfo::$cachedTokens['watch']; + return self::$cachedTokens['watch']; } /** @@ -288,11 +288,11 @@ class ApiQueryInfo extends ApiQueryBase { } // The token is always the same, let's exploit that - if ( !isset( ApiQueryInfo::$cachedTokens['options'] ) ) { - ApiQueryInfo::$cachedTokens['options'] = $wgUser->getEditToken(); + if ( !isset( self::$cachedTokens['options'] ) ) { + self::$cachedTokens['options'] = $wgUser->getEditToken(); } - return ApiQueryInfo::$cachedTokens['options']; + return self::$cachedTokens['options']; } public function execute() { @@ -372,7 +372,7 @@ class ApiQueryInfo extends ApiQueryBase { $this->getDisplayTitle(); } - /** @var $title Title */ + /** @var Title $title */ foreach ( $this->everything as $pageid => $title ) { $pageInfo = $this->extractPageInfo( $pageid, $title ); $fit = $pageInfo !== null && $result->addValue( [ @@ -548,7 +548,7 @@ class ApiQueryInfo extends ApiQueryBase { $res = $this->select( __METHOD__ ); foreach ( $res as $row ) { - /** @var $title Title */ + /** @var Title $title */ $title = $this->titles[$row->pr_page]; $a = [ 'type' => $row->pr_type, @@ -688,7 +688,7 @@ class ApiQueryInfo extends ApiQueryBase { private function getTSIDs() { $getTitles = $this->talkids = $this->subjectids = []; - /** @var $t Title */ + /** @var Title $t */ foreach ( $this->everything as $t ) { if ( MWNamespace::isTalk( $t->getNamespace() ) ) { if ( $this->fld_subjectid ) { diff --git a/includes/api/ApiQueryLinks.php b/includes/api/ApiQueryLinks.php index 29c0b74c37..4b340912e8 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,6 @@ class ApiQueryLinks extends ApiQueryGeneratorBase { $order[] = $this->prefix . '_title' . $sort; $this->addOption( 'ORDER BY', $order ); - $this->addOption( 'USE INDEX', $this->prefix . '_from' ); $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/ApiQueryQueryPage.php b/includes/api/ApiQueryQueryPage.php index caa5f05743..46c2265501 100644 --- a/includes/api/ApiQueryQueryPage.php +++ b/includes/api/ApiQueryQueryPage.php @@ -59,7 +59,7 @@ class ApiQueryQueryPage extends ApiQueryGeneratorBase { $params = $this->extractRequestParams(); $result = $this->getResult(); - /** @var $qp QueryPage */ + /** @var QueryPage $qp */ $qp = new $this->qpMap[$params['page']](); if ( !$qp->userCanExecute( $this->getUser() ) ) { $this->dieWithError( 'apierror-specialpage-cantexecute' ); @@ -129,7 +129,7 @@ class ApiQueryQueryPage extends ApiQueryGeneratorBase { } public function getCacheMode( $params ) { - /** @var $qp QueryPage */ + /** @var QueryPage $qp */ $qp = new $this->qpMap[$params['page']](); if ( $qp->getRestriction() != '' ) { return 'private'; diff --git a/includes/api/ApiQueryRecentChanges.php b/includes/api/ApiQueryRecentChanges.php index 0dc01aabc2..63e07487da 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 ); @@ -351,6 +352,15 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase { } $this->token = $params['token']; + + if ( $this->fld_comment || $this->fld_parsedcomment || $this->token ) { + $this->commentStore = new CommentStore( 'rc_comment' ); + $commentQuery = $this->commentStore->getJoin(); + $this->addTables( $commentQuery['tables'] ); + $this->addFields( $commentQuery['fields'] ); + $this->addJoinConds( $commentQuery['joins'] ); + } + $this->addOption( 'LIMIT', $params['limit'] + 1 ); $hookData = []; @@ -500,12 +510,13 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase { $anyHidden = true; } if ( Revision::userCanBitfield( $row->rc_deleted, Revision::DELETED_COMMENT, $user ) ) { - if ( $this->fld_comment && isset( $row->rc_comment ) ) { - $vals['comment'] = $row->rc_comment; + $comment = $this->commentStore->getComment( $row )->text; + if ( $this->fld_comment ) { + $vals['comment'] = $comment; } - if ( $this->fld_parsedcomment && isset( $row->rc_comment ) ) { - $vals['parsedcomment'] = Linker::formatComment( $row->rc_comment, $title ); + if ( $this->fld_parsedcomment ) { + $vals['parsedcomment'] = Linker::formatComment( $comment, $title ); } } } diff --git a/includes/api/ApiQueryRevisions.php b/includes/api/ApiQueryRevisions.php index a4f0315e9f..2dfa42a3a4 100644 --- a/includes/api/ApiQueryRevisions.php +++ b/includes/api/ApiQueryRevisions.php @@ -166,7 +166,7 @@ class ApiQueryRevisions extends ApiQueryRevisionsBase { // For each page we will request, the user must have read rights for that page $user = $this->getUser(); $status = Status::newGood(); - /** @var $title Title */ + /** @var Title $title */ foreach ( $pageSet->getGoodTitles() as $title ) { if ( !$title->userCan( 'read', $user ) ) { $status->fatal( ApiMessage::create( diff --git a/includes/api/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..1e3b2c7398 100644 --- a/includes/api/ApiQueryWatchlist.php +++ b/includes/api/ApiQueryWatchlist.php @@ -34,6 +34,9 @@ use MediaWiki\MediaWikiServices; */ class ApiQueryWatchlist extends ApiQueryGeneratorBase { + /** @var CommentStore */ + private $commentStore; + public function __construct( ApiQuery $query, $moduleName ) { parent::__construct( $query, $moduleName, 'wl' ); } @@ -85,6 +88,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 +186,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 ); @@ -254,10 +261,7 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase { private function extractOutputData( WatchedItem $watchedItem, array $recentChangeInfo ) { /* Determine the title of the page that has been changed. */ - $title = Title::makeTitle( - $watchedItem->getLinkTarget()->getNamespace(), - $watchedItem->getLinkTarget()->getDBkey() - ); + $title = Title::newFromLinkTarget( $watchedItem->getLinkTarget() ); $user = $this->getUser(); /* Our output data. */ @@ -353,12 +357,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/ApiResult.php b/includes/api/ApiResult.php index 6734740f77..468d8783b4 100644 --- a/includes/api/ApiResult.php +++ b/includes/api/ApiResult.php @@ -287,12 +287,12 @@ class ApiResult implements ApiSerializable { * @param int $flags Zero or more OR-ed flags like OVERRIDE | ADD_ON_TOP. */ public static function setValue( array &$arr, $name, $value, $flags = 0 ) { - if ( ( $flags & ApiResult::NO_VALIDATE ) !== ApiResult::NO_VALIDATE ) { + if ( ( $flags & self::NO_VALIDATE ) !== self::NO_VALIDATE ) { $value = self::validateValue( $value ); } if ( $name === null ) { - if ( $flags & ApiResult::ADD_ON_TOP ) { + if ( $flags & self::ADD_ON_TOP ) { array_unshift( $arr, $value ); } else { array_push( $arr, $value ); @@ -301,8 +301,8 @@ class ApiResult implements ApiSerializable { } $exists = isset( $arr[$name] ); - if ( !$exists || ( $flags & ApiResult::OVERRIDE ) ) { - if ( !$exists && ( $flags & ApiResult::ADD_ON_TOP ) ) { + if ( !$exists || ( $flags & self::OVERRIDE ) ) { + if ( !$exists && ( $flags & self::ADD_ON_TOP ) ) { $arr = [ $name => $value ] + $arr; } else { $arr[$name] = $value; @@ -403,13 +403,13 @@ class ApiResult implements ApiSerializable { * @since 1.21 int $flags replaced boolean $override */ public function addValue( $path, $name, $value, $flags = 0 ) { - $arr = &$this->path( $path, ( $flags & ApiResult::ADD_ON_TOP ) ? 'prepend' : 'append' ); + $arr = &$this->path( $path, ( $flags & self::ADD_ON_TOP ) ? 'prepend' : 'append' ); - if ( $this->checkingSize && !( $flags & ApiResult::NO_SIZE_CHECK ) ) { + if ( $this->checkingSize && !( $flags & self::NO_SIZE_CHECK ) ) { // self::size needs the validated value. Then flag // to not re-validate later. $value = self::validateValue( $value ); - $flags |= ApiResult::NO_VALIDATE; + $flags |= self::NO_VALIDATE; $newsize = $this->size + self::size( $value ); if ( $this->maxSize !== false && $newsize > $this->maxSize ) { @@ -459,7 +459,7 @@ class ApiResult implements ApiSerializable { $name = array_pop( $path ); } $ret = self::unsetValue( $this->path( $path, 'dummy' ), $name ); - if ( $this->checkingSize && !( $flags & ApiResult::NO_SIZE_CHECK ) ) { + if ( $this->checkingSize && !( $flags & self::NO_SIZE_CHECK ) ) { $newsize = $this->size - self::size( $ret ); $this->size = max( $newsize, 0 ); } @@ -511,7 +511,7 @@ class ApiResult implements ApiSerializable { public function addParsedLimit( $moduleName, $limit ) { // Add value, allowing overwriting $this->addValue( 'limits', $moduleName, $limit, - ApiResult::OVERRIDE | ApiResult::NO_SIZE_CHECK ); + self::OVERRIDE | self::NO_SIZE_CHECK ); } /**@}*/ @@ -551,7 +551,7 @@ class ApiResult implements ApiSerializable { * @param int $flags Zero or more OR-ed flags like OVERRIDE | ADD_ON_TOP. */ public function addContentField( $path, $name, $flags = 0 ) { - $arr = &$this->path( $path, ( $flags & ApiResult::ADD_ON_TOP ) ? 'prepend' : 'append' ); + $arr = &$this->path( $path, ( $flags & self::ADD_ON_TOP ) ? 'prepend' : 'append' ); self::setContentField( $arr, $name, $flags ); } @@ -1156,7 +1156,7 @@ class ApiResult implements ApiSerializable { $bools = []; foreach ( $vars as $k => $v ) { if ( is_array( $v ) || is_object( $v ) ) { - $vars[$k] = ApiResult::addMetadataToResultVars( (array)$v, is_object( $v ) ); + $vars[$k] = self::addMetadataToResultVars( (array)$v, is_object( $v ) ); } elseif ( is_bool( $v ) ) { // Better here to use real bools even in BC formats $bools[] = $k; @@ -1176,22 +1176,22 @@ class ApiResult implements ApiSerializable { // Get the list of keys we actually care about. Unfortunately, we can't support // certain keys that conflict with ApiResult metadata. $keys = array_diff( array_keys( $vars ), [ - ApiResult::META_TYPE, ApiResult::META_PRESERVE_KEYS, ApiResult::META_KVP_KEY_NAME, - ApiResult::META_INDEXED_TAG_NAME, ApiResult::META_BC_BOOLS + self::META_TYPE, self::META_PRESERVE_KEYS, self::META_KVP_KEY_NAME, + self::META_INDEXED_TAG_NAME, self::META_BC_BOOLS ] ); return [ - ApiResult::META_TYPE => 'kvp', - ApiResult::META_KVP_KEY_NAME => 'key', - ApiResult::META_PRESERVE_KEYS => $keys, - ApiResult::META_BC_BOOLS => $bools, - ApiResult::META_INDEXED_TAG_NAME => 'var', + self::META_TYPE => 'kvp', + self::META_KVP_KEY_NAME => 'key', + self::META_PRESERVE_KEYS => $keys, + self::META_BC_BOOLS => $bools, + self::META_INDEXED_TAG_NAME => 'var', ] + $vars; } else { return [ - ApiResult::META_TYPE => 'array', - ApiResult::META_BC_BOOLS => $bools, - ApiResult::META_INDEXED_TAG_NAME => 'value', + self::META_TYPE => 'array', + self::META_BC_BOOLS => $bools, + self::META_INDEXED_TAG_NAME => 'value', ] + $vars; } } diff --git a/includes/api/ApiSetNotificationTimestamp.php b/includes/api/ApiSetNotificationTimestamp.php index 663416e69e..b6a0a7838e 100644 --- a/includes/api/ApiSetNotificationTimestamp.php +++ b/includes/api/ApiSetNotificationTimestamp.php @@ -150,7 +150,7 @@ class ApiSetNotificationTimestamp extends ApiBase { ); // Now, put the valid titles into the result - /** @var $title Title */ + /** @var Title $title */ foreach ( $pageSet->getTitles() as $title ) { $ns = $title->getNamespace(); $dbkey = $title->getDBkey(); diff --git a/includes/api/ApiStashEdit.php b/includes/api/ApiStashEdit.php index d03fca87a0..8a9de064fd 100644 --- a/includes/api/ApiStashEdit.php +++ b/includes/api/ApiStashEdit.php @@ -74,6 +74,9 @@ class ApiStashEdit extends ApiBase { if ( strlen( $params['stashedtexthash'] ) ) { // Load from cache since the client indicates the text is the same as last stash $textHash = $params['stashedtexthash']; + if ( !preg_match( '/^[0-9a-f]{40}$/', $textHash ) ) { + $this->dieWithError( 'apierror-stashedit-missingtext', 'missingtext' ); + } $textKey = $cache->makeKey( 'stashedit', 'text', $textHash ); $text = $cache->get( $textKey ); if ( !is_string( $text ) ) { diff --git a/includes/api/ApiUpload.php b/includes/api/ApiUpload.php index a283b5a215..cfe1968938 100644 --- a/includes/api/ApiUpload.php +++ b/includes/api/ApiUpload.php @@ -71,7 +71,7 @@ class ApiUpload extends ApiBase { $this->checkPermissions( $user ); // Fetch the file (usually a no-op) - /** @var $status Status */ + /** @var Status $status */ $status = $this->mUpload->fetchFile(); if ( !$status->isGood() ) { $this->dieStatus( $status ); @@ -772,7 +772,7 @@ class ApiUpload extends ApiBase { $this->mParams['text'] = $this->mParams['comment']; } - /** @var $file LocalFile */ + /** @var LocalFile $file */ $file = $this->mUpload->getLocalFile(); // For preferences mode, we want to watch if 'watchdefault' is set, @@ -829,7 +829,7 @@ class ApiUpload extends ApiBase { $result['result'] = 'Poll'; $result['stage'] = 'queued'; } else { - /** @var $status Status */ + /** @var Status $status */ $status = $this->mUpload->performUpload( $this->mParams['comment'], $this->mParams['text'], $watch, $this->getUser(), $this->mParams['tags'] ); diff --git a/includes/api/ApiUsageException.php b/includes/api/ApiUsageException.php index 9dc1f92bbc..47902a75b0 100644 --- a/includes/api/ApiUsageException.php +++ b/includes/api/ApiUsageException.php @@ -45,6 +45,10 @@ class UsageException extends MWException { $this->mCodestr = $codestr; $this->mExtraData = $extradata; + if ( !$this instanceof ApiUsageException ) { + wfDeprecated( __METHOD__, '1.29' ); + } + // This should never happen, so throw an exception about it that will // hopefully get logged with a backtrace (T138585) if ( !is_string( $codestr ) || $codestr === '' ) { @@ -58,6 +62,7 @@ class UsageException extends MWException { * @return string */ public function getCodeString() { + wfDeprecated( __METHOD__, '1.29' ); return $this->mCodestr; } @@ -65,6 +70,7 @@ class UsageException extends MWException { * @return array */ public function getMessageArray() { + wfDeprecated( __METHOD__, '1.29' ); $result = [ 'code' => $this->mCodestr, 'info' => $this->getMessage() @@ -146,7 +152,7 @@ class ApiUsageException extends UsageException implements ILocalizedException { } /** - * @returns ApiMessage + * @return ApiMessage */ private function getApiMessage() { $errors = $this->status->getErrorsByType( 'error' ); @@ -180,18 +186,20 @@ 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' ); return $this->getApiMessage()->getApiCode(); } /** * @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' ); $enMsg = clone $this->getApiMessage(); $enMsg->inLanguage( 'en' )->useDatabase( false ); @@ -202,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..6d7fea2c8b 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": "منع المستخدم المخرب لأجل غير مسمى بسبب التخريب، ومنع إنشاء حساب جديد وإرسال بريد إلكتروني.", @@ -116,7 +116,7 @@ "apihelp-expandtemplates-summary": "يوسع كافة القوالب ضمن نصوص الويكي.", "apihelp-expandtemplates-param-title": "عنوان الصفحة.", "apihelp-expandtemplates-param-text": "نص ويكي للتحويل.", - "apihelp-expandtemplates-param-revid": "معرف المراجعة، ل{{REVISIONID}} والمتغيرات مماثلة.", + "apihelp-expandtemplates-param-revid": "معرف المراجعة، ل{{REVISIONID}} والمتغيرات مماثلة.", "apihelp-expandtemplates-paramvalue-prop-wikitext": "نص الويكي الموسع", "apihelp-expandtemplates-paramvalue-prop-properties": "خصائص الصفحة التي تحددها الكلمات السحرية الموسعة في نص الويكي.", "apihelp-expandtemplates-paramvalue-prop-volatile": "إذا كان الإخراج سريع التأثر، ينبغي عدم استخدامه في أي مكان آخر داخل الصفحة.", @@ -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/ba.json b/includes/api/i18n/ba.json index a9e4ccdc4b..da8535d6d6 100644 --- a/includes/api/i18n/ba.json +++ b/includes/api/i18n/ba.json @@ -119,7 +119,7 @@ "apihelp-expandtemplates-summary": "wikitext ҡалыптарын аса.", "apihelp-expandtemplates-param-title": "Бит баш һүҙе", "apihelp-expandtemplates-param-text": "Конвертлау өсөн викитекст", - "apihelp-expandtemplates-param-revid": "{{REVISIONID}} һәм шуға оҡшаған алмаштар өсөн ID-ны яңынан ҡарау", + "apihelp-expandtemplates-param-revid": "{{REVISIONID}} һәм шуға оҡшаған алмаштар өсөн ID-ны яңынан ҡарау", "apihelp-expandtemplates-param-prop": "\nАлыу өсөн, мәғлүмәттең ҡайһы өлөшө\n\nИғтибар итегеҙ, әгәр бер ғәмәл дә һайланмаһа, ул саҡта һөҙөмтә вики- текстан торасаҡ, тик сығыу элекке форматта.", "apihelp-expandtemplates-paramvalue-prop-wikitext": "Киңәйтелгән викитекст", "apihelp-expandtemplates-paramvalue-prop-categories": "Бар категориялар ҙа вики текста күрһәтелмәй индерелгән мәғлүмәттәрҙе күрһәтә", diff --git a/includes/api/i18n/cs.json b/includes/api/i18n/cs.json index 1e11427aa3..fcb4af4aa8 100644 --- a/includes/api/i18n/cs.json +++ b/includes/api/i18n/cs.json @@ -94,7 +94,7 @@ "apihelp-expandtemplates-summary": "Rozbalí všechny šablony ve wikitextu.", "apihelp-expandtemplates-param-title": "Název stránky.", "apihelp-expandtemplates-param-text": "Wikitext k převedení.", - "apihelp-expandtemplates-param-revid": "ID revize, pro {{REVISIONID}} a podobné proměnné.", + "apihelp-expandtemplates-param-revid": "ID revize, pro {{REVISIONID}} a podobné proměnné.", "apihelp-feedcontributions-summary": "Vrátí kanál příspěvků uživatele.", "apihelp-feedcontributions-param-feedformat": "Formát kanálu.", "apihelp-feedcontributions-param-year": "Od roku (a dříve).", diff --git a/includes/api/i18n/de.json b/includes/api/i18n/de.json index 8a2fd5ff38..d3273db479 100644 --- a/includes/api/i18n/de.json +++ b/includes/api/i18n/de.json @@ -139,7 +139,7 @@ "apihelp-expandtemplates-summary": "Alle Vorlagen innerhalb des Wikitextes expandieren.", "apihelp-expandtemplates-param-title": "Titel der Seite.", "apihelp-expandtemplates-param-text": "Zu konvertierender Wikitext.", - "apihelp-expandtemplates-param-revid": "Versionsnummer, die für die Anzeige von {{REVISIONID}} und ähnlichen Variablen verwendet wird.", + "apihelp-expandtemplates-param-revid": "Versionsnummer, die für die Anzeige von {{REVISIONID}} und ähnlichen Variablen verwendet wird.", "apihelp-expandtemplates-param-prop": "Welche Informationen abgerufen werden sollen.\n\nBeachte bitte, dass das Ergebnis Wikitext enthält, aber die Ausgabe in einem veralteten Format ist, falls keine Werte ausgewählt sind.", "apihelp-expandtemplates-paramvalue-prop-wikitext": "Der expandierte Wikitext.", "apihelp-expandtemplates-paramvalue-prop-categories": "Kategorien in der Eingabe vorhanden, die nicht in der Ausgabe des Wikitextes vertreten sind.", @@ -292,6 +292,7 @@ "apihelp-paraminfo-example-1": "Zeige Info für [[Special:ApiHelp/parse|action=parse]], [[Special:ApiHelp/jsonfm|format=jsonfm]], [[Special:ApiHelp/query+allpages|action=query&list=allpages]], und [[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]].", "apihelp-parse-param-title": "Titel der Seite, zu der der Text gehört. Falls ausgelassen, muss $1contentmodel angegeben werden und [[API]] wird als Titel verwendet.", "apihelp-parse-param-text": "Zu parsender Text. $1title oder $1contentmodel verwenden, um das Inhaltsmodell zu steuern.", + "apihelp-parse-param-revid": "Versionskennung, für {{REVISIONID}} und ähnliche Variablen.", "apihelp-parse-param-summary": "Zu parsende Zusammenfassung.", "apihelp-parse-param-page": "Parst den Inhalt dieser Seite. Kann nicht zusammen mit $1text und $1title verwendet werden.", "apihelp-parse-param-pageid": "Parst den Inhalt dieser Seite. Überschreibt $1page.", @@ -1012,7 +1013,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 +1026,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)", @@ -1073,6 +1075,7 @@ "apiwarn-invalidcategory": "„$1“ ist keine Kategorie.", "apiwarn-invalidtitle": "„$1“ ist kein gültiger Titel.", "apiwarn-notfile": "„$1“ ist keine Datei.", + "apiwarn-parse-revidwithouttext": "revid, ohne text verwendet, und geparste Seiteneigenschaften wurden angefordert. Wolltest du oldid anstatt revid verwenden?", "apiwarn-toomanyvalues": "Es wurden zu viele Werte für den Parameter $1 angegeben. Die Obergrenze liegt bei $2.", "apiwarn-validationfailed-badpref": "Keine gültige Einstellung.", "apiwarn-validationfailed-cannotset": "Kann nicht von diesem Modul festgelegt werden.", diff --git a/includes/api/i18n/en.json b/includes/api/i18n/en.json index 3d4a100419..dbd5451409 100644 --- a/includes/api/i18n/en.json +++ b/includes/api/i18n/en.json @@ -162,7 +162,7 @@ "apihelp-expandtemplates-summary": "Expands all templates within wikitext.", "apihelp-expandtemplates-param-title": "Title of page.", "apihelp-expandtemplates-param-text": "Wikitext to convert.", - "apihelp-expandtemplates-param-revid": "Revision ID, for {{REVISIONID}} and similar variables.", + "apihelp-expandtemplates-param-revid": "Revision ID, for {{REVISIONID}} and similar variables.", "apihelp-expandtemplates-param-prop": "Which pieces of information to get.\n\nNote that if no values are selected, the result will contain the wikitext, but the output will be in a deprecated format.", "apihelp-expandtemplates-paramvalue-prop-wikitext": "The expanded wikitext.", "apihelp-expandtemplates-paramvalue-prop-categories": "Any categories present in the input that are not represented in the wikitext output.", @@ -343,9 +343,10 @@ "apihelp-paraminfo-example-2": "Show info for all submodules of [[Special:ApiHelp/query|action=query]].", "apihelp-parse-summary": "Parses content and returns parser output.", - "apihelp-parse-extended-description": "See the various prop-modules of [[Special:ApiHelp/query|action=query]] to get information from the current version of a page.\n\nThere are several ways to specify the text to parse:\n# Specify a page or revision, using $1page, $1pageid, or $1oldid.\n# Specify content explicitly, using $1text, $1title, and $1contentmodel.\n# Specify only a summary to parse. $1prop should be given an empty value.", + "apihelp-parse-extended-description": "See the various prop-modules of [[Special:ApiHelp/query|action=query]] to get information from the current version of a page.\n\nThere are several ways to specify the text to parse:\n# Specify a page or revision, using $1page, $1pageid, or $1oldid.\n# Specify content explicitly, using $1text, $1title, $1revid, and $1contentmodel.\n# Specify only a summary to parse. $1prop should be given an empty value.", "apihelp-parse-param-title": "Title of page the text belongs to. If omitted, $1contentmodel must be specified, and [[API]] will be used as the title.", "apihelp-parse-param-text": "Text to parse. Use $1title or $1contentmodel to control the content model.", + "apihelp-parse-param-revid": "Revision ID, for {{REVISIONID}} and similar variables.", "apihelp-parse-param-summary": "Summary to parse.", "apihelp-parse-param-page": "Parse the content of this page. Cannot be used together with $1text and $1title.", "apihelp-parse-param-pageid": "Parse the content of this page. Overrides $1page.", @@ -1593,6 +1594,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)", @@ -1846,6 +1848,7 @@ "apiwarn-notfile": "\"$1\" is not a file.", "apiwarn-nothumb-noimagehandler": "Could not create thumbnail because $1 does not have an associated image handler.", "apiwarn-parse-nocontentmodel": "No title or contentmodel was given, assuming $1.", + "apiwarn-parse-revidwithouttext": "revid used without text, and parsed page properties were requested. Did you mean to use oldid instead of revid?", "apiwarn-parse-titlewithouttext": "title used without text, and parsed page properties were requested. Did you mean to use page instead of title?", "apiwarn-redirectsandrevids": "Redirect resolution cannot be used together with the revids parameter. Any redirects the revids point to have not been resolved.", "apiwarn-tokennotallowed": "Action \"$1\" is not allowed for the current user.", diff --git a/includes/api/i18n/es.json b/includes/api/i18n/es.json index 6272f4e381..af3097bc20 100644 --- a/includes/api/i18n/es.json +++ b/includes/api/i18n/es.json @@ -155,7 +155,7 @@ "apihelp-expandtemplates-summary": "Expande todas las plantillas en wikitexto.", "apihelp-expandtemplates-param-title": "Título de la página.", "apihelp-expandtemplates-param-text": "Sintaxis wiki que se convertirá.", - "apihelp-expandtemplates-param-revid": "Revisión de ID, para {{REVISIONID}} y variables similares.", + "apihelp-expandtemplates-param-revid": "Revisión de ID, para {{REVISIONID}} y variables similares.", "apihelp-expandtemplates-param-prop": "Qué elementos de información se utilizan para llegar.\n\nTenga en cuenta que si no se seleccionan los valores, el resultado contendrá el wikitexto, pero la salida será en un formato obsoleto.", "apihelp-expandtemplates-paramvalue-prop-wikitext": "El wikitexto expandido.", "apihelp-expandtemplates-paramvalue-prop-categories": "Cualesquiera categorías presentes en la entrada que no están representadas en salida de wikitexto.", @@ -170,7 +170,7 @@ "apihelp-expandtemplates-param-generatexml": "Generar un árbol de análisis XML (remplazado por $1prop=parsetree).", "apihelp-expandtemplates-example-simple": "Expandir el wikitexto {{Project:Sandbox}}.", "apihelp-feedcontributions-summary": "Devuelve el canal de contribuciones de un usuario.", - "apihelp-feedcontributions-param-feedformat": "El formato del canal.", + "apihelp-feedcontributions-param-feedformat": "El formato del suministro.", "apihelp-feedcontributions-param-user": "De qué usuarios recibir contribuciones.", "apihelp-feedcontributions-param-namespace": "Espacio de nombre para filtrar las contribuciones.", "apihelp-feedcontributions-param-year": "A partir del año (y anteriores).", @@ -183,7 +183,7 @@ "apihelp-feedcontributions-param-showsizediff": "Mostrar la diferencia de tamaño entre revisiones.", "apihelp-feedcontributions-example-simple": "Devolver las contribuciones del usuario Example.", "apihelp-feedrecentchanges-summary": "Devuelve un canal de cambios recientes.", - "apihelp-feedrecentchanges-param-feedformat": "El formato del canal.", + "apihelp-feedrecentchanges-param-feedformat": "El formato del suministro.", "apihelp-feedrecentchanges-param-namespace": "Espacio de nombres al cual limitar los resultados.", "apihelp-feedrecentchanges-param-invert": "Todos los espacios de nombres menos el que está seleccionado.", "apihelp-feedrecentchanges-param-associated": "Incluir el espacio de nombres asociado (discusión o principal).", @@ -205,7 +205,7 @@ "apihelp-feedrecentchanges-example-simple": "Mostrar los cambios recientes.", "apihelp-feedrecentchanges-example-30days": "Mostrar los cambios recientes limitados a 30 días.", "apihelp-feedwatchlist-summary": "Devuelve el canal de una lista de seguimiento.", - "apihelp-feedwatchlist-param-feedformat": "El formato del canal.", + "apihelp-feedwatchlist-param-feedformat": "El formato del suministro.", "apihelp-feedwatchlist-param-hours": "Listar las páginas modificadas desde estas horas hasta ahora.", "apihelp-feedwatchlist-param-linktosections": "Enlazar directamente a las secciones cambiadas de ser posible.", "apihelp-feedwatchlist-example-default": "Mostrar el canal de la lista de seguimiento.", @@ -1048,7 +1048,7 @@ "apihelp-query+revisions+base-param-section": "Recuperar solamente el contenido de este número de sección.", "apihelp-query+revisions+base-param-contentformat": "Formato de serialización utilizado para $1difftotext y esperado para la salida de contenido.", "apihelp-query+search-summary": "Realizar una búsqueda de texto completa.", - "apihelp-query+search-param-namespace": "Buscar sólo en estos espacios de nombres.", + "apihelp-query+search-param-namespace": "Buscar solo en estos espacios de nombres.", "apihelp-query+search-param-what": "Tipo de búsqueda que realizar.", "apihelp-query+search-param-info": "Qué metadatos devolver.", "apihelp-query+search-param-prop": "Qué propiedades se devolverán:", @@ -1227,7 +1227,7 @@ "apihelp-query+watchlistraw-param-limit": "Número de resultados que devolver en cada petición.", "apihelp-query+watchlistraw-param-prop": "Qué propiedades adicionales se obtendrán:", "apihelp-query+watchlistraw-paramvalue-prop-changed": "Añade la marca de tiempo de la última notificación al usuario sobre la edición.", - "apihelp-query+watchlistraw-param-show": "Sólo listar los elementos que cumplen estos criterios.", + "apihelp-query+watchlistraw-param-show": "Mostrar solo los elementos que cumplen con estos criterios.", "apihelp-query+watchlistraw-param-owner": "Utilizado junto con $1token para acceder a la lista de seguimiento de otro usuario.", "apihelp-query+watchlistraw-param-dir": "La dirección en la que se listará.", "apihelp-query+watchlistraw-param-fromtitle": "Título (con el prefijo de espacio de nombres) desde el que se empezará a enumerar.", diff --git a/includes/api/i18n/eu.json b/includes/api/i18n/eu.json index 1e03f5d43e..32c5164ba9 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, {{REVISIONID}} 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 e419711bf5..bdaf58c7bd 100644 --- a/includes/api/i18n/fr.json +++ b/includes/api/i18n/fr.json @@ -27,7 +27,8 @@ "Trial", "Pols12", "The RedBurn", - "Umherirrender" + "Umherirrender", + "Thibaut120094" ] }, "apihelp-main-extended-description": "
    \n* [[mw:Special:MyLanguage/API:Main_page|Documentation]]\n* [[mw:Special:MyLanguage/API:FAQ|FAQ]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Liste de diffusion]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Annonces de l’API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Bogues et demandes]\n
    \nÉtat : Toutes les fonctionnalités affichées sur cette page devraient fonctionner, mais l’API est encore en cours de développement et peut changer à tout moment. Inscrivez-vous à [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ la liste de diffusion mediawiki-api-announce] pour être informé des mises à jour.\n\nRequêtes erronées : Si des requêtes erronées sont envoyées à l’API, un entête HTTP sera renvoyé avec la clé « MediaWiki-API-Error ». La valeur de cet entête et le code d’erreur renvoyé prendront la même valeur. Pour plus d’information, voyez [[mw:Special:MyLanguage/API:Errors_and_warnings|API: Errors and warnings]].\n\nTest : Pour faciliter le test des requêtes de l’API, voyez [[Special:ApiSandbox]].", @@ -172,7 +173,7 @@ "apihelp-expandtemplates-summary": "Développe tous les modèles avec du wikitexte.", "apihelp-expandtemplates-param-title": "Titre de la page.", "apihelp-expandtemplates-param-text": "Wikitexte à convertir.", - "apihelp-expandtemplates-param-revid": "ID de révision, pour {{REVISIONID}} et les variables semblables.", + "apihelp-expandtemplates-param-revid": "ID de révision, pour {{REVISIONID}} et les variables semblables.", "apihelp-expandtemplates-param-prop": "Quelles informations récupérer.\n\nNoter que si aucune valeur n’est sélectionnée, le résultat contiendra le wikitexte, mais la sortie sera dans un format désuet.", "apihelp-expandtemplates-paramvalue-prop-wikitext": "Le wikitexte développé", "apihelp-expandtemplates-paramvalue-prop-categories": "Toutes les catégories présentes dans l’entrée qui ne sont pas représentées dans la sortie du wikitexte.", @@ -336,9 +337,10 @@ "apihelp-paraminfo-example-1": "Afficher les informations pour [[Special:ApiHelp/parse|action=parse]], [[Special:ApiHelp/jsonfm|format=jsonfm]], [[Special:ApiHelp/query+allpages|action=query&list=allpages]] et [[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]].", "apihelp-paraminfo-example-2": "Afficher les informations pour tous les sous-modules de [[Special:ApiHelp/query|action=query]].", "apihelp-parse-summary": "Analyse le contenu et renvoie le résultat de l’analyseur.", - "apihelp-parse-extended-description": "Voyez les différents modules prop de [[Special:ApiHelp/query|action=query]] pour avoir de l’information sur la version actuelle d’une page.\n\nIl y a plusieurs moyens de spécifier le texte à analyser :\n# Spécifier une page ou une révision, en utilisant $1page, $1pageid ou $1oldid.\n# Spécifier explicitement un contenu, en utilisant $1text, $1title et $1contentmodel\n# Spécifier uniquement un résumé à analyser. $1prop doit recevoir une valeur vide.", + "apihelp-parse-extended-description": "Voyez les différents modules prop de [[Special:ApiHelp/query|action=query]] pour avoir de l’information sur la version actuelle d’une page.\n\nIl y a plusieurs moyens de spécifier le texte à analyser :\n# Spécifier une page ou une révision, en utilisant $1page, $1pageid ou $1oldid.\n# Spécifier explicitement un contenu, en utilisant $1text, $1title et $1contentmodel.\n# Spécifier uniquement un résumé à analyser. $1prop doit recevoir une valeur vide.", "apihelp-parse-param-title": "Titre de la page à laquelle appartient le texte. Si omis, $1contentmodel doit être spécifié, et [[API]] sera utilisé comme titre.", "apihelp-parse-param-text": "Texte à analyser. utiliser $1title ou $1contentmodel pour contrôler le modèle de contenu.", + "apihelp-parse-param-revid": "ID de révision, pour {{REVISIONID}} et autres variables semblables.", "apihelp-parse-param-summary": "Résumé à analyser.", "apihelp-parse-param-page": "Analyser le contenu de cette page. Impossible à utiliser avec $1text et $1title.", "apihelp-parse-param-pageid": "Analyser le contenu de cette page. Écrase $1page.", @@ -356,7 +358,7 @@ "apihelp-parse-paramvalue-prop-sections": "Fournit les sections dans le wikitexte analysé.", "apihelp-parse-paramvalue-prop-revid": "Ajoute l’ID de révision de la page analysée.", "apihelp-parse-paramvalue-prop-displaytitle": "Ajoute le titre du wikitexte analysé.", - "apihelp-parse-paramvalue-prop-headitems": "Désuet. Fournit les éléments à mettre dans le <head> de la page.", + "apihelp-parse-paramvalue-prop-headitems": "Fournit les éléments à mettre dans le <head> de la page.", "apihelp-parse-paramvalue-prop-headhtml": "Fournit le <head> analysé de la page.", "apihelp-parse-paramvalue-prop-modules": "Fournit les modules ResourceLoader utilisés sur la page. Pour les charger, utiliser mw.loader.using(). Soit jsconfigvars soit encodedjsconfigvars doit être demandé avec modules.", "apihelp-parse-paramvalue-prop-jsconfigvars": "Fournit les variables de configuration JavaScript spécifiques à la page. Pour les appliquer, utiliser mw.config.set().", @@ -768,7 +770,7 @@ "apihelp-query+filearchive-paramvalue-prop-mime": "Ajoute le MIME de l’image.", "apihelp-query+filearchive-paramvalue-prop-mediatype": "Ajoute le type de média de l’image.", "apihelp-query+filearchive-paramvalue-prop-metadata": "Liste les métadonnées Exif pour la version de l’image.", - "apihelp-query+filearchive-paramvalue-prop-bitdepth": "Ajoute la profondeur de bit de la version.", + "apihelp-query+filearchive-paramvalue-prop-bitdepth": "Ajoute la profondeur de bits de la version.", "apihelp-query+filearchive-paramvalue-prop-archivename": "Ajoute le nom de fichier de la version d’archive pour les versions autres que la dernière.", "apihelp-query+filearchive-example-simple": "Afficher une liste de tous les fichiers supprimés", "apihelp-query+filerepoinfo-summary": "Renvoyer les méta-informations sur les référentiels d’images configurés dans le wiki.", @@ -1007,7 +1009,7 @@ "apihelp-query+recentchanges-paramvalue-prop-ids": "Ajoute l’ID de la page, l’ID des modifications récentes et l’ID de l’ancienne et de la nouvelle révision.", "apihelp-query+recentchanges-paramvalue-prop-sizes": "Ajoute l’ancienne et la nouvelle taille de la page en octets.", "apihelp-query+recentchanges-paramvalue-prop-redirect": "Marque la modification si la page est une redirection.", - "apihelp-query+recentchanges-paramvalue-prop-patrolled": "Marque les modifications patrouillables comme patrouillées ou non.", + "apihelp-query+recentchanges-paramvalue-prop-patrolled": "Marque les modifications à relire comme relues ou pas.", "apihelp-query+recentchanges-paramvalue-prop-loginfo": "Ajoute les informations du journal (Id du journal, type de trace, etc.) aux entrées du journal.", "apihelp-query+recentchanges-paramvalue-prop-tags": "Liste les balises de l’entrée.", "apihelp-query+recentchanges-paramvalue-prop-sha1": "Ajoute la somme de contrôle du contenu pour les entrées associées à une révision.", @@ -1018,7 +1020,7 @@ "apihelp-query+recentchanges-param-toponly": "Lister uniquement les modifications qui sont de la dernière révision.", "apihelp-query+recentchanges-param-generaterevisions": "Utilisé comme générateur, générer des IDs de révision plutôt que des titres.\nLes entrées de modification récentes sans IDs de révision associé (par ex. la plupart des entrées de journaux) ne généreront rien.", "apihelp-query+recentchanges-example-simple": "Lister les modifications récentes", - "apihelp-query+recentchanges-example-generator": "Obtenir l’information de page sur les modifications récentes non patrouillées", + "apihelp-query+recentchanges-example-generator": "Obtenir l’information de page sur les modifications récentes non relues.", "apihelp-query+redirects-summary": "Renvoie toutes les redirections vers les pages données.", "apihelp-query+redirects-param-prop": "Quelles propriétés récupérer :", "apihelp-query+redirects-paramvalue-prop-pageid": "ID de page de chaque redirection.", @@ -1059,15 +1061,15 @@ "apihelp-query+revisions+base-paramvalue-prop-parsedcomment": "Commentaire analysé de l’utilisateur sur la révision.", "apihelp-query+revisions+base-paramvalue-prop-content": "Texte de la révision.", "apihelp-query+revisions+base-paramvalue-prop-tags": "Balises de la révision.", - "apihelp-query+revisions+base-paramvalue-prop-parsetree": "L’arbre d’analyse XML du contenu de la révision (nécessite le modèle de contenu $1).", + "apihelp-query+revisions+base-paramvalue-prop-parsetree": "Deprecated. Utiliser [[Special:ApiHelp/expandtemplates|action=expandtemplates]] ou [[Special:ApiHelp/parse|action=parse]] à la place. L’arbre d’analyse XML du contenu de la révision (nécessite le modèle de contenu $1).", "apihelp-query+revisions+base-param-limit": "Limiter le nombre de révisions retournées.", - "apihelp-query+revisions+base-param-expandtemplates": "Développer les modèles dans le contenu de la révision (nécessite $1prop=content).", - "apihelp-query+revisions+base-param-generatexml": "Générer l’arbre d’analyse XML pour le contenu de la révision (nécessite $1prop=content ; remplacé par $1prop=parsetree).", - "apihelp-query+revisions+base-param-parse": "Analyser le contenu de la révision (nécessite $1prop=content). Pour des raisons de performance, si cette option est utilisée, $1limit est forcé à 1.", + "apihelp-query+revisions+base-param-expandtemplates": "Utiliser [[Special:ApiHelp/expandtemplates|action=expandtemplates]] à la place. Développer les modèles dans le contenu de la révision (nécessite $1prop=content).", + "apihelp-query+revisions+base-param-generatexml": "Utiliser [[Special:ApiHelp/expandtemplates|action=expandtemplates]] ou [[Special:ApiHelp/parse|action=parse]] à la place. Générer l’arbre d’analyse XML pour le contenu de la révision (nécessite $1prop=content).", + "apihelp-query+revisions+base-param-parse": "Utiliser [[Special:ApiHelp/parse|action=parse]] à la place. Analyser le contenu de la révision (nécessite $1prop=content). Pour des raisons de performance, si cette option est utilisée, $1limit est forcé à 1.", "apihelp-query+revisions+base-param-section": "Récupérer uniquement le contenu de ce numéro de section.", - "apihelp-query+revisions+base-param-diffto": "ID de révision à prendre pour comparer chaque révision. Utiliser prev, next et cur pour la version précédente, suivante et actuelle respectivement.", - "apihelp-query+revisions+base-param-difftotext": "Texte auquel comparer chaque révision. Compare uniquement un nombre limité de révisions. Écrase $1diffto. Si $1section est positionné, seule cette section sera comparée avec ce texte.", - "apihelp-query+revisions+base-param-difftotextpst": "Effectuer une transformation avant enregistrement sur le texte avant de le comparer. Valide uniquement quand c’est utilisé avec $1difftotext.", + "apihelp-query+revisions+base-param-diffto": "Utiliser [[Special:ApiHelp/compare|action=compare]] à la place. ID de révision à prendre pour comparer chaque révision. Utiliser prev, next et cur pour la version précédente, suivante et actuelle respectivement.", + "apihelp-query+revisions+base-param-difftotext": "Utiliser [[Special:ApiHelp/compare|action=compare]] à la place. Texte auquel comparer chaque révision. Compare uniquement un nombre limité de révisions. Écrase $1diffto. Si $1section est positionné, seule cette section sera comparée avec ce texte.", + "apihelp-query+revisions+base-param-difftotextpst": "Utiliser [[Special:ApiHelp/compare|action=compare]] à la place. Effectuer une transformation avant enregistrement sur le texte avant de le comparer. Valide uniquement quand utilisé avec $1difftotext.", "apihelp-query+revisions+base-param-contentformat": "Format de sérialisation utilisé pour $1difftotext et attendu pour la sortie du contenu.", "apihelp-query+search-summary": "Effectuer une recherche en texte intégral.", "apihelp-query+search-param-search": "Rechercher les titres de page ou le contenu correspondant à cette valeur. Vous pouvez utiliser la chaîne de recherche pour invoquer des fonctionnalités de recherche spéciales, selon ce que le serveur de recherche du wiki implémente.", @@ -1184,7 +1186,7 @@ "apihelp-query+usercontribs-paramvalue-prop-size": "Ajoute la nouvelle taille de la modification.", "apihelp-query+usercontribs-paramvalue-prop-sizediff": "Ajoute le delta de taille de la modification par rapport à son parent.", "apihelp-query+usercontribs-paramvalue-prop-flags": "Ajoute les marques de la modification.", - "apihelp-query+usercontribs-paramvalue-prop-patrolled": "Marque les modifications patrouillées.", + "apihelp-query+usercontribs-paramvalue-prop-patrolled": "Marque les modifications relues.", "apihelp-query+usercontribs-paramvalue-prop-tags": "Liste les balises de la modification.", "apihelp-query+usercontribs-param-show": "Afficher uniquement les éléments correspondant à ces critères, par ex. les modifications non mineures uniquement : $2show=!minor.\n\nSi $2show=patrolled ou $2show=!patrolled est positionné, les révisions plus anciennes que [[mw:Special:MyLanguage/Manual:$wgRCMaxAge|$wgRCMaxAge]] ($1 {{PLURAL:$1|seconde|secondes}}) ne seront pas affichées.", "apihelp-query+usercontribs-param-tag": "Lister uniquement les révisions marquées avec cette balise.", @@ -1201,7 +1203,7 @@ "apihelp-query+userinfo-paramvalue-prop-rights": "Liste tous les droits qu’a l’utilisateur actuel.", "apihelp-query+userinfo-paramvalue-prop-changeablegroups": "Liste les groupes pour lesquels l’utilisateur actuel peut ajouter ou supprimer.", "apihelp-query+userinfo-paramvalue-prop-options": "Liste toutes les préférences qu’a définies l’utilisateur actuel.", - "apihelp-query+userinfo-paramvalue-prop-preferencestoken": "Obsolete. Obtenir un jeton pour modifier les préférences de l’utilisateur actuel.", + "apihelp-query+userinfo-paramvalue-prop-preferencestoken": "Obtenir un jeton pour modifier les préférences de l’utilisateur actuel.", "apihelp-query+userinfo-paramvalue-prop-editcount": "Ajoute le compteur de modifications de l’utilisateur actuel.", "apihelp-query+userinfo-paramvalue-prop-ratelimits": "Liste toutes les limites de débit s’appliquant à l’utilisateur actuel.", "apihelp-query+userinfo-paramvalue-prop-realname": "Ajoute le vrai nom de l’utilisateur actuel.", @@ -1248,7 +1250,7 @@ "apihelp-query+watchlist-paramvalue-prop-comment": "Ajoute le commentaire de la modification.", "apihelp-query+watchlist-paramvalue-prop-parsedcomment": "Ajoute le commentaire analysé de la modification.", "apihelp-query+watchlist-paramvalue-prop-timestamp": "Ajoute l’horodatage de la modification.", - "apihelp-query+watchlist-paramvalue-prop-patrol": "Marque les modifications patrouillées.", + "apihelp-query+watchlist-paramvalue-prop-patrol": "Marque les modifications relues.", "apihelp-query+watchlist-paramvalue-prop-sizes": "Ajoute les tailles ancienne et nouvelle de la page.", "apihelp-query+watchlist-paramvalue-prop-notificationtimestamp": "Ajoute l’horodatage de la dernière notification de la modification à l’utilisateur.", "apihelp-query+watchlist-paramvalue-prop-loginfo": "Ajoute l’information de trace le cas échéant.", @@ -1443,6 +1445,7 @@ "api-format-title": "Résultat de l’API de MediaWiki", "api-format-prettyprint-header": "Voici la représentation HTML du format $1. HTML est utile pour le débogage, mais inapproprié pour être utilisé dans une application.\n\nSpécifiez le paramètre format pour modifier le format de sortie. Pour voir la représentation non HTML du format $1, mettez format=$2.\n\nVoyez la [[mw:Special:MyLanguage/API|documentation complète]], ou l’[[Special:ApiHelp/main|aide de l’API]] pour plus d’information.", "api-format-prettyprint-header-only-html": "Ceci est une représentation HTML à des fins de débogage, et n’est pas approprié pour une utilisation applicative.\n\nVoir la [[mw:Special:MyLanguage/API|documentation complète]], ou l’[[Special:ApiHelp/main|aide de l’API]] pour plus d’information.", + "api-format-prettyprint-header-hyperlinked": "Voici la représentation HTML du format $1. HTML est bien pour le débogage, mais inapproprié pour être utilisé dans une application.\n\nSpécifiez le paramètre format pour modifier le format de sortie. Pour voir la représentation non HTML du format $1, mettez [$3 format=$2].\n\nVoir la [[mw:API|documentation complète]], ou l’ [[Special:ApiHelp/main|aide de l’API]] pour plus d’information.", "api-format-prettyprint-status": "Cette réponse serait retournée avec l'état HTTP $1 $2.", "api-login-fail-aborted": "L’authentification nécessite une interaction avec l’utilisateur, qui n’est pas prise en charge par action=login. Pour pouvoir se connecter avec action=login, voyez [[Special:BotPasswords]]. Pour continuer à utiliser la connexion du compte principal, voyez [[Special:ApiHelp/clientlogin|action=clientlogin]].", "api-login-fail-aborted-nobotpw": "L’authentification nécessite une interaction avec l’utilisateur, qui n’est pas prise en charge par action=login. Pour se connecter, voyez [[Special:ApiHelp/clientlogin|action=clientlogin]].", @@ -1490,6 +1493,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)", @@ -1645,7 +1649,7 @@ "apierror-notarget": "Vous n’avez pas spécifié une cible valide pour cette action.", "apierror-notpatrollable": "La révision r$1 ne peut pas être patrouillée car elle est trop ancienne.", "apierror-nouploadmodule": "Aucun module de téléversement défini.", - "apierror-offline": "Impossible de continuer du fait de problèmes de connexion au réseau. Assurez-vous d’avoir une connexion internet active et réessayez.", + "apierror-offline": "Impossible de continuer du fait de problèmes de connexion au réseau. Assurez-vous d’avoir une connexion internet opérationnelle et réessayez.", "apierror-opensearch-json-warnings": "Les avertissements ne peuvent pas être représentés dans le format JSON OpenSearch.", "apierror-pagecannotexist": "L’espace de noms ne permet pas de pages réelles.", "apierror-pagedeleted": "La page a été supprimée depuis que vous avez récupéré son horodatage.", @@ -1738,6 +1742,7 @@ "apiwarn-notfile": "« $1 » n'est pas un fichier.", "apiwarn-nothumb-noimagehandler": "Impossible de créer la vignette car $1 n’a pas de gestionnaire d’image associé.", "apiwarn-parse-nocontentmodel": "Ni title ni contentmodel n’ont été fournis, $1 est supposé.", + "apiwarn-parse-revidwithouttext": "revid utilisé sans text, et les propriétés de la page analysée ont été demandées. Vouliez-vous utiliser oldid au lieu de revid ?", "apiwarn-parse-titlewithouttext": "title utilisé sans text, et les propriétés de page analysées sont nécessaires. Voulez-vous dire que vous voulez utiliser page à la place de title ?", "apiwarn-redirectsandrevids": "La résolution de la redirection ne peut pas être utilisée avec le paramètre revids. Toutes les redirections vers lesquelles pointent revids n’ont pas été résolues.", "apiwarn-tokennotallowed": "L'action « $1 » n'est pas autorisée pour l'utilisateur actuel.", diff --git a/includes/api/i18n/gl.json b/includes/api/i18n/gl.json index 1a0cad9e9b..8e978b2f91 100644 --- a/includes/api/i18n/gl.json +++ b/includes/api/i18n/gl.json @@ -142,7 +142,7 @@ "apihelp-expandtemplates-summary": "Expandir tódolos modelos dentro do wikitexto.", "apihelp-expandtemplates-param-title": "Título da páxina.", "apihelp-expandtemplates-param-text": "Sintaxis wiki a converter.", - "apihelp-expandtemplates-param-revid": "ID de revisión, para {{REVISIONID}} e variables similares.", + "apihelp-expandtemplates-param-revid": "ID de revisión, para {{REVISIONID}} e variables similares.", "apihelp-expandtemplates-param-prop": "Pezas de información a retornar.\n\nTeña en conta que se non se selecciona ningún valor o resultado conterá o texto wiki, pero a saída estará nun formato obsoleto.", "apihelp-expandtemplates-paramvalue-prop-wikitext": "O wikitexto expandido.", "apihelp-expandtemplates-paramvalue-prop-categories": "Calquera categoría presente na entrada que non estea representada na saída do texto wiki.", @@ -1457,6 +1457,7 @@ "api-help-param-upload": "Debe ser enviado como un ficheiro importado usando multipart/form-data.", "api-help-param-multi-separate": "Separe os valores con | ou [[Special:ApiHelp/main#main/datatypes|outros]].", "api-help-param-multi-max": "O número máximo de valores é {{PLURAL:$1|$1}} ({{PLURAL:$2|$2}} para os bots).", + "api-help-param-multi-max-simple": "O número máximo de valores é {{PLURAL:1$|1$}}.", "api-help-param-multi-all": "Para especificar tódolos valores use $1.", "api-help-param-default": "Por defecto: $1", "api-help-param-default-empty": "Por defecto: (baleiro)", diff --git a/includes/api/i18n/he.json b/includes/api/i18n/he.json index 6fea7183f7..f9016c8671 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": "לאיזה משתמש לשלוח דוא\"ל.", @@ -160,12 +160,12 @@ "apihelp-expandtemplates-summary": "הרחבת כל התבניות בתוך קוד הוויקי.", "apihelp-expandtemplates-param-title": "כותרת הדף.", "apihelp-expandtemplates-param-text": "איזה קוד ויקי להמיר.", - "apihelp-expandtemplates-param-revid": "מזהה גרסה, עבור {{REVISIONID}} ומשתנים דומים.", + "apihelp-expandtemplates-param-revid": "מזהה גרסה, עבור {{REVISIONID}} ומשתנים דומים.", "apihelp-expandtemplates-param-prop": "אילו חלקי מידע לקבל.\n\nיש לשים לכך שאם לא נבחרו ערכים, התוצאה תכיל את קוד הוויקי, אבל הפלט יהיה בתסדיר מיושן.", "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 שייחודיים לדף הזה.", @@ -882,7 +882,7 @@ "apihelp-query+langlinks-param-lang": "להחזיר רק קישורי שפה עם קוד השפה הזה.", "apihelp-query+langlinks-param-title": "קישור לחיפוש. חובה להשתמש עם $1lang.", "apihelp-query+langlinks-param-dir": "באיזה כיוון לרשום.", - "apihelp-query+langlinks-param-inlanguagecode": "קוד שפה ששמות שפות מתורגמות.", + "apihelp-query+langlinks-param-inlanguagecode": "קוד שפה בשביל שמות שפות מתורגמות.", "apihelp-query+langlinks-example-simple": "קבלת קישורים בין־לשוניים מהדף Main Page.", "apihelp-query+links-summary": "החזרת כל הקישורים מהדפים שצוינו.", "apihelp-query+links-param-namespace": "להציג קישורים רק במרחבי השם האלה.", @@ -1113,7 +1113,7 @@ "apihelp-query+siteinfo-param-filteriw": "החזרה רק של עיולים מקומיים או רק של עיולים לא מקומיים ממפת הבינוויקי.", "apihelp-query+siteinfo-param-showalldb": "רשימת כל שרתי מסד הנתונים, לא רק אלה שהכי מתעכבים.", "apihelp-query+siteinfo-param-numberingroup": "רשימת מספרי משתמשים בקבוצות משתמשים.", - "apihelp-query+siteinfo-param-inlanguagecode": "קוד שפה ששמות שפות מתורגמות (מאמץ טוב ביותר) ושמות עיצובים.", + "apihelp-query+siteinfo-param-inlanguagecode": "קוד שפה בשביל שמות שפות מתורגמות (מאמץ טוב ביותר) ושמות עיצובים.", "apihelp-query+siteinfo-example-simple": "איזור מידע על האתר.", "apihelp-query+siteinfo-example-interwiki": "אחזור תחיליות בינוויקי מקומיות.", "apihelp-query+siteinfo-example-replag": "בדיקת שיהוי השכפול הנוכחי.", @@ -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/hu.json b/includes/api/i18n/hu.json index 813fb7c6ef..92182581a3 100644 --- a/includes/api/i18n/hu.json +++ b/includes/api/i18n/hu.json @@ -118,7 +118,7 @@ "apihelp-expandtemplates-summary": "Minden sablon kibontása a wikiszövegben.", "apihelp-expandtemplates-param-title": "Lap címe.", "apihelp-expandtemplates-param-text": "Az átalakítandó wikiszöveg.", - "apihelp-expandtemplates-param-revid": "Változatazonosító a {{REVISIONID}} és hasonló változók kibontásához.", + "apihelp-expandtemplates-param-revid": "Változatazonosító a {{REVISIONID}} és hasonló változók kibontásához.", "apihelp-expandtemplates-param-prop": "A lekérendő információk.\n\nHa nincs megadva érték, a válasz tartalmazni fogja a wikiszöveget, de a kimenet elavult formátumú lesz.", "apihelp-expandtemplates-paramvalue-prop-wikitext": "A kibontott wikiszöveg.", "apihelp-expandtemplates-paramvalue-prop-categories": "Bármilyen, a bemenetben szereplő kategória, ami nem jelenik meg a wikiszöveges kimenetben.", diff --git a/includes/api/i18n/it.json b/includes/api/i18n/it.json index 23b86ab659..fd88c186fb 100644 --- a/includes/api/i18n/it.json +++ b/includes/api/i18n/it.json @@ -669,6 +669,7 @@ "api-help-param-integer-minmax": "{{PLURAL:$1|1=Il valore deve essere compreso|2=I valori devono essere compresi}} tra $2 e $3.", "api-help-param-multi-separate": "Separa i valori con | o [[Special:ApiHelp/main#main/datatypes|alternativa]].", "api-help-param-multi-max": "Il numero massimo di valori è {{PLURAL:$1|$1}} ({{PLURAL:$2|$2}} per i bot).", + "api-help-param-multi-max-simple": "Il numero massimo di valori è {{PLURAL:$1|$1}}.", "api-help-param-multi-all": "Per specificare tutti i valori, utilizza $1.", "api-help-param-default": "Predefinito: $1", "api-help-param-default-empty": "Predefinito: (vuoto)", diff --git a/includes/api/i18n/ja.json b/includes/api/i18n/ja.json index c9eabbbdb6..e637be3994 100644 --- a/includes/api/i18n/ja.json +++ b/includes/api/i18n/ja.json @@ -865,6 +865,7 @@ "apihelp-setpagelanguage-extended-description-disabled": "ページ言語の変更はこのwikiでは許可されていません。\n\nこの操作を利用するには、[[mw:Special:MyLanguage/Manual:$wgPageLanguageUseDB|$wgPageLanguageUseDB]] を設定してください。", "apihelp-setpagelanguage-param-title": "言語を変更したいページのページ名。$1pageid とは同時に使用できません。", "apihelp-setpagelanguage-param-pageid": "言語を変更したいページのページID。$1title とは同時に使用できません。", + "apihelp-setpagelanguage-param-reason": "変更の理由。", "apihelp-stashedit-param-title": "編集されているページのページ名。", "apihelp-stashedit-param-section": "節番号です。先頭の節の場合は 0、新しい節の場合は newを指定します。", "apihelp-stashedit-param-sectiontitle": "新しい節の名前です。", diff --git a/includes/api/i18n/ko.json b/includes/api/i18n/ko.json index 158aa91073..edcd41b8c5 100644 --- a/includes/api/i18n/ko.json +++ b/includes/api/i18n/ko.json @@ -203,7 +203,7 @@ "apihelp-move-param-watchlist": "현재 사용자의 주시목록에서 문서를 무조건적으로 추가하거나 제거하거나, 환경 설정을 사용하거나 주시를 변경하지 않습니다.", "apihelp-move-param-ignorewarnings": "모든 경고 무시하기", "apihelp-move-example-move": "기존 제목에서 대상 제목으로 넘겨주기를 만들지 않고 이동하기.", - "apihelp-opensearch-summary": "OpenSearch 프로토콜을 이용하여 위키 검색하기", + "apihelp-opensearch-summary": "OpenSearch 프로토콜을 이용하여 위키를 검색합니다.", "apihelp-opensearch-param-search": "문자열 검색", "apihelp-opensearch-param-limit": "반환할 결과의 최대 수", "apihelp-opensearch-param-namespace": "검색할 이름공간.", @@ -571,6 +571,7 @@ "apihelp-resetpassword-example-email": "user@example.com 이메일 주소를 가진 모든 사용자에 대해 비밀번호 재설정 이메일을 보냅니다.", "apihelp-revisiondelete-summary": "판을 삭제하거나 되살립니다.", "apihelp-revisiondelete-param-reason": "삭제 또는 복구 이유.", + "apihelp-rollback-summary": "문서의 마지막 편집을 취소합니다.", "apihelp-rollback-param-tags": "되돌리기를 적용하기 위해 태그합니다.", "apihelp-rollback-param-watchlist": "현재 사용자의 주시목록에서 문서를 무조건적으로 추가하거나 제거하거나, 환경 설정을 사용하거나 주시를 변경하지 않습니다.", "apihelp-rollback-example-simple": "Project:대문 문서의 예시의 마지막 판을 되돌리기", @@ -583,6 +584,7 @@ "apihelp-setpagelanguage-param-lang": "문서를 변경할 언어의 언어 코드입니다. 문서를 위키의 기본 콘텐츠 언어로 재설정하려면 default를 사용하십시오.", "apihelp-setpagelanguage-param-reason": "변경 이유.", "apihelp-setpagelanguage-example-language": "Main Page의 언어를 바스크어로 변경합니다.", + "apihelp-stashedit-summary": "공유된 캐시에서 편집을 준비합니다.", "apihelp-stashedit-param-sectiontitle": "새 문단을 위한 제목.", "apihelp-stashedit-param-text": "문서 내용.", "apihelp-stashedit-param-contentmodel": "새 콘텐츠의 콘텐츠 모델.", @@ -714,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]]에서 가져옵니다", @@ -734,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/mk.json b/includes/api/i18n/mk.json index 1d248e24e5..5af76673fd 100644 --- a/includes/api/i18n/mk.json +++ b/includes/api/i18n/mk.json @@ -110,7 +110,7 @@ "apihelp-expandtemplates-summary": "Ги проширува сите шаблони во викитекст.", "apihelp-expandtemplates-param-title": "Наслов на страница.", "apihelp-expandtemplates-param-text": "Викитекст за претворање.", - "apihelp-expandtemplates-param-revid": "Назнака на преработката, за {{REVISIONID}} и слични променливи.", + "apihelp-expandtemplates-param-revid": "Назнака на преработката, за {{REVISIONID}} и слични променливи.", "apihelp-expandtemplates-param-prop": "Кои информации треба да ги добиете:\n\nИмајте на ум дека ако не изберете никаква вредност, исходот ќе го содржи викитекстот, но изводот ќе биде во застарен формат.", "apihelp-expandtemplates-paramvalue-prop-wikitext": "Проширениот викитекст.", "apihelp-expandtemplates-param-includecomments": "Дали во изводот да се вклучени HTML-коментари.", diff --git a/includes/api/i18n/nb.json b/includes/api/i18n/nb.json index ca3462dcc6..1c8877cb2f 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.", @@ -230,6 +245,9 @@ "apihelp-options-example-complex": "Tilbakestill alle innstillinger, og sett så skin og nickname.", "apihelp-paraminfo-summary": "Hent informasjon om API-moduler.", "apihelp-paraminfo-param-helpformat": "Format for hjelpestrenger.", + "apihelp-query+allfileusages-paramvalue-prop-title": "Legger til filens tittel.", + "apihelp-query+allfileusages-param-limit": "Hvor mange elementer som skal returneres totalt.", + "apihelp-query+allfileusages-param-dir": "Retningen det skal listes opp i.", "apihelp-json-summary": "Resultatdata i JSON-format.", "apihelp-none-summary": "Ingen resultat.", "api-help-flag-readrights": "Denne modulen krever lesetilgang.", 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/pl.json b/includes/api/i18n/pl.json index 7876b3a662..ac134f0bf3 100644 --- a/includes/api/i18n/pl.json +++ b/includes/api/i18n/pl.json @@ -57,6 +57,7 @@ "apihelp-compare-param-fromtitle": "Pierwszy tytuł do porównania.", "apihelp-compare-param-fromid": "ID pierwszej strony do porównania.", "apihelp-compare-param-fromrev": "Pierwsza wersja do porównania.", + "apihelp-compare-param-frompst": "Dokonaj zapisu wersji roboczej transformacji przeprowadzonej na fromtext.", "apihelp-compare-param-totitle": "Drugi tytuł do porównania.", "apihelp-compare-param-toid": "Numer drugiej strony do porównania.", "apihelp-compare-param-torev": "Druga wersja do porównania.", @@ -115,7 +116,7 @@ "apihelp-expandtemplates-summary": "Rozwija wszystkie szablony zawarte w wikitekście.", "apihelp-expandtemplates-param-title": "Tytuł strony.", "apihelp-expandtemplates-param-text": "Wikitext do przekonwertowania.", - "apihelp-expandtemplates-param-revid": "ID wersji, dla {{REVISIONID}} i podobnych zmiennych.", + "apihelp-expandtemplates-param-revid": "ID wersji, dla {{REVISIONID}} i podobnych zmiennych.", "apihelp-expandtemplates-paramvalue-prop-wikitext": "Rozwinięty wikitekst.", "apihelp-feedcontributions-summary": "Zwraca kanał wkładu użytkownika.", "apihelp-feedcontributions-param-feedformat": "Format danych wyjściowych.", diff --git a/includes/api/i18n/pt-br.json b/includes/api/i18n/pt-br.json index b09f57068d..68d5197388 100644 --- a/includes/api/i18n/pt-br.json +++ b/includes/api/i18n/pt-br.json @@ -158,7 +158,7 @@ "apihelp-expandtemplates-summary": "Expande todas a predefinições em texto wiki.", "apihelp-expandtemplates-param-title": "Título da página.", "apihelp-expandtemplates-param-text": "Texto wiki para converter.", - "apihelp-expandtemplates-param-revid": "ID da revisão, para {{REVISIONID}} e variáveis semelhantes.", + "apihelp-expandtemplates-param-revid": "ID da revisão, para {{REVISIONID}} e variáveis semelhantes.", "apihelp-expandtemplates-param-prop": "Quais peças de informação obter.\n\nNote que se nenhum valor for selecionado, o resultado conterá o texto wiki, mas o resultado será em um formato obsoleto.", "apihelp-expandtemplates-paramvalue-prop-wikitext": "O texto wiki expandido.", "apihelp-expandtemplates-paramvalue-prop-categories": "Quaisquer categorias presentes na entrada que não estão representadas na saída wikitext.", @@ -1477,6 +1477,7 @@ "api-help-param-upload": "Deve ser postado como um upload de arquivo usando multipart/form-data.", "api-help-param-multi-separate": "Valores separados com | ou [[Special:ApiHelp/main#main/datatypes|alternativas]].", "api-help-param-multi-max": "O número máximo de valores é {{PLURAL:$1|$1}} ({{PLURAL:$2|$2}} para bots).", + "api-help-param-multi-max-simple": "O número máximo de valores é {{PLURAL:$1|$1}}.", "api-help-param-multi-all": "Para especificar todos os valores, use $1.", "api-help-param-default": "Padrão: $1", "api-help-param-default-empty": "Padrão: (vazio)", diff --git a/includes/api/i18n/pt.json b/includes/api/i18n/pt.json index 775cd15ca9..8d4cedc9fb 100644 --- a/includes/api/i18n/pt.json +++ b/includes/api/i18n/pt.json @@ -152,7 +152,7 @@ "apihelp-expandtemplates-summary": "Expande todas as predefinições incluídas num texto em notação wiki.", "apihelp-expandtemplates-param-title": "Título da página.", "apihelp-expandtemplates-param-text": "Texto em notação wiki a converter.", - "apihelp-expandtemplates-param-revid": "Identificador da revisão, para {{REVISIONID}} e variáveis semelhantes.", + "apihelp-expandtemplates-param-revid": "Identificador da revisão, para {{REVISIONID}} e variáveis semelhantes.", "apihelp-expandtemplates-param-prop": "As informações que devem ser obtidas:\n\nNote que se não for selecionado nenhum valor, o resultado irá conter texto em notação wiki mas a saída estará num formato obsoleto.", "apihelp-expandtemplates-paramvalue-prop-wikitext": "O texto em notação wiki expandido.", "apihelp-expandtemplates-paramvalue-prop-categories": "Quaisquer categorias existentes na entrada que não estão representadas no texto em notação wiki de saída.", @@ -316,9 +316,10 @@ "apihelp-paraminfo-example-1": "Mostrar informação para [[Special:ApiHelp/parse|action=parse]], [[Special:ApiHelp/jsonfm|format=jsonfm]], [[Special:ApiHelp/query+allpages|action=query&list=allpages]] e [[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]].", "apihelp-paraminfo-example-2": "Mostrar informação de todos os módulos de [[Special:ApiHelp/query|action=query]].", "apihelp-parse-summary": "Faz a análise sintática do conteúdo e devolve o resultado da análise.", - "apihelp-parse-extended-description": "Consulte os vários módulos disponíveis no parâmetro prop de [[Special:ApiHelp/query|action=query]] para obter informação da versão atual de uma página.\n\nHá várias formas de especificar o texto a analisar:\n# Especificar uma página ou revisão, usando $1page, $1pageid ou $1oldid.\n# Especificar o conteúdo de forma explícita, usando $1text, $1title e $1contentmodel.\n# Especificar só um resumo a analisar. $1prop deve receber o valor vazio.", + "apihelp-parse-extended-description": "Consulte os vários módulos disponíveis no parâmetro prop de [[Special:ApiHelp/query|action=query]] para obter informação da versão atual de uma página.\n\nHá várias formas de especificar o texto a analisar:\n# Especificar uma página ou revisão, usando $1page, $1pageid ou $1oldid.\n# Especificar o conteúdo de forma explícita, usando $1text, $1title, $1revid e $1contentmodel.\n# Especificar só um resumo a analisar. $1prop deve receber o valor vazio.", "apihelp-parse-param-title": "Título da página à qual o texto pertence. Se omitido, é preciso especificar $1contentmodel e deve usar [[API]] como título.", "apihelp-parse-param-text": "Texto a analisar. Usar $1title ou $1contentmodel para controlar o modelo de conteúdo.", + "apihelp-parse-param-revid": "Identificador da revisão, para {{REVISIONID}} e variáveis semelhantes.", "apihelp-parse-param-summary": "Resumo a analisar.", "apihelp-parse-param-page": "Analisar o conteúdo desta página. Não pode ser usado em conjunto com $1text e $1title.", "apihelp-parse-param-pageid": "Analisar o conteúdo desta página. Tem precedência sobre $1page.", @@ -1471,6 +1472,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)", @@ -1719,6 +1721,7 @@ "apiwarn-notfile": "\"$1\" não é um ficheiro.", "apiwarn-nothumb-noimagehandler": "Não foi possível criar a miniatura porque $1 não tem uma rotina associada de tratamento de imagens.", "apiwarn-parse-nocontentmodel": "Não foi fornecido um title ou contentmodel, será assumido $1.", + "apiwarn-parse-revidwithouttext": "revid foi usado sem text, e foram pedidas as propriedades da página analisada. Pretendia usar oldid em vez de revid?", "apiwarn-parse-titlewithouttext": "title foi usado sem text, e foram pedidas as propriedades da página analisada. Pretendia usar page em vez de title?", "apiwarn-redirectsandrevids": "Resolução de redirecionamentos não pode ser usada em conjunto com o parâmetro revids. Quaisquer redirecionamentos para os quais revids aponta não foram resolvidos.", "apiwarn-tokennotallowed": "A operação \"$1\" não é permitida para o utilizador atual.", diff --git a/includes/api/i18n/qqq.json b/includes/api/i18n/qqq.json index 4336c29349..6aaaac70f6 100644 --- a/includes/api/i18n/qqq.json +++ b/includes/api/i18n/qqq.json @@ -159,7 +159,7 @@ "apihelp-expandtemplates-summary": "{{doc-apihelp-summary|expandtemplates}}", "apihelp-expandtemplates-param-title": "{{doc-apihelp-param|expandtemplates|title}}", "apihelp-expandtemplates-param-text": "{{doc-apihelp-param|expandtemplates|text}}", - "apihelp-expandtemplates-param-revid": "{{doc-apihelp-param|expandtemplates|revid}}\n{{doc-important|Do not translate <nowiki>{{REVISIONID}}</nowiki>}}", + "apihelp-expandtemplates-param-revid": "{{doc-apihelp-param|expandtemplates|revid}}", "apihelp-expandtemplates-param-prop": "{{doc-apihelp-param|expandtemplates|prop|paramvalues=1}}", "apihelp-expandtemplates-paramvalue-prop-wikitext": "{{doc-apihelp-paramvalue|expandtemplates|prop|wikitext}}", "apihelp-expandtemplates-paramvalue-prop-categories": "{{doc-apihelp-paramvalue|expandtemplates|prop|categories}}", @@ -326,6 +326,7 @@ "apihelp-parse-extended-description": "{{doc-apihelp-extended-description|parse}}", "apihelp-parse-param-title": "{{doc-apihelp-param|parse|title}}", "apihelp-parse-param-text": "{{doc-apihelp-param|parse|text}}", + "apihelp-parse-param-revid": "{{doc-apihelp-param|parse|revid}}", "apihelp-parse-param-summary": "{{doc-apihelp-param|parse|summary}}", "apihelp-parse-param-page": "{{doc-apihelp-param|parse|page}}", "apihelp-parse-param-pageid": "{{doc-apihelp-param|parse|pageid}}", @@ -1483,7 +1484,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}}", @@ -1734,6 +1736,7 @@ "apiwarn-notfile": "{{doc-apierror}}\n\nParameters:\n* $1 - Supplied file name.", "apiwarn-nothumb-noimagehandler": "{{doc-apierror}}\n\nParameters:\n* $1 - File name.", "apiwarn-parse-nocontentmodel": "{{doc-apierror}}\n\nParameters:\n* $1 - Content model being assumed.", + "apiwarn-parse-revidwithouttext": "{{doc-apierror}}", "apiwarn-parse-titlewithouttext": "{{doc-apierror}}", "apiwarn-redirectsandrevids": "{{doc-apierror}}", "apiwarn-tokennotallowed": "{{doc-apierror}}\n\nParameters:\n* $1 - Token type being requested, typically named after the action requiring the token.", diff --git a/includes/api/i18n/ru.json b/includes/api/i18n/ru.json index 95e69e68fc..1bb70959d4 100644 --- a/includes/api/i18n/ru.json +++ b/includes/api/i18n/ru.json @@ -171,7 +171,7 @@ "apihelp-expandtemplates-summary": "Разворачивание всех шаблонов в вики-текст.", "apihelp-expandtemplates-param-title": "Заголовок страницы.", "apihelp-expandtemplates-param-text": "Конвертируемый вики-текст.", - "apihelp-expandtemplates-param-revid": "Номер версии, для {{REVISIONID}} и аналогичных переменных.", + "apihelp-expandtemplates-param-revid": "Номер версии, для {{REVISIONID}} и аналогичных переменных.", "apihelp-expandtemplates-param-prop": "Какую информацию включить.\n\nОбратите внимание, что если ни одно из значений не выбрано, результат будет содержать вики-текст, но вывод будет в устаревшем формате.", "apihelp-expandtemplates-paramvalue-prop-wikitext": "Расширенный вики-текст.", "apihelp-expandtemplates-paramvalue-prop-categories": "Любые категории, присутствующие во входных данных, но не попавшие в вики-текстовый результат.", @@ -335,9 +335,10 @@ "apihelp-paraminfo-example-1": "Показать информацию для [[Special:ApiHelp/parse|action=parse]], [[Special:ApiHelp/jsonfm|format=jsonfm]], [[Special:ApiHelp/query+allpages|action=query&list=allpages]], и [[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]].", "apihelp-paraminfo-example-2": "Показать информацию для всех подмодулей [[Special:ApiHelp/query|action=query]].", "apihelp-parse-summary": "Парсит содержимое и возвращает результат парсинга.", - "apihelp-parse-extended-description": "См. различные prop-модули [[Special:ApiHelp/query|action=query]] для получения информации о текущей версии страницы.\n\nЕсть несколько способов указать текст для парсинга:\n# Указать страницы или версию, используя $1page, $1pageid или $1oldid.\n# Явно указать содержимое, используя $1text, $1title и $1contentmodel.\n# Указать описание правки. Параметру $1prop должно быть присвоено пустое значение.", + "apihelp-parse-extended-description": "См. различные prop-модули [[Special:ApiHelp/query|action=query]] для получения информации о текущей версии страницы.\n\nЕсть несколько способов указать текст для парсинга:\n# Указать страницу или версию, используя $1page, $1pageid или $1oldid.\n# Явно указать содержимое, используя $1text, $1title и $1contentmodel.\n# Указать описание правки. Параметру $1prop должно быть присвоено пустое значение.", "apihelp-parse-param-title": "Название страницы, которой принадлежит текст. Если опущено, должен быть указан параметр $1contentmodel, и в качестве заголовка будет использовано [[API]].", "apihelp-parse-param-text": "Распарсиваемый текст. Используйте $1title или $1contentmodel для управления моделью содержимого.", + "apihelp-parse-param-revid": "Номер версии, для {{REVISIONID}} и аналогичных переменных.", "apihelp-parse-param-summary": "Анализируемое описание правки.", "apihelp-parse-param-page": "Распарсить содержимое этой страницы. Не может быть использовано совместно с $1text и $1title.", "apihelp-parse-param-pageid": "Анализировать содержимое этой страницы. Переопределяет $1page.", @@ -1429,16 +1430,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]] для получения дополнительной информации.", @@ -1490,6 +1491,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": "По умолчанию: (пусто)", @@ -1738,6 +1740,7 @@ "apiwarn-notfile": "«$1» не является файлом.", "apiwarn-nothumb-noimagehandler": "Невозможно создать эскиз, поскольку у $1 нет связанного обработчика изображений.", "apiwarn-parse-nocontentmodel": "Параметры title или contentmodel не заданы, предполагается $1.", + "apiwarn-parse-revidwithouttext": "revid использован без text, при этом запрошены распарсенные свойства страницы. Возможно, вы хотели использовать oldid вместо revid?", "apiwarn-parse-titlewithouttext": "title использован без text, при этом запрошены распарсенные свойства страницы. Возможно, вы хотели использовать page вместо title?", "apiwarn-redirectsandrevids": "Раскрытие перенаправлений не может быть использовано вместе с параметром revids. Все перенаправления на точку revids не должны быть раскрыты.", "apiwarn-tokennotallowed": "Действие «$1» не разрешено для текущего участника.", diff --git a/includes/api/i18n/sv.json b/includes/api/i18n/sv.json index 086a726a0e..025254d1c0 100644 --- a/includes/api/i18n/sv.json +++ b/includes/api/i18n/sv.json @@ -135,7 +135,7 @@ "apihelp-expandtemplates-summary": "Expanderar alla mallar inom wikitext.", "apihelp-expandtemplates-param-title": "Sidans rubrik.", "apihelp-expandtemplates-param-text": "Wikitext att konvertera.", - "apihelp-expandtemplates-param-revid": "Revision ID, för {{REVISIONID}} och liknande variabler.", + "apihelp-expandtemplates-param-revid": "Revision ID, för {{REVISIONID}} och liknande variabler.", "apihelp-expandtemplates-paramvalue-prop-wikitext": "Den expanderade wikitexten.", "apihelp-expandtemplates-param-includecomments": "Om HTML-kommentarer skall inkluderas i utdata.", "apihelp-expandtemplates-param-generatexml": "Generera ett XML tolknings träd (ersatt av $1prop=parsetree).", diff --git a/includes/api/i18n/uk.json b/includes/api/i18n/uk.json index e9a7f9b154..7dcc82a916 100644 --- a/includes/api/i18n/uk.json +++ b/includes/api/i18n/uk.json @@ -157,7 +157,7 @@ "apihelp-expandtemplates-summary": "Розгортає усі шаблони в межах вікірозмітки.", "apihelp-expandtemplates-param-title": "Заголовок сторінки.", "apihelp-expandtemplates-param-text": "Вікітекст для перетворення.", - "apihelp-expandtemplates-param-revid": "ID версії, для {{REVISIONID}} і подібних змінних.", + "apihelp-expandtemplates-param-revid": "ID версії, для {{REVISIONID}} і подібних змінних.", "apihelp-expandtemplates-param-prop": "Яку інформацію отримувати.\n\nЗважте, що якщо не вибрано значень, результат міститиме вікітекст, але буде в застарілому форматі.", "apihelp-expandtemplates-paramvalue-prop-wikitext": "Розгорнений вікітекст.", "apihelp-expandtemplates-paramvalue-prop-categories": "Будь-які категорії, наявні у джерелі, але не виведені у вікітексті результату.", @@ -324,6 +324,7 @@ "apihelp-parse-extended-description": "Див. різні prop-модулі [[Special:ApiHelp/query|action=query]], щоб отримати інформацію з поточної версії сторінки.\n\nЄ декілька способів вказати текст для аналізу:\n# Вказати сторінку або версію, використавши $1page, $1pageid або $1oldid.\n# Вказати безпосередньо, використавши $1text, $1title і $1contentmodel.\n# Вказати лише підсумок аналізу. $1prop повинен мати порожнє значення.", "apihelp-parse-param-title": "Назва сторінки, якій належить текст. Якщо пропущена, має бути вказано $1contentmodel, а як назву буде вжито [[API]].", "apihelp-parse-param-text": "Текст для аналізу. Використати $1title або $1contentmodel для контролю моделі вмісту.", + "apihelp-parse-param-revid": "Ідентифікатор версії, для {{REVISIONID}} та подібних змінних.", "apihelp-parse-param-summary": "Підсумок для аналізу.", "apihelp-parse-param-page": "Аналізувати вміст цієї сторінки. Не можна використати разом з $1text і $1title.", "apihelp-parse-param-pageid": "Аналізувати вміст цієї сторінки. Перевизначає $1page.", @@ -341,7 +342,7 @@ "apihelp-parse-paramvalue-prop-sections": "Дає розділи в аналізованому вікітексті.", "apihelp-parse-paramvalue-prop-revid": "Додає ідентифікатор версії аналізованої сторінки.", "apihelp-parse-paramvalue-prop-displaytitle": "Додає заголовок аналізованого вікітексту.", - "apihelp-parse-paramvalue-prop-headitems": "Застаріло. Дає елементи для вставки в <head> сторінки.", + "apihelp-parse-paramvalue-prop-headitems": "Дає елементи для вставки в <head> сторінки.", "apihelp-parse-paramvalue-prop-headhtml": "Дає проаналізований <head> сторінки.", "apihelp-parse-paramvalue-prop-modules": "Дає модулі ResourceLoader, використані на сторінці. Щоб завантажити, використовуйте mw.loader.using(). Чи jsconfigvars, чи encodedjsconfigvars має бути запитано разом з modules.", "apihelp-parse-paramvalue-prop-jsconfigvars": "Дає змінні конфігурації JavaScript, притаманні для сторінки. Щоб застосувати, використайте mw.config.set().", @@ -1072,8 +1073,8 @@ "apihelp-query+search-paramvalue-prop-sectiontitle": "Додає заголовок відповідного розділу.", "apihelp-query+search-paramvalue-prop-categorysnippet": "Додає проаналізований уривок відповідної категорії.", "apihelp-query+search-paramvalue-prop-isfilematch": "Додає перемикач, який показує, є пошук знайшов вміст файлу.", - "apihelp-query+search-paramvalue-prop-score": "Застаріло й інгорується.", - "apihelp-query+search-paramvalue-prop-hasrelated": "Застаріло й інгорується.", + "apihelp-query+search-paramvalue-prop-score": "Інгорується.", + "apihelp-query+search-paramvalue-prop-hasrelated": "Ігнорується.", "apihelp-query+search-param-limit": "Скільки всього сторінок виводити.", "apihelp-query+search-param-interwiki": "Включати інтервікі в результатах пошуку, якщо доступно.", "apihelp-query+search-param-backend": "Який бекенд пошуку використовувати, якщо не за замовчуванням.", @@ -1186,7 +1187,7 @@ "apihelp-query+userinfo-paramvalue-prop-rights": "Перелічує усі права, які має поточний користувач.", "apihelp-query+userinfo-paramvalue-prop-changeablegroups": "Перелічує групи, у які користувач може додавати і з яких вилучати.", "apihelp-query+userinfo-paramvalue-prop-options": "Перелічує усі налаштування, які поточний користувач встановив.", - "apihelp-query+userinfo-paramvalue-prop-preferencestoken": "Застаріле. Отримати знак для зміни налаштувань поточного користувача.", + "apihelp-query+userinfo-paramvalue-prop-preferencestoken": "Отримати токен для зміни налаштувань поточного користувача.", "apihelp-query+userinfo-paramvalue-prop-editcount": "Додає кількість редагувань поточного користувача.", "apihelp-query+userinfo-paramvalue-prop-ratelimits": "Перелічує усі ліміти оцінок, застосовні до поточного користувача.", "apihelp-query+userinfo-paramvalue-prop-realname": "Додає справжнє ім'я користувача.", @@ -1430,6 +1431,10 @@ "api-format-prettyprint-header-only-html": "Це HTML-представлення призначене для налагодження, однак не придатне для прикладного використання.\n\nДив. [[mw:Special:MyLanguage/API|повну документацію]], або [[Special:ApiHelp/main|довідку з API]] для детальнішої інформації.", "api-format-prettyprint-header-hyperlinked": "Це — HTML-репрезентація формату $1. HTML добрий для виправлення помилок, але непридатний для використання додатків.\n\nВкажіть параметр format, щоб змінити формат виводу. Щоб побачити репрезентацію формату $1 не у формі HTML, вкажіть [$3 format=$2].\nДив. [[mw:API|повну документацію]], або [[Special:ApiHelp/main|довідку API]], щоб дізнатися більше.", "api-format-prettyprint-status": "Відповідь повернеться із HTTP-статусом $1 $2.", + "api-login-fail-aborted": "Автентифікація вимагає взаємодії з користувачем, яка не підтримується action=login. Щоб мати змогу увійти в систему за допомогою action=login, див. [[Special:BotPasswords]]. Щоб продовжити використовувати вхід у систему через основний обліковий запис, див.[[Special:ApiHelp/clientlogin|action=clientlogin]].", + "api-login-fail-aborted-nobotpw": "Автентифікація вимагає взаємодії з користувачем, яка не підтримується action=login. Щоб увійти в систему, див. [[Special:ApiHelp/clientlogin|action=clientlogin]].", + "api-login-fail-badsessionprovider": "Неможливо увійти в систему при використанні $1.", + "api-login-fail-sameorigin": "Неможливо увійти в систему, коли не застосовується ''політика того ж походження''.", "api-pageset-param-titles": "Список назв над якими працювати.", "api-pageset-param-pageids": "Список ідентифікаторів сторінок над якими працювати.", "api-pageset-param-revids": "Список ідентифікаторів версій над якими працювати.", @@ -1440,6 +1445,7 @@ "api-help-title": "Довідка API MediaWiki", "api-help-lead": "Це автоматично генерована сторінка документації API MediaWiki.\n\nДокументація та приклади: https://www.mediawiki.org/wiki/API", "api-help-main-header": "Головний модуль", + "api-help-undocumented-module": "Для модуля $1 відсутня документація.", "api-help-flag-deprecated": "Цей модуль є застарілим.", "api-help-flag-internal": "Цей модуль є внутрішнім або нестабільним. Його робота може бути змінена без сповіщення.", "api-help-flag-readrights": "Цей модуль вимагає прав на читання.", @@ -1471,6 +1477,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": "За замовчуванням: (пусто)", @@ -1542,6 +1549,8 @@ "apierror-changeauth-norequest": "Не вдалося створити запит на зміну.", "apierror-chunk-too-small": "Мінімальний розмір шматка становить $1 {{PLURAL:$1|байт|байти|байтів}} для некінцевих шматків.", "apierror-cidrtoobroad": "$1 CIDR-діапазони, ширші ніж /$2, недозволені.", + "apierror-compare-no-title": "Неможливо попередньо зберегти трансформацію без назви. Спробуйте зазначити fromtitle або totitle.", + "apierror-compare-relative-to-nothing": "Відсутня версія 'from', якої б стосувалося torelative.", "apierror-contentserializationexception": "Невдача серіалізації вмісту: $1", "apierror-contenttoobig": "Наданий Вами вміст перевищує ліміт у $1 {{PLURAL:$1|кілобайт|кілобайти|кілобайтів}} розміру сторінки.", "apierror-copyuploadbaddomain": "Завантаження за URL-адресою недозволені з цього домену.", @@ -1585,10 +1594,12 @@ "apierror-maxlag": "Очікування на $2: затримка $1 {{PLURAL:$1|секунда|секунди|секунд}}.", "apierror-mimesearchdisabled": "MIME-пошук вимкнений у скупому режимі.", "apierror-missingcontent-pageid": "Відсутній вміст для сторінки з ідентифікатором $1.", + "apierror-missingcontent-revid": "Відсутній контент для ідентифікатора версії $1.", "apierror-missingparam-at-least-one-of": "{{PLURAL:$2|Параметр|Щонайменше один параметрів}} $1 є обов'язковим.", "apierror-missingparam-one-of": "{{PLURAL:$2|Параметр|Один з параметрів}} $1 є обов'язковим.", "apierror-missingparam": "Параметр $1 має бути заповнений.", "apierror-missingrev-pageid": "Немає поточної версії сторінки з ідентифікатором $1.", + "apierror-missingrev-title": "Для назви $1 відсутня поточна версія.", "apierror-missingtitle-createonly": "Відсутні назви можна захистити тільки через create.", "apierror-missingtitle": "Вказана Вами сторінка не існує.", "apierror-missingtitle-byname": "Сторінка $1 не існує.", @@ -1692,6 +1703,7 @@ "apiwarn-badurlparam": "Не вдалося парсити $1urlparam для $2. Використовується лише ширина і висота.", "apiwarn-badutf8": "Значення, вказане для $1, містить недійсні або ненормалізовані дані. Текстові дані мають бути дійсними, NFC-нормалізований Unicode без контрольних символів C0, окрім HT (\\t), LF (\\n), і CR (\\r).", "apiwarn-checktoken-percentencoding": "Перевірте, чи символи, такі як «+» у токені, пройшли правильне процентне кодування в URL.", + "apiwarn-compare-nocontentmodel": "Не вдалося визначити контентну модель, припускаємо $1.", "apiwarn-deprecation-deletedrevs": "list=deletedrevs є застарілим. Будь ласка, використовуйте замість нього prop=deletedrevisions або list=alldeletedrevisions.", "apiwarn-deprecation-expandtemplates-prop": "Оскільки не задано жодних значень для параметра prop, як вихідні дані було використано старий формат. Цей формат є застарілим, і в майбутньому параметру prop буде задано стандартне значення, наслідком чого стане те, що завжди використовуватиметься новий формат.", "apiwarn-deprecation-httpsexpected": "Використано HTTP, тоді як очікувалося використання HTTPS.", @@ -1714,6 +1726,7 @@ "apiwarn-notfile": "«$1» не є файлом.", "apiwarn-nothumb-noimagehandler": "Не вдалося створити мініатюру, оскільки $1 не має пов'язаного обробника зображень.", "apiwarn-parse-nocontentmodel": "Не задано title або contentmodel, буде використано $1.", + "apiwarn-parse-revidwithouttext": "revid використано без text, та запитано синтаксично проаналізовані властивості сторінки. Можливо, Ви хотіли використати oldid замість revid?", "apiwarn-parse-titlewithouttext": "title використано без text, і надіслано запит на оброблені властивості сторінки. Може \nВи хотіли використати page замість title?", "apiwarn-redirectsandrevids": "Вирішення перенаправлень не може використовуватись разом з параметром revids. Усі перенаправлення, на які вказує revids, не було вирішено.", "apiwarn-tokennotallowed": "Дія «$1» недозволена для поточного користувача.", diff --git a/includes/api/i18n/zh-hans.json b/includes/api/i18n/zh-hans.json index d8fbfe0ecb..5daadb1c2c 100644 --- a/includes/api/i18n/zh-hans.json +++ b/includes/api/i18n/zh-hans.json @@ -167,7 +167,7 @@ "apihelp-expandtemplates-summary": "展开wiki文本中的所有模板。", "apihelp-expandtemplates-param-title": "页面标题。", "apihelp-expandtemplates-param-text": "要转换的wiki文本。", - "apihelp-expandtemplates-param-revid": "修订版本ID,用于{{REVISIONID}}和类似变体。", + "apihelp-expandtemplates-param-revid": "修订版本ID,用于{{REVISIONID}}和类似变体。", "apihelp-expandtemplates-param-prop": "要获取的那条信息。\n\n注意如果没有选定值,结果将包含wiki文本,但将以弃用的格式显示。", "apihelp-expandtemplates-paramvalue-prop-wikitext": "展开后的wiki文本。", "apihelp-expandtemplates-paramvalue-prop-categories": "任何在输出中提供的,未在wiki文本输出中表现的分类。", @@ -184,7 +184,7 @@ "apihelp-feedcontributions-summary": "返回用户贡献纲要。", "apihelp-feedcontributions-param-feedformat": "纲要的格式。", "apihelp-feedcontributions-param-user": "获取哪些用户的贡献。", - "apihelp-feedcontributions-param-namespace": "过滤哪些命名空间的贡献。", + "apihelp-feedcontributions-param-namespace": "过滤哪些名字空间的贡献。", "apihelp-feedcontributions-param-year": "起始年份(及更早)。", "apihelp-feedcontributions-param-month": "起始月份(及更早)。", "apihelp-feedcontributions-param-tagfilter": "过滤有这些标签的贡献者。", @@ -196,9 +196,9 @@ "apihelp-feedcontributions-example-simple": "返回用户Example的贡献。", "apihelp-feedrecentchanges-summary": "返回最近更改的摘要。", "apihelp-feedrecentchanges-param-feedformat": "纲要的格式。", - "apihelp-feedrecentchanges-param-namespace": "用于限制结果的命名空间。", - "apihelp-feedrecentchanges-param-invert": "除所选定者外的所有命名空间。", - "apihelp-feedrecentchanges-param-associated": "包括相关的命名空间(讨论页或主要)。", + "apihelp-feedrecentchanges-param-namespace": "用于限制结果的名字空间。", + "apihelp-feedrecentchanges-param-invert": "除所选定者外的所有名字空间。", + "apihelp-feedrecentchanges-param-associated": "包括相关的名字空间(讨论页或主要)。", "apihelp-feedrecentchanges-param-days": "用于限制结果的天数。", "apihelp-feedrecentchanges-param-limit": "所要返回结果的最大数目。", "apihelp-feedrecentchanges-param-from": "显示自那时以来的更改。", @@ -331,9 +331,10 @@ "apihelp-paraminfo-example-1": "显示[[Special:ApiHelp/parse|action=parse]]、[[Special:ApiHelp/jsonfm|format=jsonfm]]、[[Special:ApiHelp/query+allpages|action=query&list=allpages]]和[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]的信息。", "apihelp-paraminfo-example-2": "显示[[Special:ApiHelp/query|action=query]]的所有子模块的信息。", "apihelp-parse-summary": "解析内容并返回解析器输出。", - "apihelp-parse-extended-description": "参见[[Special:ApiHelp/query|action=query]]的各种prop-module以从页面的当前版本获得信息。\n\n这里有几种方法可以指定解析的文本:\n# 指定一个页面或修订,使用$1page、$1pageid或$1oldid。\n# 明确指定内容,使用$1text、$1title和$1contentmodel。\n# 只指定一段摘要解析。$1prop应提供一个空值。", + "apihelp-parse-extended-description": "参见[[Special:ApiHelp/query|action=query]]的各种prop-module以从页面的当前版本获得信息。\n\n这里有几种方法可以指定解析的文本:\n# 指定一个页面或修订,使用$1page、$1pageid或$1oldid。\n# 明确指定内容,使用$1text、$1title、$1revid和$1contentmodel。\n# 只指定一段摘要解析。$1prop应提供一个空值。", "apihelp-parse-param-title": "文本属于的页面标题。如果省略,$1contentmodel就必须被指定,且[[API]]将作为标题使用。", "apihelp-parse-param-text": "要解析的文本。使用$1title或$1contentmodel以控制内容模型。", + "apihelp-parse-param-revid": "修订版本ID,用于{{REVISIONID}}和类似变体。", "apihelp-parse-param-summary": "要解析的摘要。", "apihelp-parse-param-page": "解析此页的内容。不能与$1text和$1title一起使用。", "apihelp-parse-param-pageid": "解析此页的内容。覆盖$1page。", @@ -971,7 +972,7 @@ "apihelp-query+protectedtitles-paramvalue-prop-expiry": "添加保护将被提升时的时间戳。", "apihelp-query+protectedtitles-paramvalue-prop-level": "添加保护级别。", "apihelp-query+protectedtitles-example-simple": "受保护标题列表。", - "apihelp-query+protectedtitles-example-generator": "找到主命名空间中已保护的标题的链接。", + "apihelp-query+protectedtitles-example-generator": "找到主名字空间中已保护的标题的链接。", "apihelp-query+querypage-summary": "获取由基于QueryPage的特殊页面提供的列表。", "apihelp-query+querypage-param-page": "特殊页面的名称。注意其区分大小写。", "apihelp-query+querypage-param-limit": "返回的结果数。", @@ -1486,6 +1487,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": "默认:(空)", @@ -1734,6 +1736,7 @@ "apiwarn-notfile": "“$1”不是文件。", "apiwarn-nothumb-noimagehandler": "不能创建缩略图,因为$1没有关联的图片处理器。", "apiwarn-parse-nocontentmodel": "title或contentmodel未提供,假设$1。", + "apiwarn-parse-revidwithouttext": "revid在没有text的情况下被使用,并且请求了已解析页面的属性。您是想用oldid而不是revid么?", "apiwarn-parse-titlewithouttext": "title在没有text的情况下被使用,并且请求了已解析页面的属性。您是想用page而不是title么?", "apiwarn-redirectsandrevids": "重定向解决方案不能与revids参数一起使用。任何revids所指向的重定向都未被解决。", "apiwarn-tokennotallowed": "操作“$1”不允许当前用户使用。", diff --git a/includes/api/i18n/zh-hant.json b/includes/api/i18n/zh-hant.json index 1dfeb34a68..0767b3ea24 100644 --- a/includes/api/i18n/zh-hant.json +++ b/includes/api/i18n/zh-hant.json @@ -11,10 +11,12 @@ "Winstonyin", "Arthur2e5", "烈羽", - "Corainn" + "Corainn", + "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秒。錯誤不會做緩存。", @@ -26,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": "要測試的密鑰。", @@ -57,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": "要設定的使用者預設語言代碼 (選填,預設依據內容語言)。", @@ -132,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": "登出當前使用者", @@ -161,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": "巡查一次最近變更。", @@ -178,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的數據。", @@ -191,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": "在指定的分類中列出所有頁面。", @@ -244,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": "頁面內容。", @@ -256,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": "不輸出。", @@ -282,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)。", @@ -290,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": "預設值:(空)", @@ -300,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/AuthManagerAuthPlugin.php b/includes/auth/AuthManagerAuthPlugin.php index 884585829d..9a1e44547c 100644 --- a/includes/auth/AuthManagerAuthPlugin.php +++ b/includes/auth/AuthManagerAuthPlugin.php @@ -152,8 +152,9 @@ class AuthManagerAuthPlugin extends \AuthPlugin { } public function updateExternalDBGroups( $user, $addgroups, $delgroups = [] ) { - \Hooks::run( 'UserGroupsChanged', [ $user, $addgroups, $delgroups ] ); - return true; + throw new \BadMethodCallException( + 'Update of user groups via AuthPlugin is not supported with AuthManager.' + ); } public function canCreateAccounts() { diff --git a/includes/auth/AuthenticationResponse.php b/includes/auth/AuthenticationResponse.php index 6684fb958f..956c985069 100644 --- a/includes/auth/AuthenticationResponse.php +++ b/includes/auth/AuthenticationResponse.php @@ -133,7 +133,7 @@ class AuthenticationResponse { */ public static function newPass( $username = null ) { $ret = new AuthenticationResponse; - $ret->status = AuthenticationResponse::PASS; + $ret->status = self::PASS; $ret->username = $username; return $ret; } @@ -145,7 +145,7 @@ class AuthenticationResponse { */ public static function newFail( Message $msg ) { $ret = new AuthenticationResponse; - $ret->status = AuthenticationResponse::FAIL; + $ret->status = self::FAIL; $ret->message = $msg; $ret->messageType = 'error'; return $ret; @@ -158,7 +158,7 @@ class AuthenticationResponse { */ public static function newRestart( Message $msg ) { $ret = new AuthenticationResponse; - $ret->status = AuthenticationResponse::RESTART; + $ret->status = self::RESTART; $ret->message = $msg; return $ret; } @@ -169,7 +169,7 @@ class AuthenticationResponse { */ public static function newAbstain() { $ret = new AuthenticationResponse; - $ret->status = AuthenticationResponse::ABSTAIN; + $ret->status = self::ABSTAIN; return $ret; } @@ -189,7 +189,7 @@ class AuthenticationResponse { } $ret = new AuthenticationResponse; - $ret->status = AuthenticationResponse::UI; + $ret->status = self::UI; $ret->neededRequests = $reqs; $ret->message = $msg; $ret->messageType = $msgtype; @@ -209,7 +209,7 @@ class AuthenticationResponse { } $ret = new AuthenticationResponse; - $ret->status = AuthenticationResponse::REDIRECT; + $ret->status = self::REDIRECT; $ret->neededRequests = $reqs; $ret->redirectTarget = $redirectTarget; $ret->redirectApiData = $redirectApiData; 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 ad1fffb41b..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 ) { @@ -816,7 +816,7 @@ class MessageCache { } // Normalise title-case input (with some inlining) - $lckey = MessageCache::normalizeKey( $key ); + $lckey = self::normalizeKey( $key ); Hooks::run( 'MessageCache::get', [ &$lckey ] ); 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/CategoryMembershipChange.php b/includes/changes/CategoryMembershipChange.php index 5d199612df..6fa6907007 100644 --- a/includes/changes/CategoryMembershipChange.php +++ b/includes/changes/CategoryMembershipChange.php @@ -134,7 +134,8 @@ class CategoryMembershipChange { ), $this->pageTitle, $this->getPreviousRevisionTimestamp(), - $this->revision + $this->revision, + $type === self::CATEGORY_ADDITION ); } @@ -146,6 +147,7 @@ class CategoryMembershipChange { * @param Title $pageTitle Title of the page that is being added or removed * @param string $lastTimestamp Parent revision timestamp of this change in TS_MW format * @param Revision|null $revision + * @param bool $added true, if the category was added, false for removed * * @throws MWException */ @@ -156,7 +158,8 @@ class CategoryMembershipChange { $comment, Title $pageTitle, $lastTimestamp, - $revision + $revision, + $added ) { $deleted = $revision ? $revision->getVisibility() & Revision::SUPPRESSED_USER : 0; $newRevId = $revision ? $revision->getId() : 0; @@ -197,7 +200,8 @@ class CategoryMembershipChange { $lastTimestamp, $bot, $ip, - $deleted + $deleted, + $added ] ); $rc->save(); diff --git a/includes/changes/ChangesFeed.php b/includes/changes/ChangesFeed.php index cffb59a4a8..df964e0a2b 100644 --- a/includes/changes/ChangesFeed.php +++ b/includes/changes/ChangesFeed.php @@ -31,8 +31,6 @@ class ChangesFeed { public $format, $type, $titleMsg, $descMsg; /** - * Constructor - * * @param string $format Feed's format (either 'rss' or 'atom') * @param string $type Type of feed (for cache keys) */ @@ -167,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 5aa693ddd9..bc50096f1b 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,17 +172,19 @@ 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-' . - $rc->mAttribs['rc_namespace'] ); } + $classes[] = Sanitizer::escapeClass( self::CSS_CLASS_PREFIX . 'ns-' . + $rc->mAttribs['rc_namespace'] ); // Indicate watched status on the line to allow for more // comprehensive styling. @@ -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 */ @@ -747,20 +752,34 @@ class ChangesList extends ContextSource { * @return string[] attribute name => value */ protected function getDataAttributes( RecentChange $rc ) { + $attrs = []; + $type = $rc->getAttribute( 'rc_source' ); switch ( $type ) { case RecentChange::SRC_EDIT: case RecentChange::SRC_NEW: - return [ - 'data-mw-revid' => $rc->mAttribs['rc_this_oldid'], - ]; + $attrs['data-mw-revid'] = $rc->mAttribs['rc_this_oldid']; + break; case RecentChange::SRC_LOG: - return [ - 'data-mw-logid' => $rc->mAttribs['rc_logid'], - 'data-mw-logaction' => $rc->mAttribs['rc_log_type'] . '/' . $rc->mAttribs['rc_log_action'], - ]; - default: - return []; + $attrs['data-mw-logid'] = $rc->mAttribs['rc_logid']; + $attrs['data-mw-logaction'] = + $rc->mAttribs['rc_log_type'] . '/' . $rc->mAttribs['rc_log_action']; + break; } + + $attrs[ 'data-mw-ts' ] = $rc->getAttribute( 'rc_timestamp' ); + + 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..2a7ba8849f 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 @@ -118,7 +127,7 @@ class ChangesListBooleanFilter extends ChangesListFilter { } if ( isset( $filterDefinition['default'] ) ) { - $this->defaultValue = $filterDefinition['default']; + $this->setDefault( $filterDefinition['default'] ); } else { throw new MWException( 'You must set a default' ); } @@ -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,17 +151,19 @@ class ChangesListBooleanFilter extends ChangesListFilter { */ public function getDefault( $structuredUI = false ) { return $this->isReplacedInStructuredUi && $structuredUI ? - false : + !$this->activeValue : $this->defaultValue; } /** - * Sets default + * Sets default. It must be a boolean. + * + * It will be coerced to boolean. * * @param bool $defaultValue */ public function setDefault( $defaultValue ) { - $this->defaultValue = $defaultValue; + $this->defaultValue = (bool)$defaultValue; } /** @@ -157,14 +174,14 @@ class ChangesListBooleanFilter extends ChangesListFilter { } /** - * @inheritdoc + * @inheritDoc */ public function displaysOnUnstructuredUi() { return !!$this->showHide; } /** - * @inheritdoc + * @inheritDoc */ public function isFeatureAvailableOnStructuredUi() { return $this->isReplacedInStructuredUi || @@ -206,7 +223,7 @@ class ChangesListBooleanFilter extends ChangesListFilter { } /** - * @inheritdoc + * @inheritDoc */ public function getJsData() { $output = parent::getJsData(); @@ -217,12 +234,28 @@ class ChangesListBooleanFilter extends ChangesListFilter { } /** - * @inheritdoc + * @inheritDoc */ public function isSelected( FormOptions $opts ) { return !$opts[ $this->getName() ] && - array_filter( $this->getSiblings(), function ( $sibling ) use ( $opts ) { - return $opts[ $sibling->getName() ]; - } ); + array_filter( + $this->getSiblings(), + function ( ChangesListBooleanFilter $sibling ) use ( $opts ) { + 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/ChangesListFilter.php b/includes/changes/ChangesListFilter.php index 0b34a5d969..2fc1006ed7 100644 --- a/includes/changes/ChangesListFilter.php +++ b/includes/changes/ChangesListFilter.php @@ -309,6 +309,7 @@ abstract class ChangesListFilter { * structured UI. * * This can either be the exact filter, or a new filter that replaces it. + * @return bool */ public function isFeatureAvailableOnStructuredUi() { return $this->displaysOnStructuredUi(); 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 6754d679f9..930ba128f6 100644 --- a/includes/changes/ChangesListStringOptionsFilter.php +++ b/includes/changes/ChangesListStringOptionsFilter.php @@ -9,20 +9,22 @@ */ class ChangesListStringOptionsFilter extends ChangesListFilter { /** - * @inheritdoc + * @inheritDoc */ public function displaysOnUnstructuredUi() { return false; } /** - * @inheritdoc + * @inheritDoc */ public function isSelected( FormOptions $opts ) { - $values = explode( - ChangesListStringOptionsFilterGroup::SEPARATOR, - $opts[ $this->getGroup()->getName() ] - ); + $option = $opts[ $this->getGroup()->getName() ]; + if ( $option === ChangesListStringOptionsFilterGroup::ALL ) { + return true; + } + + $values = explode( ChangesListStringOptionsFilterGroup::SEPARATOR, $option ); return in_array( $this->getName(), $values ); } } 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 30c6995008..0df6828162 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) * @@ -102,15 +102,17 @@ class EnhancedChangesList extends ChangesList { $rc->mAttribs['rc_timestamp'], $this->getUser() ); + if ( $this->lastdate === '' ) { + $this->lastdate = $date; + } $ret = ''; - # If it's a new day, add the headline and flush the cache - if ( $date != $this->lastdate ) { - # Process current cache + # If it's a new day, flush the cache and update $this->lastdate + if ( $date !== $this->lastdate ) { + # Process current cache (uses $this->lastdate to generate a heading) $ret = $this->recentChangesBlock(); $this->rc_cache = []; - $ret .= Xml::element( 'h4', null, $date ) . "\n"; $this->lastdate = $date; } @@ -170,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'] ); } @@ -328,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, @@ -336,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, ]; @@ -364,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 @@ -372,7 +383,7 @@ class EnhancedChangesList extends ChangesList { ) { $classes[] = 'mw-enhanced-watched'; } - $classes = array_merge( $classes, $this->getHTMLClassesForFilters( $rcObj ) ); + $classes = array_merge( $classes, $this->getHTMLClasses( $rcObj, $rcObj->watched ) ); $separator = ' . . '; @@ -504,7 +515,7 @@ class EnhancedChangesList extends ChangesList { $sinceLast = 0; $unvisitedOldid = null; - /** @var $rcObj RCCacheEntry */ + /** @var RCCacheEntry $rcObj */ foreach ( $block as $rcObj ) { // Same logic as below inside main foreach if ( $rcObj->watched && $rcObj->mAttribs['rc_timestamp'] >= $rcObj->watched ) { @@ -526,7 +537,7 @@ class EnhancedChangesList extends ChangesList { # Total change link $links = []; - /** @var $block0 RecentChange */ + /** @var RecentChange $block0 */ $block0 = $block[0]; $last = $block[count( $block ) - 1]; if ( !$allLogs ) { @@ -607,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'] ); } @@ -688,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'] ); @@ -700,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 ); @@ -763,7 +788,11 @@ class EnhancedChangesList extends ChangesList { } } - return '
    ' . $blockOut . '
    '; + if ( $blockOut === '' ) { + return ''; + } + // $this->lastdate is kept up to date by recentChangesLine() + return Xml::element( 'h4', null, $this->lastdate ) . "\n
    " . $blockOut . '
    '; } /** 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 e8e35a3839..fd789a6421 100644 --- a/includes/changes/RecentChange.php +++ b/includes/changes/RecentChange.php @@ -59,6 +59,10 @@ * temporary: not stored in the database * notificationtimestamp * numberofWatchingusers + * + * @todo Deprecate access to mAttribs (direct or via getAttributes). Right now + * we're having to include both rc_comment and rc_comment_text/rc_comment_data + * so random crap works right. */ class RecentChange { // Constants for the rc_source field. Extensions may also have @@ -130,7 +134,7 @@ class RecentChange { if ( is_array( $type ) ) { $retval = []; foreach ( $type as $t ) { - $retval[] = RecentChange::parseToRCType( $t ); + $retval[] = self::parseToRCType( $t ); } return $retval; @@ -199,6 +203,8 @@ class RecentChange { /** * Return the list of recentchanges fields that should be selected to create * a new recentchanges object. + * @todo Deprecate this in favor of a method that returns tables and joins + * as well, and use CommentStore::getJoin(). * @return array */ public static function selectFields() { @@ -209,7 +215,6 @@ class RecentChange { 'rc_user_text', 'rc_namespace', 'rc_title', - 'rc_comment', 'rc_minor', 'rc_bot', 'rc_new', @@ -227,7 +232,7 @@ class RecentChange { 'rc_log_type', 'rc_log_action', 'rc_params', - ]; + ] + CommentStore::newKey( 'rc_comment' )->getFields(); } # Accessors @@ -279,7 +284,7 @@ class RecentChange { * @param bool $noudp */ public function save( $noudp = false ) { - global $wgPutIPinRC, $wgUseEnotif, $wgShowUpdatedMarker, $wgContLang; + global $wgPutIPinRC, $wgUseEnotif, $wgShowUpdatedMarker; $dbw = wfGetDB( DB_MASTER ); if ( !is_array( $this->mExtra ) ) { @@ -310,20 +315,26 @@ class RecentChange { # Trim spaces on user supplied text $this->mAttribs['rc_comment'] = trim( $this->mAttribs['rc_comment'] ); - # Make sure summary is truncated (whole multibyte characters) - $this->mAttribs['rc_comment'] = $wgContLang->truncate( $this->mAttribs['rc_comment'], 255 ); - # Fixup database timestamps $this->mAttribs['rc_timestamp'] = $dbw->timestamp( $this->mAttribs['rc_timestamp'] ); - $this->mAttribs['rc_id'] = $dbw->nextSequenceValue( 'recentchanges_rc_id_seq' ); # # If we are using foreign keys, an entry of 0 for the page_id will fail, so use NULL if ( $this->mAttribs['rc_cur_id'] == 0 ) { unset( $this->mAttribs['rc_cur_id'] ); } + # Convert mAttribs['rc_comment'] for CommentStore + $row = $this->mAttribs; + $comment = $row['rc_comment']; + unset( $row['rc_comment'], $row['rc_comment_text'], $row['rc_comment_data'] ); + $row += CommentStore::newKey( 'rc_comment' )->insert( $dbw, $comment ); + + # Don't reuse an existing rc_id for the new row, if one happens to be + # set for some reason. + unset( $row['rc_id'] ); + # Insert new row - $dbw->insert( 'recentchanges', $this->mAttribs, __METHOD__ ); + $dbw->insert( 'recentchanges', $row, __METHOD__ ); # Set the ID $this->mAttribs['rc_id'] = $dbw->insertId(); @@ -350,8 +361,8 @@ class RecentChange { // Never send an RC notification email about categorization changes if ( - $this->mAttribs['rc_type'] != RC_CATEGORIZE && - Hooks::run( 'AbortEmailNotification', [ $editor, $title, $this ] ) + Hooks::run( 'AbortEmailNotification', [ $editor, $title, $this ] ) && + $this->mAttribs['rc_type'] != RC_CATEGORIZE ) { // @FIXME: This would be better as an extension hook // Send emails or email jobs once this row is safely committed @@ -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 */ @@ -459,7 +471,7 @@ class RecentChange { $change = $change instanceof RecentChange ? $change - : RecentChange::newFromId( $change ); + : self::newFromId( $change ); if ( !$change instanceof RecentChange ) { return null; @@ -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, @@ -832,6 +850,7 @@ class RecentChange { * @param bool $bot true, if the change was made by a bot * @param string $ip IP address of the user, if the change was made anonymously * @param int $deleted Indicates whether the change has been deleted + * @param bool $added true, if the category was added, false for removed * * @return RecentChange */ @@ -846,8 +865,17 @@ class RecentChange { $lastTimestamp, $bot, $ip = '', - $deleted = 0 + $deleted = 0, + $added = null ) { + // Done in a backwards compatible way. + $params = [ + 'hidden-cat' => WikiCategoryPage::factory( $categoryTitle )->isHidden() + ]; + if ( $added !== null ) { + $params['added'] = $added; + } + $rc = new RecentChange; $rc->mTitle = $categoryTitle; $rc->mPerformer = $user; @@ -861,7 +889,9 @@ class RecentChange { 'rc_cur_id' => $pageTitle->getArticleID(), 'rc_user' => $user ? $user->getId() : 0, 'rc_user_text' => $user ? $user->getName() : '', - 'rc_comment' => $comment, + 'rc_comment' => &$comment, + 'rc_comment_text' => &$comment, + 'rc_comment_data' => null, 'rc_this_oldid' => $newRevId, 'rc_last_oldid' => $oldRevId, 'rc_bot' => $bot ? 1 : 0, @@ -874,9 +904,7 @@ class RecentChange { 'rc_logid' => 0, 'rc_log_type' => null, 'rc_log_action' => '', - 'rc_params' => serialize( [ - 'hidden-cat' => WikiCategoryPage::factory( $categoryTitle )->isHidden() - ] ) + 'rc_params' => serialize( $params ) ]; $rc->mExtra = [ @@ -921,6 +949,13 @@ class RecentChange { $this->mAttribs['rc_ip'] = substr( $this->mAttribs['rc_ip'], 0, $n ); } } + + $comment = CommentStore::newKey( 'rc_comment' ) + // Legacy because $row probably came from self::selectFields() + ->getCommentLegacy( wfGetDB( DB_REPLICA ), $row, true )->text; + $this->mAttribs['rc_comment'] = &$comment; + $this->mAttribs['rc_comment_text'] = &$comment; + $this->mAttribs['rc_comment_data'] = null; } /** @@ -930,6 +965,9 @@ class RecentChange { * @return mixed */ public function getAttribute( $name ) { + if ( $name === 'rc_comment' ) { + return CommentStore::newKey( 'rc_comment' )->getComment( $this->mAttribs, true )->text; + } return isset( $this->mAttribs[$name] ) ? $this->mAttribs[$name] : null; } diff --git a/includes/changetags/ChangeTags.php b/includes/changetags/ChangeTags.php index c9b5f96d50..fa981247c2 100644 --- a/includes/changetags/ChangeTags.php +++ b/includes/changetags/ChangeTags.php @@ -643,24 +643,32 @@ class ChangeTags { * Handles selecting tags, and filtering. * Needs $tables to be set up properly, so we can figure out which join conditions to use. * - * @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 array $options Options, see Database::select - * @param bool|string $filter_tag Tag to select on + * WARNING: If $filter_tag contains more than one tag, this function will add DISTINCT, + * which may cause performance problems for your query unless you put the ID field of your + * table at the end of the ORDER BY, and set a GROUP BY equal to the ORDER BY. For example, + * 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 $filter_tag Tag(s) to select on * * @throws MWException When unable to determine appropriate JOIN condition for tagging */ public static function modifyDisplayQuery( &$tables, &$fields, &$conds, - &$join_conds, &$options, $filter_tag = false ) { - global $wgRequest, $wgUseTagFilter; + &$join_conds, &$options, $filter_tag = '' ) { + global $wgUseTagFilter; - if ( $filter_tag === false ) { - $filter_tag = $wgRequest->getVal( 'tagfilter' ); - } + // Normalize to arrays + $tables = (array)$tables; + $fields = (array)$fields; + $conds = (array)$conds; + $options = (array)$options; - // Figure out which conditions can be done. + // Figure out which ID field to use if ( in_array( 'recentchanges', $tables ) ) { $join_cond = 'ct_rc_id=rc_id'; } elseif ( in_array( 'logging', $tables ) ) { @@ -683,7 +691,13 @@ class ChangeTags { $tables[] = 'change_tag'; $join_conds['change_tag'] = [ 'INNER JOIN', $join_cond ]; - $conds['ct_tag'] = explode( '|', $filter_tag ); + $conds['ct_tag'] = $filter_tag; + if ( + is_array( $filter_tag ) && count( $filter_tag ) > 1 && + !in_array( 'DISTINCT', $options ) + ) { + $options[] = 'DISTINCT'; + } } } @@ -962,7 +976,7 @@ class ChangeTags { // tags cannot contain commas (used as a delimiter in tag_summary table), // pipe (used as a delimiter between multiple tags in - // modifyDisplayQuery), or slashes (would break tag description messages in + // SpecialRecentchanges and friends), or slashes (would break tag description messages in // MediaWiki namespace) if ( strpos( $tag, ',' ) !== false || strpos( $tag, '|' ) !== false || strpos( $tag, '/' ) !== false ) { @@ -1314,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/CollationFa.php b/includes/collation/CollationFa.php index fb46ab4b70..7410886eca 100644 --- a/includes/collation/CollationFa.php +++ b/includes/collation/CollationFa.php @@ -32,9 +32,13 @@ class CollationFa extends IcuCollation { // Really hacky - replace with stuff from other blocks. private $override = [ - "\xd8\xa7" => "\xd8\xa1", + // U+0627 ARABIC LETTER ALEF => U+0623 ARABIC LETTER ALEF WITH HAMZA ABOVE + "\xd8\xa7" => "\xd8\xa3", + // U+0648 ARABIC LETTER WAW => U+0649 ARABIC LETTER ALEF MAKSURA "\xd9\x88" => "\xd9\x89", + // U+0672 ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE => U+F3001 (private use area) "\xd9\xb2" => "\xF3\xB3\x80\x81", + // U+0673 ARABIC LETTER ALEF WITH WAVY HAMZA BELOW => U+F3002 (private use area) "\xd9\xb3" => "\xF3\xB3\x80\x82", ]; 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 e0eb1c13c8..efda596335 100644 --- a/includes/collation/IcuCollation.php +++ b/includes/collation/IcuCollation.php @@ -22,7 +22,7 @@ * @since 1.16.3 */ class IcuCollation extends Collation { - const FIRST_LETTER_VERSION = 2; + const FIRST_LETTER_VERSION = 3; /** @var Collator */ private $primaryCollator; @@ -36,7 +36,7 @@ class IcuCollation extends Collation { /** @var Language */ protected $digitTransformLanguage; - /** @var boolean */ + /** @var bool */ private $useNumericCollation = false; /** @var array */ @@ -180,7 +180,7 @@ class IcuCollation extends Collation { 'mk' => [ "Ѓ", "Ќ" ], 'ml' => [], 'mn' => [], - 'mo' => [ "Ă", "Â", "Î", "Ş", "Ţ" ], // not in libicu + 'mo' => [ "Ă", "Â", "Î", "Ș", "Ț" ], // not in libicu 'mr' => [ "\xe0\xa4\x82", "\xe0\xa4\x83", "ळ", "क्ष", "ज्ञ" ], 'ms' => [], 'mt' => [ "Ċ", "Ġ", "Għ", "Ħ", "Ż" ], @@ -196,9 +196,9 @@ class IcuCollation extends Collation { 'pl' => [ "Ą", "Ć", "Ę", "Ł", "Ń", "Ó", "Ś", "Ź", "Ż" ], 'pt' => [], 'rm' => [], // not in libicu - 'ro' => [ "Ă", "Â", "Î", "Ş", "Ţ" ], + 'ro' => [ "Ă", "Â", "Î", "Ș", "Ț" ], 'ru' => [], - 'rup' => [ "Ă", "Â", "Î", "Ľ", "Ń", "Ş", "Ţ" ], // not in libicu + 'rup' => [ "Ă", "Â", "Î", "Ľ", "Ń", "Ș", "Ț" ], // not in libicu 'sco' => [], 'se' => [ 'Á', 'Č', 'Ʒ', 'Ǯ', 'Đ', 'Ǧ', 'Ǥ', 'Ǩ', 'Ŋ', @@ -474,6 +474,8 @@ class IcuCollation extends Collation { } /** + * @param string $index + * @return string * @since 1.16.3 */ public function getLetterByIndex( $index ) { @@ -481,6 +483,8 @@ class IcuCollation extends Collation { } /** + * @param string $index + * @return string * @since 1.16.3 */ public function getSortKeyByLetterIndex( $index ) { @@ -488,6 +492,8 @@ class IcuCollation extends Collation { } /** + * @param string $index + * @return string * @since 1.16.3 */ public function getFirstLetterCount() { @@ -496,6 +502,8 @@ class IcuCollation extends Collation { /** * Test if a code point is a CJK (Chinese, Japanese, Korean) character + * @param int $codepoint + * @return bool * @since 1.16.3 */ public static function isCjk( $codepoint ) { @@ -535,7 +543,7 @@ class IcuCollation extends Collation { * @return string|bool */ static function getUnicodeVersionForICU() { - $icuVersion = IcuCollation::getICUVersion(); + $icuVersion = self::getICUVersion(); if ( !$icuVersion ) { return false; } diff --git a/includes/collation/NumericUppercaseCollation.php b/includes/collation/NumericUppercaseCollation.php index 2d2ca47bcf..da78a05143 100644 --- a/includes/collation/NumericUppercaseCollation.php +++ b/includes/collation/NumericUppercaseCollation.php @@ -40,9 +40,7 @@ class NumericUppercaseCollation extends UppercaseCollation { private $digitTransformLang; /** - * Constructor - * - * @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. @@ -78,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 @@ -http->run( [ 'method' => 'GET', - 'url' => "{$this->protocol}://{$address}/v2/keys/{$this->directory}/", + 'url' => "{$this->protocol}://{$address}/v2/keys/{$this->directory}/?recursive=true", 'headers' => [ 'content-type' => 'application/json' ] ] ); @@ -240,28 +240,65 @@ class EtcdConfig implements Config, LoggerAwareInterface { empty( $terminalCodes[$rcode] ) ]; } + try { + return [ $this->parseResponse( $rbody ), null, false ]; + } catch ( EtcdConfigParseError $e ) { + return [ null, $e->getMessage(), false ]; + } + } + /** + * Parse a response body, throwing EtcdConfigParseError if there is a validation error + * + * @param string $rbody + * @return array + */ + protected function parseResponse( $rbody ) { $info = json_decode( $rbody, true ); - if ( $info === null || !isset( $info['node']['nodes'] ) ) { - return [ null, $rcode, "Unexpected JSON response; missing 'nodes' list.", false ]; + if ( $info === null ) { + throw new EtcdConfigParseError( "Error unserializing JSON response." ); + } + if ( !isset( $info['node'] ) || !is_array( $info['node'] ) ) { + throw new EtcdConfigParseError( + "Unexpected JSON response: Missing or invalid node at top level." ); } - $config = []; - foreach ( $info['node']['nodes'] as $node ) { + $this->parseDirectory( '', $info['node'], $config ); + return $config; + } + + /** + * Recursively parse a directory node and populate the array passed by + * reference, throwing EtcdConfigParseError if there is a validation error + * + * @param string $dirName The relative directory name + * @param array $dirNode The decoded directory node + * @param array &$config The output array + */ + protected function parseDirectory( $dirName, $dirNode, &$config ) { + if ( !isset( $dirNode['nodes'] ) ) { + throw new EtcdConfigParseError( + "Unexpected JSON response in dir '$dirName'; missing 'nodes' list." ); + } + if ( !is_array( $dirNode['nodes'] ) ) { + throw new EtcdConfigParseError( + "Unexpected JSON response in dir '$dirName'; 'nodes' is not an array." ); + } + + foreach ( $dirNode['nodes'] as $node ) { + $baseName = basename( $node['key'] ); + $fullName = $dirName === '' ? $baseName : "$dirName/$baseName"; if ( !empty( $node['dir'] ) ) { - continue; // skip directories - } + $this->parseDirectory( $fullName, $node, $config ); + } else { + $value = $this->unserialize( $node['value'] ); + if ( !is_array( $value ) || !array_key_exists( 'val', $value ) ) { + throw new EtcdConfigParseError( "Failed to parse value for '$fullName'." ); + } - $name = basename( $node['key'] ); - $value = $this->unserialize( $node['value'] ); - if ( !is_array( $value ) || !array_key_exists( 'val', $value ) ) { - return [ null, "Failed to parse value for '$name'.", false ]; + $config[$fullName] = $value['val']; } - - $config[$name] = $value['val']; } - - return [ $config, null, false ]; } /** diff --git a/includes/config/EtcdConfigParseError.php b/includes/config/EtcdConfigParseError.php new file mode 100644 index 0000000000..cab90a8ef8 --- /dev/null +++ b/includes/config/EtcdConfigParseError.php @@ -0,0 +1,4 @@ +has( $name ) ) { @@ -56,7 +56,7 @@ class GlobalVarConfig implements Config { } /** - * @see Config::has + * @inheritDoc */ public function has( $name ) { return $this->hasWithPrefix( $this->prefix, $name ); diff --git a/includes/config/HashConfig.php b/includes/config/HashConfig.php index 4d6c68ca8b..d020d20fe0 100644 --- a/includes/config/HashConfig.php +++ b/includes/config/HashConfig.php @@ -49,7 +49,7 @@ class HashConfig implements Config, MutableConfig { } /** - * @see Config::get + * @inheritDoc */ public function get( $name ) { if ( !$this->has( $name ) ) { @@ -60,7 +60,8 @@ class HashConfig implements Config, MutableConfig { } /** - * @see Config::has + * @inheritDoc + * @since 1.24 */ public function has( $name ) { return array_key_exists( $name, $this->settings ); @@ -68,6 +69,8 @@ class HashConfig implements Config, MutableConfig { /** * @see MutableConfig::set + * @param string $name + * @param mixed $value */ public function set( $name, $value ) { $this->settings[$name] = $value; diff --git a/includes/config/MultiConfig.php b/includes/config/MultiConfig.php index cbb65aa609..2bbc84c99a 100644 --- a/includes/config/MultiConfig.php +++ b/includes/config/MultiConfig.php @@ -45,7 +45,7 @@ class MultiConfig implements Config { } /** - * @see Config::get + * @inheritDoc */ public function get( $name ) { foreach ( $this->configs as $config ) { @@ -58,7 +58,7 @@ class MultiConfig implements Config { } /** - * @see Config::has + * @inheritDoc */ public function has( $name ) { foreach ( $this->configs as $config ) { diff --git a/includes/content/AbstractContent.php b/includes/content/AbstractContent.php index 1d472e0509..c12d28d9bc 100644 --- a/includes/content/AbstractContent.php +++ b/includes/content/AbstractContent.php @@ -55,6 +55,7 @@ abstract class AbstractContent implements Content { * @since 1.21 * * @see Content::getModel + * @return string */ public function getModel() { return $this->model_id; @@ -82,6 +83,7 @@ abstract class AbstractContent implements Content { * @since 1.21 * * @see Content::getContentHandler + * @return ContentHandler */ public function getContentHandler() { return ContentHandler::getForContent( $this ); @@ -91,6 +93,7 @@ abstract class AbstractContent implements Content { * @since 1.21 * * @see Content::getDefaultFormat + * @return string */ public function getDefaultFormat() { return $this->getContentHandler()->getDefaultFormat(); @@ -100,6 +103,7 @@ abstract class AbstractContent implements Content { * @since 1.21 * * @see Content::getSupportedFormats + * @return string[] */ public function getSupportedFormats() { return $this->getContentHandler()->getSupportedFormats(); @@ -334,6 +338,7 @@ abstract class AbstractContent implements Content { /** * @since 1.21 * + * @param string|int $sectionId * @return null * * @see Content::getSection @@ -345,6 +350,9 @@ abstract class AbstractContent implements Content { /** * @since 1.21 * + * @param string|int|null|bool $sectionId + * @param Content $with + * @param string $sectionTitle * @return null * * @see Content::replaceSection @@ -356,6 +364,9 @@ abstract class AbstractContent implements Content { /** * @since 1.21 * + * @param Title $title + * @param User $user + * @param ParserOptions $popts * @return Content $this * * @see Content::preSaveTransform @@ -367,6 +378,7 @@ abstract class AbstractContent implements Content { /** * @since 1.21 * + * @param string $header * @return Content $this * * @see Content::addSectionHeader @@ -378,6 +390,9 @@ abstract class AbstractContent implements Content { /** * @since 1.21 * + * @param Title $title + * @param ParserOptions $popts + * @param array $params * @return Content $this * * @see Content::preloadTransform @@ -389,6 +404,10 @@ abstract class AbstractContent implements Content { /** * @since 1.21 * + * @param WikiPage $page + * @param int $flags + * @param int $parentRevId + * @param User $user * @return Status * * @see Content::prepareSave @@ -405,7 +424,7 @@ abstract class AbstractContent implements Content { * @since 1.21 * * @param WikiPage $page - * @param ParserOutput $parserOutput + * @param ParserOutput|null $parserOutput * * @return LinksDeletionUpdate[] * diff --git a/includes/content/ContentHandler.php b/includes/content/ContentHandler.php index f85b00d8ed..0509e29215 100644 --- a/includes/content/ContentHandler.php +++ b/includes/content/ContentHandler.php @@ -136,7 +136,7 @@ abstract class ContentHandler { $modelId = $title->getContentModel(); } - $handler = ContentHandler::getForModelID( $modelId ); + $handler = self::getForModelID( $modelId ); return $handler->unserializeContent( $text, $format ); } @@ -240,7 +240,7 @@ abstract class ContentHandler { public static function getForTitle( Title $title ) { $modelId = $title->getContentModel(); - return ContentHandler::getForModelID( $modelId ); + return self::getForModelID( $modelId ); } /** @@ -256,7 +256,7 @@ abstract class ContentHandler { public static function getForContent( Content $content ) { $modelId = $content->getModel(); - return ContentHandler::getForModelID( $modelId ); + return self::getForModelID( $modelId ); } /** @@ -293,8 +293,8 @@ abstract class ContentHandler { public static function getForModelID( $modelId ) { global $wgContentHandlers; - if ( isset( ContentHandler::$handlers[$modelId] ) ) { - return ContentHandler::$handlers[$modelId]; + if ( isset( self::$handlers[$modelId] ) ) { + return self::$handlers[$modelId]; } if ( empty( $wgContentHandlers[$modelId] ) ) { @@ -327,9 +327,9 @@ abstract class ContentHandler { wfDebugLog( 'ContentHandler', 'Created handler for ' . $modelId . ': ' . get_class( $handler ) ); - ContentHandler::$handlers[$modelId] = $handler; + self::$handlers[$modelId] = $handler; - return ContentHandler::$handlers[$modelId]; + return self::$handlers[$modelId]; } /** @@ -372,7 +372,7 @@ abstract class ContentHandler { $formats = []; foreach ( $wgContentHandlers as $model => $class ) { - $handler = ContentHandler::getForModelID( $model ); + $handler = self::getForModelID( $model ); $formats = array_merge( $formats, $handler->getSupportedFormats() ); } @@ -1134,10 +1134,10 @@ abstract class ContentHandler { /** * Add new field definition to array. - * @param SearchIndexField[] $fields - * @param SearchEngine $engine - * @param string $name - * @param int $type + * @param SearchIndexField[] &$fields + * @param SearchEngine $engine + * @param string $name + * @param int $type * @return SearchIndexField[] new field defs * @since 1.28 */ @@ -1151,7 +1151,7 @@ abstract class ContentHandler { * as representation of this document. * Overriding class should call parent function or take care of calling * the SearchDataForIndex hook. - * @param WikiPage $page Page to index + * @param WikiPage $page Page to index * @param ParserOutput $output * @param SearchEngine $engine Search engine for which we are indexing * @return array Map of name=>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/DerivativeContext.php b/includes/context/DerivativeContext.php index 0d0c149d80..6e3eda6f9c 100644 --- a/includes/context/DerivativeContext.php +++ b/includes/context/DerivativeContext.php @@ -75,7 +75,6 @@ class DerivativeContext extends ContextSource implements MutableContext { private $timing; /** - * Constructor * @param IContextSource $context Context to inherit from */ public function __construct( IContextSource $context ) { 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/CloneDatabase.php b/includes/db/CloneDatabase.php index 6d1844494c..3d22c037ae 100644 --- a/includes/db/CloneDatabase.php +++ b/includes/db/CloneDatabase.php @@ -46,8 +46,6 @@ class CloneDatabase { private $db; /** - * Constructor - * * @param IMaintainableDatabase $db A database subclass * @param array $tablesToClone An array of tables to clone, unprefixed * @param string $newTablePrefix Prefix to assign to the tables diff --git a/includes/db/DatabaseOracle.php b/includes/db/DatabaseOracle.php index 556fe75547..e2feb1fa7c 100644 --- a/includes/db/DatabaseOracle.php +++ b/includes/db/DatabaseOracle.php @@ -37,9 +37,6 @@ class DatabaseOracle extends Database { /** @var int The number of rows affected as an integer */ protected $mAffectedRows; - /** @var int */ - private $mInsertId = null; - /** @var bool */ private $ignoreDupValOnIndex = false; @@ -319,12 +316,10 @@ class DatabaseOracle extends Database { return oci_field_name( $stmt, $n ); } - /** - * This must be called after nextSequenceVal - * @return null|int - */ function insertId() { - return $this->mInsertId; + $res = $this->query( "SELECT lastval_pkg.getLastval FROM dual" ); + $row = $this->fetchRow( $res ); + return is_null( $row[0] ) ? null : (int)$row[0]; } /** @@ -649,20 +644,6 @@ class DatabaseOracle extends Database { return preg_replace( '/.*\.(.*)/', '$1', $name ); } - /** - * Return the next in a sequence, save the value for retrieval via insertId() - * - * @param string $seqName - * @return null|int - */ - function nextSequenceValue( $seqName ) { - $res = $this->query( "SELECT $seqName.nextval FROM dual" ); - $row = $this->fetchRow( $res ); - $this->mInsertId = $row[0]; - - return $this->mInsertId; - } - /** * Return sequence_name if table has a sequence * diff --git a/includes/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/MWDebug.php b/includes/debug/MWDebug.php index e67a0b35c5..012837fdcd 100644 --- a/includes/debug/MWDebug.php +++ b/includes/debug/MWDebug.php @@ -425,7 +425,7 @@ class MWDebug { $html = ''; if ( self::$enabled ) { - MWDebug::log( 'MWDebug output complete' ); + self::log( 'MWDebug output complete' ); $debugInfo = self::getDebugInfo( $context ); // Cannot use OutputPage::addJsConfigVars because those are already outputted @@ -495,7 +495,7 @@ class MWDebug { } } - MWDebug::log( 'MWDebug output complete' ); + self::log( 'MWDebug output complete' ); $debugInfo = self::getDebugInfo( $context ); ApiResult::setIndexedTagName( $debugInfo, 'debuginfo' ); 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/AvroFormatter.php b/includes/debug/logger/monolog/AvroFormatter.php index 2a50566912..a395e0d092 100644 --- a/includes/debug/logger/monolog/AvroFormatter.php +++ b/includes/debug/logger/monolog/AvroFormatter.php @@ -61,7 +61,7 @@ class AvroFormatter implements FormatterInterface { protected $writer; /** - * @var array $schemas Map from Monolog channel to Avro schema. + * @param array $schemas Map from Monolog channel to Avro schema. * Each schema can be either the JSON string or decoded into PHP * arrays. */ @@ -120,7 +120,7 @@ class AvroFormatter implements FormatterInterface { /** * Get the writer for the named channel * - * @var string $channel Name of the schema to fetch + * @param string $channel Name of the schema to fetch * @return \AvroSchema|null */ protected function getSchema( $channel ) { @@ -147,7 +147,7 @@ class AvroFormatter implements FormatterInterface { /** * Get the writer for the named channel * - * @var string $channel Name of the schema + * @param string $channel Name of the schema * @return int|null */ public function getSchemaRevisionId( $channel ) { 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..e8e250b551 100644 --- a/includes/deferred/DeferredUpdates.php +++ b/includes/deferred/DeferredUpdates.php @@ -71,7 +71,7 @@ class DeferredUpdates { * In CLI mode, callback magic will also be used to run updates when safe * * @param DeferrableUpdate $update Some object that implements doUpdate() - * @param integer $stage DeferredUpdates constant (PRESEND or POSTSEND) (since 1.27) + * @param int $stage DeferredUpdates constant (PRESEND or POSTSEND) (since 1.27) */ public static function addUpdate( DeferrableUpdate $update, $stage = self::POSTSEND ) { global $wgCommandLineMode; @@ -105,7 +105,7 @@ class DeferredUpdates { * @see MWCallableUpdate::__construct() * * @param callable $callable - * @param integer $stage DeferredUpdates constant (PRESEND or POSTSEND) (since 1.27) + * @param int $stage DeferredUpdates constant (PRESEND or POSTSEND) (since 1.27) * @param IDatabase|null $dbw Abort if this DB is rolled back [optional] (since 1.28) */ public static function addCallableUpdate( @@ -118,7 +118,7 @@ class DeferredUpdates { * Do any deferred updates and clear the list * * @param string $mode Use "enqueue" to use the job queue when possible [Default: "run"] - * @param integer $stage DeferredUpdates constant (PRESEND, POSTSEND, or ALL) (since 1.27) + * @param int $stage DeferredUpdates constant (PRESEND, POSTSEND, or ALL) (since 1.27) */ public static function doUpdates( $mode = 'run', $stage = self::ALL ) { $stageEffective = ( $stage === self::ALL ) ? self::POSTSEND : $stage; @@ -149,7 +149,7 @@ class DeferredUpdates { if ( $update instanceof MergeableUpdate ) { $class = get_class( $update ); // fully-qualified class if ( isset( $queue[$class] ) ) { - /** @var $existingUpdate MergeableUpdate */ + /** @var MergeableUpdate $existingUpdate */ $existingUpdate = $queue[$class]; $existingUpdate->merge( $update ); } else { @@ -165,7 +165,7 @@ class DeferredUpdates { * * @param DeferrableUpdate[] &$queue List of DeferrableUpdate objects * @param string $mode Use "enqueue" to use the job queue when possible - * @param integer $stage Class constant (PRESEND, POSTSEND) (since 1.28) + * @param int $stage Class constant (PRESEND, POSTSEND) (since 1.28) * @throws ErrorPageError Happens on top-level calls * @throws Exception Happens on second-level calls */ @@ -238,7 +238,7 @@ class DeferredUpdates { * @param DeferrableUpdate $update * @param LBFactory $lbFactory * @param string $mode - * @param integer $stage + * @param int $stage * @return ErrorPageError|null */ private static function runUpdate( @@ -322,7 +322,7 @@ class DeferredUpdates { } /** - * @return integer Number of enqueued updates + * @return int Number of enqueued updates * @since 1.28 */ public static function pendingUpdatesCount() { @@ -330,7 +330,7 @@ class DeferredUpdates { } /** - * @param integer $stage DeferredUpdates constant (PRESEND, POSTSEND, or ALL) + * @param int $stage DeferredUpdates constant (PRESEND, POSTSEND, or ALL) * @return DeferrableUpdate[] * @since 1.29 */ diff --git a/includes/deferred/LinksDeletionUpdate.php b/includes/deferred/LinksDeletionUpdate.php index 3dd9de6f91..f579a1f12f 100644 --- a/includes/deferred/LinksDeletionUpdate.php +++ b/includes/deferred/LinksDeletionUpdate.php @@ -29,7 +29,7 @@ use Wikimedia\Rdbms\IDatabase; class LinksDeletionUpdate extends DataUpdate implements EnqueueableDataUpdate { /** @var WikiPage */ protected $page; - /** @var integer */ + /** @var int */ protected $pageId; /** @var string */ protected $timestamp; @@ -39,7 +39,7 @@ class LinksDeletionUpdate extends DataUpdate implements EnqueueableDataUpdate { /** * @param WikiPage $page Page we are updating - * @param integer|null $pageId ID of the page we are updating [optional] + * @param int|null $pageId ID of the page we are updating [optional] * @param string|null $timestamp TS_MW timestamp of deletion * @throws MWException */ diff --git a/includes/deferred/LinksUpdate.php b/includes/deferred/LinksUpdate.php index 072c1e0d03..33d4e70826 100644 --- a/includes/deferred/LinksUpdate.php +++ b/includes/deferred/LinksUpdate.php @@ -102,8 +102,6 @@ class LinksUpdate extends DataUpdate implements EnqueueableDataUpdate { private $db; /** - * Constructor - * * @param Title $title Title of the page we're updating * @param ParserOutput $parserOutput Output from a full parse of this page * @param bool $recursive Queue jobs for recursive updates? @@ -194,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 @@ -550,7 +548,6 @@ class LinksUpdate extends DataUpdate implements EnqueueableDataUpdate { foreach ( $diffs as $url => $dummy ) { foreach ( wfMakeUrlIndexes( $url ) as $index ) { $arr[] = [ - 'el_id' => $this->getDB()->nextSequenceValue( 'externallinks_el_id_seq' ), 'el_from' => $this->mId, 'el_to' => $url, 'el_index' => $index, diff --git a/includes/deferred/SearchUpdate.php b/includes/deferred/SearchUpdate.php index b9a259b1a4..2766bcb185 100644 --- a/includes/deferred/SearchUpdate.php +++ b/includes/deferred/SearchUpdate.php @@ -44,8 +44,6 @@ class SearchUpdate implements DeferrableUpdate { private $page; /** - * Constructor - * * @param int $id Page id to update * @param Title|string $title Title of page to update * @param Content|string|bool $c Content of the page to update. Default: false. 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..2e5298cc97 100644 --- a/includes/deferred/WANCacheReapUpdate.php +++ b/includes/deferred/WANCacheReapUpdate.php @@ -98,13 +98,19 @@ class WANCacheReapUpdate implements DeferrableUpdate { * @see WANObjectCacheRepear * @param WANObjectCache $cache * @param TitleValue $t - * @returns string[] + * @return string[] */ public function getEventAffectedKeys( WANObjectCache $cache, TitleValue $t ) { /** @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/DifferenceEngine.php b/includes/diff/DifferenceEngine.php index 0b58cc1bc6..a9d6ad69d4 100644 --- a/includes/diff/DifferenceEngine.php +++ b/includes/diff/DifferenceEngine.php @@ -104,7 +104,6 @@ class DifferenceEngine extends ContextSource { /**#@-*/ /** - * Constructor * @param IContextSource $context Context to use, anything else will be ignored * @param int $old Old ID we want to show and diff with. * @param string|int $new Either revision ID or 'prev' or 'next'. Default: 0. @@ -182,7 +181,11 @@ class DifferenceEngine extends ContextSource { public function deletedLink( $id ) { if ( $this->getUser()->isAllowed( 'deletedhistory' ) ) { $dbr = wfGetDB( DB_REPLICA ); - $row = $dbr->selectRow( 'archive', '*', + $row = $dbr->selectRow( 'archive', + array_merge( + Revision::selectArchiveFields(), + [ 'ar_namespace', 'ar_title' ] + ), [ 'ar_rev_id' => $id ], __METHOD__ ); if ( $row ) { @@ -377,6 +380,11 @@ class DifferenceEngine extends ContextSource { } } + $out->addJsConfigVars( [ + 'wgDiffOldId' => $this->mOldid, + 'wgDiffNewId' => $this->mNewid, + ] ); + # Make "next revision link" # Skip next link on the top revision if ( $samePage && !$this->mNewRev->isCurrent() ) { @@ -908,10 +916,35 @@ class DifferenceEngine extends ContextSource { $wgExternalDiffEngine = false; } + // Better external diff engine, the 2 may some day be dropped + // This one does the escaping and segmenting itself if ( function_exists( 'wikidiff2_do_diff' ) && $wgExternalDiffEngine === false ) { - # Better external diff engine, the 2 may some day be dropped - # This one does the escaping and segmenting itself - $text = wikidiff2_do_diff( $otext, $ntext, 2 ); + $wikidiff2Version = phpversion( 'wikidiff2' ); + if ( + $wikidiff2Version !== false && + version_compare( $wikidiff2Version, '0.3', '>=' ) + ) { + $text = wikidiff2_do_diff( + $otext, + $ntext, + 2, + $this->getConfig()->get( 'WikiDiff2MovedParagraphDetectionCutoff' ) + ); + } else { + // Don't pass the 4th parameter for compatibility with older versions of wikidiff2 + $text = wikidiff2_do_diff( + $otext, + $ntext, + 2 + ); + + // Log a warning in case the configuration value is set to not silently ignore it + if ( $this->getConfig()->get( 'WikiDiff2MovedParagraphDetectionCutoff' ) > 0 ) { + wfLogWarning( '$wgWikiDiff2MovedParagraphDetectionCutoff is set but has no + effect since the used version of WikiDiff2 does not support it.' ); + } + } + $text .= $this->debug( 'wikidiff2' ); return $text; @@ -1145,17 +1178,17 @@ class DifferenceEngine extends ContextSource { if ( !$diff && !$otitle ) { $header .= " - - {$ntitle} + + {$ntitle} "; $multiColspan = 1; } else { if ( $diff ) { // Safari/Chrome show broken output if cols not used $header .= " - - - - "; + + + + "; $colspan = 2; $multiColspan = 4; } else { @@ -1164,20 +1197,20 @@ class DifferenceEngine extends ContextSource { } if ( $otitle || $ntitle ) { $header .= " - - {$otitle} - {$ntitle} + + {$otitle} + {$ntitle} "; } } if ( $multi != '' ) { - $header .= "{$multi}"; + $header .= "{$multi}"; } if ( $notice != '' ) { - $header .= "{$notice}"; + $header .= "{$notice}"; } return $header . $diff . ""; 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/edit/PreparedEdit.php b/includes/edit/PreparedEdit.php new file mode 100644 index 0000000000..62624f4d91 --- /dev/null +++ b/includes/edit/PreparedEdit.php @@ -0,0 +1,113 @@ + and \) diff --git a/includes/exception/MWExceptionHandler.php b/includes/exception/MWExceptionHandler.php index a2867a1879..a2ec391dc1 100644 --- a/includes/exception/MWExceptionHandler.php +++ b/includes/exception/MWExceptionHandler.php @@ -441,6 +441,24 @@ TXT; return "[$id] $url $type from line $line of $file: $message"; } + /** + * Get a normalised message for formatting with PSR-3 log event context. + * + * Must be used together with `getLogContext()` to be useful. + * + * @since 1.30 + * @param Exception|Throwable $e + * @return string + */ + public static function getLogNormalMessage( $e ) { + $type = get_class( $e ); + $file = $e->getFile(); + $line = $e->getLine(); + $message = $e->getMessage(); + + return "[{exception_id}] {exception_url} $type from line $line of $file: $message"; + } + /** * @param Exception|Throwable $e * @return string @@ -468,6 +486,7 @@ TXT; return [ 'exception' => $e, 'exception_id' => WebRequest::getRequestId(), + 'exception_url' => self::getURL() ?: '[no req]', 'caught_by' => $catcher ]; } @@ -595,7 +614,7 @@ TXT; if ( !( $e instanceof MWException ) || $e->isLoggable() ) { $logger = LoggerFactory::getInstance( 'exception' ); $logger->error( - self::getLogMessage( $e ), + self::getLogNormalMessage( $e ), self::getLogContext( $e, $catcher ) ); @@ -616,7 +635,7 @@ TXT; * @param ErrorException $e * @param string $channel * @param string $level - */ + */ protected static function logError( ErrorException $e, $channel, $level = LogLevel::ERROR ) { @@ -629,7 +648,7 @@ TXT; $logger = LoggerFactory::getInstance( $channel ); $logger->log( $level, - self::getLogMessage( $e ), + self::getLogNormalMessage( $e ), self::getLogContext( $e, $catcher ) ); } diff --git a/includes/exception/MWExceptionRenderer.php b/includes/exception/MWExceptionRenderer.php index 2eb821ae69..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 ) { @@ -211,7 +211,7 @@ class MWExceptionRenderer { "\nBacktrace:\n" . MWExceptionHandler::getRedactedTraceAsString( $e ) . "\n"; } else { - return self::getShowBacktraceError( $e ); + return self::getShowBacktraceError( $e ) . "\n"; } } @@ -242,7 +242,7 @@ class MWExceptionRenderer { $vars[] = '$wgShowDBErrorBacktrace = true;'; } $vars = implode( ' and ', $vars ); - return "Set $vars at the bottom of LocalSettings.php to show detailed debugging information\n"; + return "Set $vars at the bottom of LocalSettings.php to show detailed debugging information."; } /** @@ -262,7 +262,7 @@ class MWExceptionRenderer { } /** - * @param integer $code + * @param int $code */ private static function statusHeader( $code ) { if ( !headers_sent() ) { diff --git a/includes/exception/ProcOpenError.php b/includes/exception/ProcOpenError.php new file mode 100644 index 0000000000..f00bcd4bd4 --- /dev/null +++ b/includes/exception/ProcOpenError.php @@ -0,0 +1,29 @@ +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 a307468a71..6e2a5a4f0c 100644 --- a/includes/export/WikiExporter.php +++ b/includes/export/WikiExporter.php @@ -91,8 +91,8 @@ class WikiExporter { * @param int $buffer One of WikiExporter::BUFFER or WikiExporter::STREAM * @param int $text One of WikiExporter::TEXT or WikiExporter::STUB */ - function __construct( $db, $history = WikiExporter::CURRENT, - $buffer = WikiExporter::BUFFER, $text = WikiExporter::TEXT ) { + function __construct( $db, $history = self::CURRENT, + $buffer = self::BUFFER, $text = self::TEXT ) { $this->db = $db; $this->history = $history; $this->buffer = $buffer; @@ -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 ) { @@ -272,19 +273,23 @@ class WikiExporter { # Get logging table name for logging.* clause $logging = $this->db->tableName( 'logging' ); - if ( $this->buffer == WikiExporter::STREAM ) { + if ( $this->buffer == self::STREAM ) { $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 == WikiExporter::STREAM ) { + if ( $this->buffer == self::STREAM ) { $this->db->bufferResults( $prev ); } } catch ( Exception $e ) { @@ -303,7 +308,7 @@ class WikiExporter { // Putting database back in previous buffer mode try { - if ( $this->buffer == WikiExporter::STREAM ) { + if ( $this->buffer == self::STREAM ) { $this->db->bufferResults( $prev ); } } catch ( Exception $e2 ) { @@ -341,10 +346,10 @@ class WikiExporter { if ( !empty( $this->history['limit'] ) ) { $opts['LIMIT'] = intval( $this->history['limit'] ); } - } elseif ( $this->history & WikiExporter::FULL ) { + } elseif ( $this->history & self::FULL ) { # Full history dumps... # query optimization for history stub dumps - if ( $this->text == WikiExporter::STUB && $orderRevs ) { + if ( $this->text == self::STUB && $orderRevs ) { $tables = [ 'revision', 'page' ]; $opts[] = 'STRAIGHT_JOIN'; $opts['ORDER BY'] = [ 'rev_page ASC', 'rev_id ASC' ]; @@ -353,13 +358,13 @@ class WikiExporter { } else { $join['revision'] = [ 'INNER JOIN', 'page_id=rev_page' ]; } - } elseif ( $this->history & WikiExporter::CURRENT ) { + } elseif ( $this->history & self::CURRENT ) { # Latest revision dumps... if ( $this->list_authors && $cond != '' ) { // List authors, if so desired $this->do_list_authors( $cond ); } $join['revision'] = [ 'INNER JOIN', 'page_id=rev_page AND page_latest=rev_id' ]; - } elseif ( $this->history & WikiExporter::STABLE ) { + } elseif ( $this->history & self::STABLE ) { # "Stable" revision dumps... # Default JOIN, to be overridden... $join['revision'] = [ 'INNER JOIN', 'page_id=rev_page AND page_latest=rev_id' ]; @@ -367,7 +372,7 @@ class WikiExporter { if ( Hooks::run( 'WikiExporter::dumpStableQuery', [ &$tables, &$opts, &$join ] ) ) { throw new MWException( __METHOD__ . " given invalid history dump type." ); } - } elseif ( $this->history & WikiExporter::RANGE ) { + } elseif ( $this->history & self::RANGE ) { # Dump of revisions within a specified range $join['revision'] = [ 'INNER JOIN', 'page_id=rev_page' ]; $opts['ORDER BY'] = [ 'rev_page ASC', 'rev_id ASC' ]; @@ -381,12 +386,12 @@ class WikiExporter { $opts['USE INDEX']['page'] = 'PRIMARY'; } # Build text join options - if ( $this->text != WikiExporter::STUB ) { // 1-pass + if ( $this->text != self::STUB ) { // 1-pass $tables[] = 'text'; $join['text'] = [ 'INNER JOIN', 'rev_text_id=old_id' ]; } - if ( $this->buffer == WikiExporter::STREAM ) { + if ( $this->buffer == self::STREAM ) { $prev = $this->db->bufferResults( false ); } $result = null; // Assuring $result is not undefined, if exception occurs early @@ -394,12 +399,21 @@ 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 ); - if ( $this->buffer == WikiExporter::STREAM ) { + if ( $this->buffer == self::STREAM ) { $this->db->bufferResults( $prev ); } } catch ( Exception $e ) { @@ -418,7 +432,7 @@ class WikiExporter { // Putting database back in previous buffer mode try { - if ( $this->buffer == WikiExporter::STREAM ) { + if ( $this->buffer == self::STREAM ) { $this->db->bufferResults( $prev ); } } catch ( Exception $e2 ) { diff --git a/includes/export/XmlDumpWriter.php b/includes/export/XmlDumpWriter.php index 943408cc98..c46eb61ca3 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"; @@ -397,7 +403,7 @@ class XmlDumpWriter { if ( $file->isDeleted( File::DELETED_COMMENT ) ) { $comment = Xml::element( 'comment', [ 'deleted' => 'deleted' ] ); } else { - $comment = Xml::elementClean( 'comment', null, $file->getDescription() ); + $comment = Xml::elementClean( 'comment', null, strval( $file->getDescription() ) ); } return " \n" . $this->writeTimestamp( $file->getTimestamp() ) . diff --git a/includes/externalstore/ExternalStoreDB.php b/includes/externalstore/ExternalStoreDB.php index 6bb1618ff6..e5d36e10cb 100644 --- a/includes/externalstore/ExternalStoreDB.php +++ b/includes/externalstore/ExternalStoreDB.php @@ -92,9 +92,8 @@ class ExternalStoreDB extends ExternalStoreMedium { public function store( $location, $data ) { $dbw = $this->getMaster( $location ); - $id = $dbw->nextSequenceValue( 'blob_blob_id_seq' ); $dbw->insert( $this->getTable( $dbw ), - [ 'blob_id' => $id, 'blob_text' => $data ], + [ 'blob_text' => $data ], __METHOD__ ); $id = $dbw->insertId(); if ( !$id ) { diff --git a/includes/externalstore/ExternalStoreHttp.php b/includes/externalstore/ExternalStoreHttp.php index c1f065122f..8e1e49fa60 100644 --- a/includes/externalstore/ExternalStoreHttp.php +++ b/includes/externalstore/ExternalStoreHttp.php @@ -29,6 +29,9 @@ class ExternalStoreHttp extends ExternalStoreMedium { /** * @see ExternalStoreMedium::fetchFromURL() + * @param string $url + * @return string|bool + * @throws MWException */ public function fetchFromURL( $url ) { return Http::get( $url, [], __METHOD__ ); @@ -36,6 +39,10 @@ class ExternalStoreHttp extends ExternalStoreMedium { /** * @see ExternalStoreMedium::store() + * @param string $cluster + * @param string $data + * @return string|bool + * @throws MWException */ public function store( $cluster, $data ) { throw new MWException( "ExternalStoreHttp is read-only and does not support store()." ); diff --git a/includes/externalstore/ExternalStoreMwstore.php b/includes/externalstore/ExternalStoreMwstore.php index b05843c4c8..5395f56274 100644 --- a/includes/externalstore/ExternalStoreMwstore.php +++ b/includes/externalstore/ExternalStoreMwstore.php @@ -35,6 +35,8 @@ class ExternalStoreMwstore extends ExternalStoreMedium { * The URL returned is of the form of the form mwstore://backend/container/wiki/id * * @see ExternalStoreMedium::fetchFromURL() + * @param string $url + * @return bool */ public function fetchFromURL( $url ) { $be = FileBackendGroup::singleton()->backendFromPath( $url ); @@ -73,6 +75,10 @@ class ExternalStoreMwstore extends ExternalStoreMedium { /** * @see ExternalStoreMedium::store() + * @param string $backend + * @param string $data + * @return string|bool + * @throws MWException */ public function store( $backend, $data ) { $be = FileBackendGroup::singleton()->get( $backend ); 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..21b7ac2fae 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 ) { @@ -298,6 +298,7 @@ class FileBackendDBRepoWrapper extends FileBackend { * * @param string $function * @param array $params + * @return mixed */ protected function translateSrcParams( $function, array $params ) { $latest = !empty( $params['latest'] ); diff --git a/includes/filerepo/FileRepo.php b/includes/filerepo/FileRepo.php index 8edf81f131..5005280732 100644 --- a/includes/filerepo/FileRepo.php +++ b/includes/filerepo/FileRepo.php @@ -776,7 +776,7 @@ class FileRepo { public function getDescriptionRenderUrl( $name, $lang = null ) { $query = 'action=render'; if ( !is_null( $lang ) ) { - $query .= '&uselang=' . $lang; + $query .= '&uselang=' . urlencode( $lang ); } if ( isset( $this->scriptDirUrl ) ) { return $this->makeUrl( @@ -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 43f1d211b3..45a5c8247f 100644 --- a/includes/filerepo/ForeignAPIRepo.php +++ b/includes/filerepo/ForeignAPIRepo.php @@ -257,7 +257,7 @@ class ForeignAPIRepo extends FileRepo { * @param string $name * @param int $width * @param int $height - * @param array $result Out parameter that will be changed by the function. + * @param array &$result * @param string $otherParams * * @return bool @@ -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( @@ -528,7 +528,7 @@ class ForeignAPIRepo extends FileRepo { } $req = MWHttpRequest::factory( $url, $options, __METHOD__ ); - $req->setUserAgent( ForeignAPIRepo::getUserAgent() ); + $req->setUserAgent( self::getUserAgent() ); $status = $req->execute(); if ( $status->isOK() ) { diff --git a/includes/filerepo/LocalRepo.php b/includes/filerepo/LocalRepo.php index 20d51c254a..ed00793508 100644 --- a/includes/filerepo/LocalRepo.php +++ b/includes/filerepo/LocalRepo.php @@ -274,14 +274,13 @@ class LocalRepo extends FileRepo { ); }; - $that = $this; $applyMatchingFiles = function ( ResultWrapper $res, &$searchSet, &$finalFiles ) - use ( $that, $fileMatchesSearch, $flags ) + use ( $fileMatchesSearch, $flags ) { global $wgContLang; - $info = $that->getInfo(); + $info = $this->getInfo(); foreach ( $res as $row ) { - $file = $that->newFileFromRow( $row ); + $file = $this->newFileFromRow( $row ); // There must have been a search for this DB key, but this has to handle the // cases were title capitalization is different on the client and repo wikis. $dbKeysLook = [ strtr( $file->getName(), ' ', '_' ) ]; diff --git a/includes/filerepo/file/ArchivedFile.php b/includes/filerepo/file/ArchivedFile.php index 6984d48c6d..758fb4b5a1 100644 --- a/includes/filerepo/file/ArchivedFile.php +++ b/includes/filerepo/file/ArchivedFile.php @@ -215,6 +215,8 @@ class ArchivedFile { /** * Fields in the filearchive table + * @todo Deprecate this in favor of a method that returns tables and joins + * as well, and use CommentStore::getJoin(). * @return array */ static function selectFields() { @@ -232,14 +234,13 @@ class ArchivedFile { 'fa_media_type', 'fa_major_mime', 'fa_minor_mime', - 'fa_description', 'fa_user', 'fa_user_text', 'fa_timestamp', 'fa_deleted', 'fa_deleted_timestamp', /* Used by LocalFileRestoreBatch */ 'fa_sha1', - ]; + ] + CommentStore::newKey( 'fa_description' )->getFields(); } /** @@ -261,7 +262,9 @@ class ArchivedFile { $this->metadata = $row->fa_metadata; $this->mime = "$row->fa_major_mime/$row->fa_minor_mime"; $this->media_type = $row->fa_media_type; - $this->description = $row->fa_description; + $this->description = CommentStore::newKey( 'fa_description' ) + // Legacy because $row probably came from self::selectFields() + ->getCommentLegacy( wfGetDB( DB_REPLICA ), $row )->text; $this->user = $row->fa_user; $this->user_text = $row->fa_user_text; $this->timestamp = $row->fa_timestamp; diff --git a/includes/filerepo/file/File.php b/includes/filerepo/file/File.php index 9aa2b186e5..32f4504ba6 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 ) { } @@ -1147,7 +1147,7 @@ abstract class File implements IDBAccessObject { if ( !$thumb ) { // bad params? $thumb = false; } elseif ( $thumb->isError() ) { // transform error - /** @var $thumb MediaTransformError */ + /** @var MediaTransformError $thumb */ $this->lastError = $thumb->toText(); // Ignore errors if requested if ( $wgIgnoreImageErrors && !( $flags & self::RENDER_NOW ) ) { @@ -1282,11 +1282,10 @@ abstract class File implements IDBAccessObject { // Thumbnailing a very large file could result in network saturation if // everyone does it at once. if ( $this->getSize() >= 1e7 ) { // 10MB - $that = $this; $work = new PoolCounterWorkViaCallback( 'GetLocalFileCopy', sha1( $this->getName() ), [ - 'doWork' => function () use ( $that ) { - return $that->getLocalRefPath(); + 'doWork' => function () { + return $this->getLocalRefPath(); } ] ); diff --git a/includes/filerepo/file/LocalFile.php b/includes/filerepo/file/LocalFile.php index 33177d3f6f..133f79783d 100644 --- a/includes/filerepo/file/LocalFile.php +++ b/includes/filerepo/file/LocalFile.php @@ -43,7 +43,7 @@ use Wikimedia\Rdbms\IDatabase; * @ingroup FileAbstraction */ class LocalFile extends File { - const VERSION = 10; // cache version + const VERSION = 11; // cache version const CACHE_FIELD_MAX_LEN = 1000; @@ -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(); } /** @@ -346,18 +347,18 @@ class LocalFile extends File { function getCacheFields( $prefix = 'img_' ) { static $fields = [ 'size', 'width', 'height', 'bits', 'media_type', 'major_mime', 'minor_mime', 'metadata', 'timestamp', 'sha1', 'user', - 'user_text', 'description' ]; + 'user_text' ]; static $results = []; if ( $prefix == '' ) { - return $fields; + return array_merge( $fields, [ 'description' ] ); } - if ( !isset( $results[$prefix] ) ) { $prefixedFields = []; foreach ( $fields as $field ) { $prefixedFields[] = $prefix . $field; } + $prefixedFields += CommentStore::newKey( "{$prefix}description" )->getFields(); $results[$prefix] = $prefixedFields; } @@ -535,6 +536,10 @@ class LocalFile extends File { $this->dataLoaded = true; $this->extraDataLoaded = true; + $this->description = CommentStore::newKey( "{$prefix}description" ) + // $row is probably using getFields() from self::getCacheFields() + ->getCommentLegacy( wfGetDB( DB_REPLICA ), $row )->text; + $array = $this->decodeRow( $row, $prefix ); foreach ( $array as $name => $value ) { @@ -1123,11 +1128,9 @@ class LocalFile extends File { if ( $this->historyLine == 0 ) { // called for the first time, return line from cur $this->historyRes = $dbr->select( 'image', - [ - '*', - "'' AS oi_archive_name", - '0 as oi_deleted', - 'img_sha1' + self::selectFields() + [ + 'oi_archive_name' => $dbr->addQuotes( '' ), + 'oi_deleted' => 0, ], [ 'img_name' => $this->title->getDBkey() ], $fname @@ -1139,7 +1142,9 @@ class LocalFile extends File { return false; } } elseif ( $this->historyLine == 1 ) { - $this->historyRes = $dbr->select( 'oldimage', '*', + $this->historyRes = $dbr->select( + 'oldimage', + OldLocalFile::selectFields(), [ 'oi_name' => $this->title->getDBkey() ], $fname, [ 'ORDER BY' => 'oi_timestamp DESC' ] @@ -1194,8 +1199,6 @@ class LocalFile extends File { function upload( $src, $comment, $pageText, $flags = 0, $props = false, $timestamp = false, $user = null, $tags = [] ) { - global $wgContLang; - if ( $this->getRepo()->getReadOnlyReason() !== false ) { return $this->readOnlyFatalStatus(); } @@ -1229,9 +1232,6 @@ class LocalFile extends File { // Trim spaces on user supplied text $comment = trim( $comment ); - // Truncate nicely or the DB will do it for us - // non-nicely (dangling multi-byte chars, non-truncated version in cache). - $comment = $wgContLang->truncate( $comment, 255 ); $this->lock(); // begin $status = $this->publish( $src, $flags, $options ); @@ -1299,6 +1299,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 +1336,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 +1350,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 +1380,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 +1451,20 @@ class LocalFile extends File { 'img_major_mime' => $this->major_mime, 'img_minor_mime' => $this->minor_mime, 'img_timestamp' => $timestamp, - 'img_description' => $comment, 'img_user' => $user->getId(), 'img_user_text' => $user->getName(), 'img_metadata' => $dbw->encodeBlob( $this->metadata ), 'img_sha1' => $this->sha1 - ], + ] + $commentFields, [ 'img_name' => $this->getName() ], __METHOD__ ); + if ( $wgCommentTableSchemaMigrationStage > MIGRATION_OLD ) { + // So $commentCallback can insert the new row + $dbw->delete( 'image_comment_temp', [ 'imgcomment_name' => $this->getName() ], __METHOD__ ); + } } + $commentCallback( $this->getName() ); $descTitle = $this->getTitle(); $descId = $descTitle->getArticleID(); @@ -1515,7 +1555,7 @@ class LocalFile extends File { ); if ( isset( $status->value['revision'] ) ) { - /** @var $rev Revision */ + /** @var Revision $rev */ $rev = $status->value['revision']; // Associate new page revision id $logEntry->setAssociatedRevId( $rev->getId() ); @@ -1523,7 +1563,7 @@ class LocalFile extends File { // This relies on the resetArticleID() call in WikiPage::insertOn(), // which is triggered on $descTitle by doEditContent() above. if ( isset( $status->value['revision'] ) ) { - /** @var $rev Revision */ + /** @var Revision $rev */ $rev = $status->value['revision']; $updateLogPage = $rev->getPage(); } @@ -2255,11 +2295,18 @@ 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 ); $encGroup = $dbw->addQuotes( 'deleted' ); $ext = $this->file->getExtension(); $dotExt = $ext === '' ? '' : ".$ext"; @@ -2274,39 +2321,73 @@ 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 += array_map( + [ $dbw, 'addQuotes' ], + $commentStoreFaReason->insert( $dbw, $this->reason ) ); + + 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 +2402,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 +2441,8 @@ class LocalFileDeleteBatch { } function doDBDeletes() { + global $wgUpdateCompatibleMetadata; + $dbw = $this->file->repo->getMasterDB(); list( $oldRels, $deleteCurrent ) = $this->getOldRels(); @@ -2369,6 +2456,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 +2629,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 +2718,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 +2735,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 +2771,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 +2779,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 +2838,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..ee172e1143 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; @@ -395,6 +396,7 @@ class OldLocalFile extends LocalFile { * * This is the case for a couple files on Wikimedia servers where * the old version is "lost". + * @return bool */ public function exists() { $archiveName = $this->getArchiveName(); 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 399147b89a..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...*/ ) { @@ -285,7 +285,7 @@ class HTMLForm extends ContextSource { return ObjectFactory::constructClassInstance( OOUIHTMLForm::class, $arguments ); default: /** @var HTMLForm $form */ - $form = ObjectFactory::constructClassInstance( HTMLForm::class, $arguments ); + $form = ObjectFactory::constructClassInstance( self::class, $arguments ); $form->setDisplayFormat( $displayFormat ); return $form; } @@ -400,7 +400,13 @@ class HTMLForm extends ContextSource { if ( !in_array( $format, $this->availableDisplayFormats, true ) ) { throw new MWException( 'Display format must be one of ' . - print_r( $this->availableDisplayFormats, true ) ); + print_r( + array_merge( + $this->availableDisplayFormats, + $this->availableSubclassDisplayFormats + ), + true + ) ); } // Evil hack for mobile :( @@ -444,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 @@ -1686,7 +1692,7 @@ class HTMLForm extends ContextSource { $attributes = []; if ( $fieldsetIDPrefix ) { - $attributes['id'] = Sanitizer::escapeId( "$fieldsetIDPrefix$key" ); + $attributes['id'] = Sanitizer::escapeIdForAttribute( "$fieldsetIDPrefix$key" ); } $subsectionHtml .= $this->wrapFieldSetSection( $legend, $section, $attributes ); } else { @@ -1735,7 +1741,7 @@ class HTMLForm extends ContextSource { ]; if ( $sectionName ) { - $attribs['id'] = Sanitizer::escapeId( $sectionName ); + $attribs['id'] = Sanitizer::escapeIdForAttribute( $sectionName ); } if ( $displayFormat === 'table' ) { @@ -1887,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 83a80233f9..e642c2cdd0 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' ); @@ -416,8 +416,8 @@ abstract class HTMLFormField { $this->mDir = $params['dir']; } - $validName = Sanitizer::escapeId( $this->mName ); - $validName = str_replace( [ '.5B', '.5D' ], [ '[', ']' ], $validName ); + $validName = urlencode( $this->mName ); + $validName = str_replace( [ '%5B', '%5D' ], [ '[', ']' ], $validName ); if ( $this->mName != $validName && !isset( $params['nodata'] ) ) { throw new MWException( "Invalid name '{$this->mName}' passed to " . __METHOD__ ); } @@ -430,7 +430,7 @@ abstract class HTMLFormField { if ( isset( $params['id'] ) ) { $id = $params['id']; - $validId = Sanitizer::escapeId( $id ); + $validId = urlencode( $id ); if ( $id != $validId ) { throw new MWException( "Invalid id '$id' passed to " . __METHOD__ ); @@ -660,6 +660,8 @@ abstract class HTMLFormField { /** * Get a FieldLayout (or subclass thereof) to wrap this field in when using OOUI output. + * @param string $inputField + * @param array $config * @return OOUI\FieldLayout|OOUI\ActionFieldLayout */ protected function getFieldLayoutOOUI( $inputField, $config ) { @@ -976,7 +978,7 @@ abstract class HTMLFormField { } /** - * Returns the attributes required for the tooltip and accesskey. + * Returns the attributes required for the tooltip and accesskey, for Html::element() etc. * * @return array Attributes */ @@ -988,6 +990,22 @@ abstract class HTMLFormField { return Linker::tooltipAndAccesskeyAttribs( $this->mParams['tooltip'] ); } + /** + * Returns the attributes required for the tooltip and accesskey, for OOUI widgets' config. + * + * @return array Attributes + */ + public function getTooltipAndAccessKeyOOUI() { + if ( empty( $this->mParams['tooltip'] ) ) { + return []; + } + + return [ + 'title' => Linker::titleAttrib( $this->mParams['tooltip'] ), + 'accessKey' => Linker::accesskey( $this->mParams['tooltip'] ), + ]; + } + /** * Returns the given attributes from the parameters * @@ -1058,33 +1076,8 @@ abstract class HTMLFormField { $this->mOptionsLabelsNotFromMessage = true; $this->mOptions = self::forceToStringRecursive( $this->mParams['options'] ); } elseif ( array_key_exists( 'options-message', $this->mParams ) ) { - /** @todo This is copied from Xml::listDropDown(), deprecate/avoid duplication? */ $message = $this->getMessage( $this->mParams['options-message'] )->inContentLanguage()->plain(); - - $optgroup = false; - $this->mOptions = []; - foreach ( explode( "\n", $message ) as $option ) { - $value = trim( $option ); - if ( $value == '' ) { - continue; - } elseif ( substr( $value, 0, 1 ) == '*' && substr( $value, 1, 1 ) != '*' ) { - # A new group is starting... - $value = trim( substr( $value, 1 ) ); - $optgroup = $value; - } elseif ( substr( $value, 0, 2 ) == '**' ) { - # groupmember - $opt = trim( substr( $value, 2 ) ); - if ( $optgroup === false ) { - $this->mOptions[$opt] = $opt; - } else { - $this->mOptions[$optgroup][$opt] = $opt; - } - } else { - # groupless reason list - $optgroup = false; - $this->mOptions[$option] = $option; - } - } + $this->mOptions = Xml::listDropDownOptions( $message ); } else { $this->mOptions = null; } @@ -1104,16 +1097,7 @@ abstract class HTMLFormField { return null; } - $options = []; - - foreach ( $oldoptions as $text => $data ) { - $options[] = [ - 'data' => (string)$data, - 'label' => (string)$text, - ]; - } - - return $options; + return Xml::listDropDownOptionsOoui( $oldoptions ); } /** @@ -1202,7 +1186,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/OOUIHTMLForm.php b/includes/htmlform/OOUIHTMLForm.php index ed99802994..e47de61a4c 100644 --- a/includes/htmlform/OOUIHTMLForm.php +++ b/includes/htmlform/OOUIHTMLForm.php @@ -66,7 +66,10 @@ class OOUIHTMLForm extends HTMLForm { } if ( isset( $this->mSubmitTooltip ) ) { - $attribs += Linker::tooltipAndAccesskeyAttribs( $this->mSubmitTooltip ); + $attribs += [ + 'title' => Linker::titleAttrib( $this->mSubmitTooltip ), + 'accessKey' => Linker::accesskey( $this->mSubmitTooltip ), + ]; } $attribs['classes'] = [ 'mw-htmlform-submit' ]; @@ -177,7 +180,7 @@ class OOUIHTMLForm extends HTMLForm { 'items' => $fieldsHtml, ]; if ( $sectionName ) { - $config['id'] = Sanitizer::escapeId( $sectionName ); + $config['id'] = Sanitizer::escapeIdForAttribute( $sectionName ); } if ( is_string( $this->mWrapperLegend ) ) { $config['label'] = $this->mWrapperLegend; diff --git a/includes/htmlform/fields/HTMLCheckField.php b/includes/htmlform/fields/HTMLCheckField.php index b080e183ff..9a956fbf1e 100644 --- a/includes/htmlform/fields/HTMLCheckField.php +++ b/includes/htmlform/fields/HTMLCheckField.php @@ -52,7 +52,7 @@ class HTMLCheckField extends HTMLFormField { $value = !$value; } - $attr = $this->getTooltipAndAccessKey(); + $attr = $this->getTooltipAndAccessKeyOOUI(); $attr['id'] = $this->mID; $attr['name'] = $this->mName; diff --git a/includes/htmlform/fields/HTMLCheckMatrix.php b/includes/htmlform/fields/HTMLCheckMatrix.php index fa18a3cdad..dd4e707ee5 100644 --- a/includes/htmlform/fields/HTMLCheckMatrix.php +++ b/includes/htmlform/fields/HTMLCheckMatrix.php @@ -121,9 +121,11 @@ class HTMLCheckMatrix extends HTMLFormField implements HTMLNestedFilterable { if ( $this->isTagForcedOff( $thisTag ) ) { $checked = false; $thisAttribs['disabled'] = 1; + $thisAttribs['class'] = 'checkmatrix-forced checkmatrix-forced-off'; } elseif ( $this->isTagForcedOn( $thisTag ) ) { $checked = true; $thisAttribs['disabled'] = 1; + $thisAttribs['class'] = 'checkmatrix-forced checkmatrix-forced-on'; } $checkbox = $this->getOneCheckbox( $checked, $attribs + $thisAttribs ); diff --git a/includes/htmlform/fields/HTMLFormFieldCloner.php b/includes/htmlform/fields/HTMLFormFieldCloner.php index dd9184bf33..53c6835949 100644 --- a/includes/htmlform/fields/HTMLFormFieldCloner.php +++ b/includes/htmlform/fields/HTMLFormFieldCloner.php @@ -93,9 +93,9 @@ class HTMLFormFieldCloner extends HTMLFormField { $info['name'] = $name; } if ( isset( $info['id'] ) ) { - $info['id'] = Sanitizer::escapeId( "{$this->mID}--$key--{$info['id']}" ); + $info['id'] = Sanitizer::escapeIdForAttribute( "{$this->mID}--$key--{$info['id']}" ); } else { - $info['id'] = Sanitizer::escapeId( "{$this->mID}--$key--$fieldname" ); + $info['id'] = Sanitizer::escapeIdForAttribute( "{$this->mID}--$key--$fieldname" ); } // Copy the hide-if rules to "child" fields, so that the JavaScript code handling them // (resources/src/mediawiki/htmlform/hide-if.js) doesn't have to handle nested fields. @@ -313,7 +313,7 @@ class HTMLFormFieldCloner extends HTMLFormField { 'type' => 'submit', 'formnovalidate' => true, 'name' => $name, - 'id' => Sanitizer::escapeId( "{$this->mID}--$key--delete" ), + 'id' => Sanitizer::escapeIdForAttribute( "{$this->mID}--$key--delete" ), 'cssclass' => 'mw-htmlform-cloner-delete-button', 'default' => $this->getMessage( $label )->text(), ], $this->mParent ); @@ -386,7 +386,7 @@ class HTMLFormFieldCloner extends HTMLFormField { 'type' => 'submit', 'formnovalidate' => true, 'name' => $name, - 'id' => Sanitizer::escapeId( "{$this->mID}--create" ), + 'id' => Sanitizer::escapeIdForAttribute( "{$this->mID}--create" ), 'cssclass' => 'mw-htmlform-cloner-create-button', 'default' => $this->getMessage( $label )->text(), ], $this->mParent ); 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/htmlform/fields/HTMLMultiSelectField.php b/includes/htmlform/fields/HTMLMultiSelectField.php index 2b6e0665d5..0d5eeba92c 100644 --- a/includes/htmlform/fields/HTMLMultiSelectField.php +++ b/includes/htmlform/fields/HTMLMultiSelectField.php @@ -142,7 +142,7 @@ class HTMLMultiSelectField extends HTMLFormField implements HTMLNestedFilterable public function getInputOOUI( $value ) { $this->mParent->getOutput()->addModules( 'oojs-ui-widgets' ); - $attr = $this->getTooltipAndAccessKey(); + $attr = []; $attr['id'] = $this->mID; $attr['name'] = "{$this->mName}[]"; diff --git a/includes/htmlform/fields/HTMLRadioField.php b/includes/htmlform/fields/HTMLRadioField.php index 06ec3722ed..77ea7cd211 100644 --- a/includes/htmlform/fields/HTMLRadioField.php +++ b/includes/htmlform/fields/HTMLRadioField.php @@ -90,7 +90,7 @@ class HTMLRadioField extends HTMLFormField { $html .= Html::rawElement( 'h1', [], $label ) . "\n"; $html .= $this->formatOptions( $info, $value ); } else { - $id = Sanitizer::escapeId( $this->mID . "-$info" ); + $id = Sanitizer::escapeIdForAttribute( $this->mID . "-$info" ); $classes = [ 'mw-htmlform-flatlist-item' ]; if ( $wgUseMediaWikiUIEverywhere || $this->mParent instanceof VFormHTMLForm ) { $classes[] = 'mw-ui-radio'; diff --git a/includes/htmlform/fields/HTMLRestrictionsField.php b/includes/htmlform/fields/HTMLRestrictionsField.php index dbf2c8f644..0310dd024f 100644 --- a/includes/htmlform/fields/HTMLRestrictionsField.php +++ b/includes/htmlform/fields/HTMLRestrictionsField.php @@ -38,7 +38,7 @@ class HTMLRestrictionsField extends HTMLTextAreaField { } $value = rtrim( $request->getText( $this->mName ), "\r\n" ); - $ips = $value === '' ? [] : explode( PHP_EOL, $value ); + $ips = $value === '' ? [] : explode( "\n", $value ); try { return MWRestrictions::newFromArray( [ 'IPAddresses' => $ips ] ); } catch ( InvalidArgumentException $e ) { @@ -79,7 +79,7 @@ class HTMLRestrictionsField extends HTMLTextAreaField { if ( is_string( $value ) ) { // MWRestrictions::newFromArray failed; one of the IP ranges must be invalid $status = Status::newGood(); - foreach ( explode( PHP_EOL, $value ) as $range ) { + foreach ( explode( "\n", $value ) as $range ) { if ( !\IP::isIPAddress( $range ) ) { $status->fatal( 'restrictionsfield-badip', $range ); } @@ -103,7 +103,7 @@ class HTMLRestrictionsField extends HTMLTextAreaField { */ public function getInputHTML( $value ) { if ( $value instanceof MWRestrictions ) { - $value = implode( PHP_EOL, $value->toArray()['IPAddresses'] ); + $value = implode( "\n", $value->toArray()['IPAddresses'] ); } return parent::getInputHTML( $value ); } @@ -114,7 +114,7 @@ class HTMLRestrictionsField extends HTMLTextAreaField { */ public function getInputOOUI( $value ) { if ( $value instanceof MWRestrictions ) { - $value = implode( PHP_EOL, $value->toArray()['IPAddresses'] ); + $value = implode( "\n", $value->toArray()['IPAddresses'] ); } return parent::getInputOOUI( $value ); } diff --git a/includes/htmlform/fields/HTMLSelectAndOtherField.php b/includes/htmlform/fields/HTMLSelectAndOtherField.php index 9af60e5c22..38b487af10 100644 --- a/includes/htmlform/fields/HTMLSelectAndOtherField.php +++ b/includes/htmlform/fields/HTMLSelectAndOtherField.php @@ -63,8 +63,70 @@ class HTMLSelectAndOtherField extends HTMLSelectField { return "$select
    \n$textbox"; } + protected function getOOUIModules() { + return [ 'mediawiki.widgets.SelectWithInputWidget' ]; + } + public function getInputOOUI( $value ) { - return false; + $this->mParent->getOutput()->addModuleStyles( 'mediawiki.widgets.SelectWithInputWidget.styles' ); + + # TextInput + $textAttribs = [ + 'id' => $this->mID . '-other', + 'name' => $this->mName . '-other', + 'size' => $this->getSize(), + 'class' => [ 'mw-htmlform-select-and-other-field' ], + 'data-id-select' => $this->mID, + 'value' => $value[2], + ]; + + $allowedParams = [ + 'required', + 'autofocus', + 'multiple', + 'disabled', + 'tabindex', + 'maxlength', + ]; + + $textAttribs += OOUI\Element::configFromHtmlAttributes( + $this->getAttributes( $allowedParams ) + ); + + if ( $this->mClass !== '' ) { + $textAttribs['classes'] = [ $this->mClass ]; + } + + # DropdownInput + $dropdownInputAttribs = [ + 'name' => $this->mName, + 'id' => $this->mID, + 'options' => $this->getOptionsOOUI(), + 'value' => $value[1], + ]; + + $allowedParams = [ + 'tabindex', + 'disabled', + ]; + + $dropdownInputAttribs += OOUI\Element::configFromHtmlAttributes( + $this->getAttributes( $allowedParams ) + ); + + if ( $this->mClass !== '' ) { + $dropdownInputAttribs['classes'] = [ $this->mClass ]; + } + + return $this->getInputWidget( [ + 'textinput' => $textAttribs, + 'dropdowninput' => $dropdownInputAttribs, + 'or' => false, + ] ); + } + + public function getInputWidget( $params ) { + return new Mediawiki\Widget\SelectWithInputWidget( $params ); } /** diff --git a/includes/htmlform/fields/HTMLSelectOrOtherField.php b/includes/htmlform/fields/HTMLSelectOrOtherField.php index bb410799ef..a009b287c2 100644 --- a/includes/htmlform/fields/HTMLSelectOrOtherField.php +++ b/includes/htmlform/fields/HTMLSelectOrOtherField.php @@ -64,8 +64,80 @@ class HTMLSelectOrOtherField extends HTMLTextField { return "$select
    \n$textbox"; } + protected function shouldInfuseOOUI() { + return true; + } + + protected function getOOUIModules() { + return [ 'mediawiki.widgets.SelectWithInputWidget' ]; + } + public function getInputOOUI( $value ) { - return false; + $this->mParent->getOutput()->addModuleStyles( 'mediawiki.widgets.SelectWithInputWidget.styles' ); + + $valInSelect = false; + if ( $value !== false ) { + $value = strval( $value ); + $valInSelect = in_array( + $value, HTMLFormField::flattenOptions( $this->getOptions() ), true + ); + } + + # DropdownInput + $dropdownAttribs = [ + 'id' => $this->mID, + 'name' => $this->mName, + 'options' => $this->getOptionsOOUI(), + 'value' => $valInSelect ? $value : 'other', + 'class' => [ 'mw-htmlform-select-or-other' ], + ]; + + $allowedParams = [ + 'disabled', + 'tabindex', + ]; + + $dropdownAttribs += OOUI\Element::configFromHtmlAttributes( + $this->getAttributes( $allowedParams ) + ); + + # TextInput + $textAttribs = [ + 'id' => $this->mID . '-other', + 'name' => $this->mName . '-other', + 'size' => $this->getSize(), + 'value' => $valInSelect ? '' : $value, + ]; + + $allowedParams = [ + 'required', + 'autofocus', + 'multiple', + 'disabled', + 'tabindex', + 'maxlength', + ]; + + $textAttribs += OOUI\Element::configFromHtmlAttributes( + $this->getAttributes( $allowedParams ) + ); + + if ( $this->mClass !== '' ) { + $textAttribs['classes'] = [ $this->mClass ]; + } + if ( $this->mPlaceholder !== '' ) { + $textAttribs['placeholder'] = $this->mPlaceholder; + } + + return $this->getInputWidget( [ + 'textinput' => $textAttribs, + 'dropdowninput' => $dropdownAttribs, + 'or' => true, + ] ); + } + + public function getInputWidget( $params ) { + return new Mediawiki\Widget\SelectWithInputWidget( $params ); } /** diff --git a/includes/htmlform/fields/HTMLTagFilter.php b/includes/htmlform/fields/HTMLTagFilter.php index f58acbe71b..38f9a0a100 100644 --- a/includes/htmlform/fields/HTMLTagFilter.php +++ b/includes/htmlform/fields/HTMLTagFilter.php @@ -23,6 +23,15 @@ class HTMLTagFilter extends HTMLFormField { return ''; } + public function getOOUI( $value ) { + $this->tagFilter = ChangeTags::buildTagFilterSelector( + $value, true, $this->mParent->getContext() ); + if ( $this->tagFilter ) { + return parent::getOOUI( $value ); + } + return new OOUI\FieldLayout( new OOUI\Widget() ); + } + public function getInputHTML( $value ) { if ( $this->tagFilter ) { // we only need the select field, HTMLForm should handle the label @@ -30,4 +39,12 @@ class HTMLTagFilter extends HTMLFormField { } return ''; } + + public function getInputOOUI( $value ) { + if ( $this->tagFilter ) { + // we only need the select field, HTMLForm should handle the label + return $this->tagFilter[1]; + } + return ''; + } } diff --git a/includes/htmlform/fields/HTMLTextAreaField.php b/includes/htmlform/fields/HTMLTextAreaField.php index 82ec3bf201..480c5bb926 100644 --- a/includes/htmlform/fields/HTMLTextAreaField.php +++ b/includes/htmlform/fields/HTMLTextAreaField.php @@ -71,7 +71,7 @@ class HTMLTextAreaField extends HTMLFormField { throw new Exception( "OOUIHTMLForm does not support the 'cols' parameter for textareas" ); } - $attribs = $this->getTooltipAndAccessKey(); + $attribs = $this->getTooltipAndAccessKeyOOUI(); if ( $this->mClass !== '' ) { $attribs['classes'] = [ $this->mClass ]; diff --git a/includes/htmlform/fields/HTMLTextField.php b/includes/htmlform/fields/HTMLTextField.php index b0b66cab9f..1c5a43ddad 100644 --- a/includes/htmlform/fields/HTMLTextField.php +++ b/includes/htmlform/fields/HTMLTextField.php @@ -140,7 +140,7 @@ class HTMLTextField extends HTMLFormField { $value = ''; } - $attribs = $this->getTooltipAndAccessKey(); + $attribs = $this->getTooltipAndAccessKeyOOUI(); if ( $this->mClass !== '' ) { $attribs['classes'] = [ $this->mClass ]; diff --git a/includes/htmlform/fields/HTMLUsersMultiselectField.php b/includes/htmlform/fields/HTMLUsersMultiselectField.php index c2d26a3103..f094745f5d 100644 --- a/includes/htmlform/fields/HTMLUsersMultiselectField.php +++ b/includes/htmlform/fields/HTMLUsersMultiselectField.php @@ -63,9 +63,7 @@ class HTMLUsersMultiselectField extends HTMLUserTextField { if ( isset( $this->mParams['placeholder'] ) ) { $params['placeholder'] = $this->mParams['placeholder']; } else { - $params['placeholder'] = $this->msg( 'mw-widgets-usersmultiselect-placeholder' ) - ->inContentLanguage() - ->plain(); + $params['placeholder'] = $this->msg( 'mw-widgets-usersmultiselect-placeholder' )->plain(); } if ( !is_null( $value ) ) { diff --git a/includes/http/Http.php b/includes/http/Http.php index 4f21ce2775..6eff6c9cbd 100644 --- a/includes/http/Http.php +++ b/includes/http/Http.php @@ -106,7 +106,7 @@ class Http { $options['timeout'] = $args[1]; $caller = __METHOD__; } - return Http::request( 'GET', $url, $options, $caller ); + return self::request( 'GET', $url, $options, $caller ); } /** @@ -119,7 +119,7 @@ class Http { * @return string|bool false on error */ public static function post( $url, $options = [], $caller = __METHOD__ ) { - return Http::request( 'POST', $url, $options, $caller ); + return self::request( 'POST', $url, $options, $caller ); } /** @@ -168,6 +168,7 @@ class Http { /** * Get a configured MultiHttpClient * @param array $options + * @return MultiHttpClient */ public static function createMultiClient( $options = [] ) { global $wgHTTPConnectTimeout, $wgHTTPTimeout, $wgHTTPProxy; 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/http/PhpHttpRequest.php b/includes/http/PhpHttpRequest.php index 3f3803b41c..0c5d162345 100644 --- a/includes/http/PhpHttpRequest.php +++ b/includes/http/PhpHttpRequest.php @@ -88,6 +88,8 @@ class PhpHttpRequest extends MWHttpRequest { * so normal methods of handling errors programmatically * like get_last_error() don't work. * @internal + * @param int $errno + * @param string $errstr */ public function errorHandler( $errno, $errstr ) { $n = count( $this->fopenErrors ) + 1; diff --git a/includes/import/ImportStreamSource.php b/includes/import/ImportStreamSource.php index 8034400bad..94a2b937e0 100644 --- a/includes/import/ImportStreamSource.php +++ b/includes/import/ImportStreamSource.php @@ -93,7 +93,7 @@ class ImportStreamSource implements ImportSource { } $fname = $upload['tmp_name']; if ( is_uploaded_file( $fname ) ) { - return ImportStreamSource::newFromFile( $fname ); + return self::newFromFile( $fname ); } else { return Status::newFatal( 'importnofile' ); } @@ -178,6 +178,6 @@ class ImportStreamSource implements ImportSource { $url = wfAppendQuery( $link, $params ); # For interwikis, use POST to avoid redirects. - return ImportStreamSource::newFromURL( $url, "POST" ); + return self::newFromURL( $url, "POST" ); } } 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..edb0c9af1c 100644 --- a/includes/import/WikiRevision.php +++ b/includes/import/WikiRevision.php @@ -607,11 +607,12 @@ class WikiRevision { $pageId = $page->getId(); $created = false; + // Note: sha1 has been in XML dumps since 2012. If you have an + // older dump, the duplicate detection here won't work. $prior = $dbw->selectField( 'revision', '1', [ 'rev_page' => $pageId, 'rev_timestamp' => $dbw->timestamp( $this->timestamp ), - 'rev_user_text' => $userText, - 'rev_comment' => $this->getComment() ], + 'rev_sha1' => $this->sha1base36 ], __METHOD__ ); if ( $prior ) { @@ -708,7 +709,6 @@ class WikiRevision { 'log_timestamp' => $dbw->timestamp( $this->timestamp ), 'log_namespace' => $this->getTitle()->getNamespace(), 'log_title' => $this->getTitle()->getDBkey(), - 'log_comment' => $this->getComment(), # 'log_user_text' => $this->user_text, 'log_params' => $this->params ], __METHOD__ @@ -720,9 +720,7 @@ class WikiRevision { . $this->timestamp . "\n" ); return false; } - $log_id = $dbw->nextSequenceValue( 'logging_log_id_seq' ); $data = [ - 'log_id' => $log_id, 'log_type' => $this->type, 'log_action' => $this->action, 'log_timestamp' => $dbw->timestamp( $this->timestamp ), @@ -730,9 +728,8 @@ class WikiRevision { 'log_user_text' => $userText, 'log_namespace' => $this->getTitle()->getNamespace(), 'log_title' => $this->getTitle()->getDBkey(), - 'log_comment' => $this->getComment(), 'log_params' => $this->params - ]; + ] + CommentStore::newKey( 'log_comment' )->insert( $dbw, $this->getComment() ); $dbw->insert( 'logging', $data, __METHOD__ ); return true; diff --git a/includes/installer/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 e5cbb7ce71..752bc5445b 100644 --- a/includes/installer/DatabaseUpdater.php +++ b/includes/installer/DatabaseUpdater.php @@ -83,6 +83,8 @@ abstract class DatabaseUpdater { FixDefaultJsonContentPages::class, CleanupEmptyCategories::class, AddRFCAndPMIDInterwiki::class, + PopulatePPSortKey::class, + PopulateIpChanges::class, ]; /** @@ -105,9 +107,7 @@ abstract class DatabaseUpdater { protected $holdContentHandlerUseDB = true; /** - * Constructor - * - * @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 */ @@ -941,10 +941,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; } @@ -1191,4 +1191,25 @@ abstract class DatabaseUpdater { $wgContentHandlerUseDB = $this->holdContentHandlerUseDB; } } + + /** + * Migrate comments to the new 'comment' table + * @since 1.30 + */ + protected function migrateComments() { + global $wgCommentTableSchemaMigrationStage; + if ( $wgCommentTableSchemaMigrationStage >= MIGRATION_WRITE_NEW && + !$this->updateRowExists( 'MigrateComments' ) + ) { + $this->output( + "Migrating comments to the 'comments' table, printing progress markers. For large\n" . + "databases, you may want to hit Ctrl-C and do this manually with\n" . + "maintenance/migrateComments.php.\n" + ); + $task = $this->maintenance->runChild( 'MigrateComments', 'migrateComments.php' ); + $task->execute(); + $this->output( "done.\n" ); + } + } + } diff --git a/includes/installer/Installer.php b/includes/installer/Installer.php index 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/InstallerSessionProvider.php b/includes/installer/InstallerSessionProvider.php index bfb1a69f30..568ef516ef 100644 --- a/includes/installer/InstallerSessionProvider.php +++ b/includes/installer/InstallerSessionProvider.php @@ -30,6 +30,8 @@ use MediaWiki\Session\SessionInfo; class InstallerSessionProvider extends SessionProvider { /** * Pretend there is a session, to avoid MWCryptRand overhead + * @param WebRequest $request + * @return SessionInfo */ public function provideSessionInfo( WebRequest $request ) { return new SessionInfo( 1, [ @@ -40,6 +42,7 @@ class InstallerSessionProvider extends SessionProvider { /** * Yes we will treat your data with great care! + * @return bool */ public function persistsSessionId() { return true; @@ -47,6 +50,7 @@ class InstallerSessionProvider extends SessionProvider { /** * Sure, you can be whoever you want, as long as you have ID 0 + * @return bool */ public function canChangeUser() { return true; diff --git a/includes/installer/MssqlInstaller.php b/includes/installer/MssqlInstaller.php index 43d3574152..d01f954632 100644 --- a/includes/installer/MssqlInstaller.php +++ b/includes/installer/MssqlInstaller.php @@ -266,7 +266,7 @@ class MssqlInstaller extends DatabaseInstaller { if ( !$status->isOK() ) { return false; } - /** @var $conn Database */ + /** @var Database $conn */ $conn = $status->value; // We need the server-level ALTER ANY LOGIN permission to create new accounts diff --git a/includes/installer/MssqlUpdater.php b/includes/installer/MssqlUpdater.php index 1a9915da66..a2aa8c0f1a 100644 --- a/includes/installer/MssqlUpdater.php +++ b/includes/installer/MssqlUpdater.php @@ -101,6 +101,9 @@ class MssqlUpdater extends DatabaseUpdater { [ 'addField', 'externallinks', 'el_index_60', 'patch-externallinks-el_index_60.sql' ], [ 'dropIndex', 'oldimage', 'oi_name_archive_name', 'patch-alter-table-oldimage.sql' ], + + // 1.30 + [ 'modifyField', 'image', 'img_media_type', 'patch-add-3d.sql' ], ]; } @@ -122,6 +125,7 @@ class MssqlUpdater extends DatabaseUpdater { * @param string $updatekey * @param string $patch * @param bool $fullpath + * @return bool */ protected function updateSchema( $table, $updatekey, $patch, $fullpath = false ) { if ( !$this->db->tableExists( $table, __METHOD__ ) ) { diff --git a/includes/installer/MysqlInstaller.php b/includes/installer/MysqlInstaller.php index cbb79f8df3..c5dd4dcbc9 100644 --- a/includes/installer/MysqlInstaller.php +++ b/includes/installer/MysqlInstaller.php @@ -51,7 +51,7 @@ class MysqlInstaller extends DatabaseInstaller { public $supportedEngines = [ 'InnoDB', 'MyISAM' ]; - public $minimumVersion = '5.0.3'; + public $minimumVersion = '5.5.8'; public $webUserPrivs = [ 'DELETE', @@ -223,6 +223,7 @@ class MysqlInstaller extends DatabaseInstaller { /** * @param string $s + * @param string $escapeChar * @return string */ protected function escapeLikeInternal( $s, $escapeChar = '`' ) { @@ -275,7 +276,7 @@ class MysqlInstaller extends DatabaseInstaller { if ( !$status->isOK() ) { return false; } - /** @var $conn Database */ + /** @var Database $conn */ $conn = $status->value; // Get current account name @@ -342,6 +343,8 @@ class MysqlInstaller extends DatabaseInstaller { /** * Convert a wildcard (as used in LIKE) to a regex * Slashes are escaped, slash terminators included + * @param string $wildcard + * @return string */ protected function likeToRegex( $wildcard ) { $r = preg_quote( $wildcard, '/' ); diff --git a/includes/installer/MysqlUpdater.php b/includes/installer/MysqlUpdater.php index adfe2f6b13..556d0d5388 100644 --- a/includes/installer/MysqlUpdater.php +++ b/includes/installer/MysqlUpdater.php @@ -170,7 +170,6 @@ class MysqlUpdater extends DatabaseUpdater { [ 'doLogUsertextPopulation' ], [ 'doLogSearchPopulation' ], [ 'addTable', 'l10n_cache', 'patch-l10n_cache.sql' ], - [ 'addIndex', 'log_search', 'ls_field_val', 'patch-log_search-rename-index.sql' ], [ 'addIndex', 'change_tag', 'change_tag_rc_tag', 'patch-change_tag-indexes.sql' ], [ 'addField', 'redirect', 'rd_interwiki', 'patch-rd_interwiki.sql' ], [ 'doUpdateTranscacheField' ], @@ -267,9 +266,8 @@ class MysqlUpdater extends DatabaseUpdater { 'patch-fa_major_mime-chemical.sql' ], // 1.25 - [ 'doUserNewTalkUseridUnsigned' ], // note this patch covers other _comment and _description fields too - [ 'modifyField', 'recentchanges', 'rc_comment', 'patch-editsummary-length.sql' ], + [ 'doExtendCommentLengths' ], // 1.26 [ 'dropTable', 'hitcounter' ], @@ -301,7 +299,36 @@ class MysqlUpdater extends DatabaseUpdater { [ 'dropIndex', 'user_groups', 'ug_user_group', 'patch-user_groups-primary-key.sql' ], [ 'addField', 'user_groups', 'ug_expiry', 'patch-user_groups-ug_expiry.sql' ], [ 'addIndex', 'image', 'img_user_timestamp', 'patch-image-user-index-2.sql' ], + + // 1.30 [ 'modifyField', 'image', 'img_media_type', 'patch-add-3d.sql' ], + [ 'addTable', 'ip_changes', 'patch-ip_changes.sql' ], + [ 'renameIndex', 'categorylinks', 'cl_from', 'PRIMARY', false, + 'patch-categorylinks-fix-pk.sql' ], + [ 'renameIndex', 'templatelinks', 'tl_from', 'PRIMARY', false, + 'patch-templatelinks-fix-pk.sql' ], + [ 'renameIndex', 'pagelinks', 'pl_from', 'PRIMARY', false, 'patch-pagelinks-fix-pk.sql' ], + [ 'renameIndex', 'text', 'old_id', 'PRIMARY', false, 'patch-text-fix-pk.sql' ], + [ 'renameIndex', 'imagelinks', 'il_from', 'PRIMARY', false, 'patch-imagelinks-fix-pk.sql' ], + [ 'renameIndex', 'iwlinks', 'iwl_from', 'PRIMARY', false, 'patch-iwlinks-fix-pk.sql' ], + [ 'renameIndex', 'langlinks', 'll_from', 'PRIMARY', false, 'patch-langlinks-fix-pk.sql' ], + [ 'renameIndex', 'log_search', 'ls_field_val', 'PRIMARY', false, 'patch-log_search-fix-pk.sql' ], + [ 'renameIndex', 'module_deps', 'md_module_skin', 'PRIMARY', false, + 'patch-module_deps-fix-pk.sql' ], + [ 'renameIndex', 'objectcache', 'keyname', 'PRIMARY', false, 'patch-objectcache-fix-pk.sql' ], + [ 'renameIndex', 'querycache_info', 'qci_type', 'PRIMARY', false, + 'patch-querycache_info-fix-pk.sql' ], + [ 'renameIndex', 'site_stats', 'ss_row_id', 'PRIMARY', false, 'patch-site_stats-fix-pk.sql' ], + [ 'renameIndex', 'transcache', 'tc_url_idx', 'PRIMARY', false, 'patch-transcache-fix-pk.sql' ], + [ 'renameIndex', 'user_former_groups', 'ufg_user_group', 'PRIMARY', false, + 'patch-user_former_groups-fix-pk.sql' ], + [ 'renameIndex', 'user_properties', 'user_properties_user_property', 'PRIMARY', false, + 'patch-user_properties-fix-pk.sql' ], + [ 'addTable', 'comment', 'patch-comment-table.sql' ], + [ 'migrateComments' ], + [ 'renameIndex', 'l10n_cache', 'lc_lang_key', 'PRIMARY', false, + 'patch-l10n_cache-primary-key.sql' ], + [ 'doUnsignedSyncronisation' ], ]; } @@ -363,7 +390,7 @@ class MysqlUpdater extends DatabaseUpdater { global $IP; if ( !$this->doTable( 'interwiki' ) ) { - return true; + return; } if ( $this->db->tableExists( "interwiki", __METHOD__ ) ) { @@ -1096,26 +1123,42 @@ class MysqlUpdater extends DatabaseUpdater { ); } - protected function doUserNewTalkUseridUnsigned() { - if ( !$this->doTable( 'user_newtalk' ) ) { - return true; - } + protected function doUnsignedSyncronisation() { + $sync = [ + [ 'table' => 'bot_passwords', 'field' => 'bp_user' ], + [ 'table' => 'change_tag', 'field' => 'ct_log_id' ], + [ 'table' => 'change_tag', 'field' => 'ct_rev_id' ], + [ 'table' => 'page_restrictions', 'field' => 'pr_user' ], + [ 'table' => 'tag_summary', 'field' => 'ts_log_id' ], + [ 'table' => 'tag_summary', 'field' => 'ts_rev_id' ], + [ 'table' => 'user_newtalk', 'field' => 'user_id' ], + [ 'table' => 'user_properties', 'field' => 'up_user' ], + ]; - $info = $this->db->fieldInfo( 'user_newtalk', 'user_id' ); - if ( $info === false ) { - return true; - } - if ( $info->isUnsigned() ) { - $this->output( "...user_id is already unsigned int.\n" ); + foreach ( $sync as $s ) { + if ( !$this->doTable( $s['table'] ) ) { + continue; + } - return true; + $info = $this->db->fieldInfo( $s['table'], $s['field'] ); + if ( $info === false ) { + continue; + } + $fullName = "{$s['table']}.{$s['field']}"; + if ( $info->isUnsigned() ) { + $this->output( "...$fullName is already unsigned int.\n" ); + + continue; + } + + $this->applyPatch( + "patch-{$s['table']}-{$s['field']}-unsigned.sql", + false, + "Making $fullName into an unsigned int" + ); } - return $this->applyPatch( - 'patch-user-newtalk-userid-unsigned.sql', - false, - 'Making user_id unsigned int' - ); + return true; } protected function doRevisionPageRevIndexNonUnique() { @@ -1138,6 +1181,22 @@ class MysqlUpdater extends DatabaseUpdater { ); } + protected function doExtendCommentLengths() { + $table = $this->db->tableName( 'revision' ); + $res = $this->db->query( "SHOW COLUMNS FROM $table LIKE 'rev_comment'" ); + $row = $this->db->fetchObject( $res ); + + if ( $row && ( $row->Type !== "varbinary(767)" || $row->Default !== "" ) ) { + $this->applyPatch( + 'patch-editsummary-length.sql', + false, + 'Extending edit summary lengths (and setting defaults)' + ); + } else { + $this->output( '...comment fields are up to date' ); + } + } + public function getSchemaVars() { global $wgDBTableOptions; diff --git a/includes/installer/OracleUpdater.php b/includes/installer/OracleUpdater.php index e262eda635..00b96614f8 100644 --- a/includes/installer/OracleUpdater.php +++ b/includes/installer/OracleUpdater.php @@ -123,6 +123,9 @@ class OracleUpdater extends DatabaseUpdater { [ 'addField', 'externallinks', 'el_index_60', 'patch-externallinks-el_index_60.sql' ], [ 'addField', 'user_groups', 'ug_expiry', 'patch-user_groups-ug_expiry.sql' ], + // 1.30 + [ 'doAutoIncrementTriggers' ], + // KEEP THIS AT THE BOTTOM!! [ 'doRebuildDuplicateFunction' ], @@ -273,6 +276,30 @@ class OracleUpdater extends DatabaseUpdater { $this->output( "ok\n" ); } + /** + * Add auto-increment triggers + */ + protected function doAutoIncrementTriggers() { + $this->output( "Adding auto-increment triggers ... " ); + + $meta = $this->db->query( 'SELECT trigger_name FROM user_triggers WHERE table_owner = \'' . + strtoupper( $this->db->getDBname() ) . + '\' AND trigger_name = \'' . + $this->db->tablePrefix() . + 'PAGE_DEFAULT_PAGE_ID\'' + ); + $row = $meta->fetchRow(); + if ( $row['column_name'] ) { + $this->output( "seems to be up to date.\n" ); + + return; + } + + $this->applyPatch( 'patch-auto_increment_triggers.sql', false ); + + $this->output( "ok\n" ); + } + /** * rebuilding of the function that duplicates tables for tests */ diff --git a/includes/installer/PostgresInstaller.php b/includes/installer/PostgresInstaller.php index b501cb37fa..1a3fb104f6 100644 --- a/includes/installer/PostgresInstaller.php +++ b/includes/installer/PostgresInstaller.php @@ -594,7 +594,7 @@ class PostgresInstaller extends DatabaseInstaller { return $status; } - /** @var $conn DatabasePostgres */ + /** @var DatabasePostgres $conn */ $conn = $status->value; if ( $conn->tableExists( 'archive' ) ) { diff --git a/includes/installer/PostgresUpdater.php b/includes/installer/PostgresUpdater.php index 0172f1a4e5..07aeb13d1d 100644 --- a/includes/installer/PostgresUpdater.php +++ b/includes/installer/PostgresUpdater.php @@ -452,6 +452,35 @@ class PostgresUpdater extends DatabaseUpdater { [ 'addPgIndex', 'externallinks', 'el_from_index_60', '( el_from, el_index_60, el_id )' ], [ 'addPgField', 'user_groups', 'ug_expiry', "TIMESTAMPTZ NULL" ], [ 'addPgIndex', 'user_groups', 'user_groups_expiry', '( ug_expiry )' ], + + // 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' ], ]; } @@ -754,11 +783,12 @@ END; $info = $this->db->fieldInfo( $table, $field ); if ( $info->defaultValue() !== $default ) { $this->output( "Changing '$table.$field' default value\n" ); - $this->db->query( "ALTER TABLE $table ALTER $field SET DEFAULT " . $default ); + $this->db->query( "ALTER TABLE $table ALTER $field SET DEFAULT " + . $this->db->addQuotes( $default ) ); } } - 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" ); @@ -768,6 +798,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 394337411d..d60d801bed 100644 --- a/includes/installer/SqliteInstaller.php +++ b/includes/installer/SqliteInstaller.php @@ -32,7 +32,8 @@ use Wikimedia\Rdbms\DBConnectionError; * @since 1.17 */ class SqliteInstaller extends DatabaseInstaller { - const MINIMUM_VERSION = '3.3.7'; + + public $minimumVersion = '3.3.7'; /** * @var DatabaseSqlite @@ -60,8 +61,8 @@ class SqliteInstaller extends DatabaseInstaller { $result = Status::newGood(); // Bail out if SQLite is too old $db = DatabaseSqlite::newStandaloneInstance( ':memory:' ); - if ( version_compare( $db->getServerVersion(), self::MINIMUM_VERSION, '<' ) ) { - $result->fatal( 'config-outdated-sqlite', $db->getServerVersion(), self::MINIMUM_VERSION ); + if ( version_compare( $db->getServerVersion(), $this->minimumVersion, '<' ) ) { + $result->fatal( 'config-outdated-sqlite', $db->getServerVersion(), $this->minimumVersion ); } // Check for FTS3 full-text search module if ( DatabaseSqlite::getFulltextSearchModule() != 'FTS3' ) { @@ -266,8 +267,8 @@ EOT; } /** - * @param $dir - * @param $db + * @param string $dir + * @param string $db * @return Status */ protected function makeStubDBFile( $dir, $db ) { @@ -295,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 9c90283853..9f71001441 100644 --- a/includes/installer/SqliteUpdater.php +++ b/includes/installer/SqliteUpdater.php @@ -54,7 +54,6 @@ class SqliteUpdater extends DatabaseUpdater { [ 'doLogUsertextPopulation' ], [ 'doLogSearchPopulation' ], [ 'addTable', 'l10n_cache', 'patch-l10n_cache.sql' ], - [ 'addIndex', 'log_search', 'ls_field_val', 'patch-log_search-rename-index.sql' ], [ 'addIndex', 'change_tag', 'change_tag_rc_tag', 'patch-change_tag-indexes.sql' ], [ 'addField', 'redirect', 'rd_interwiki', 'patch-rd_interwiki.sql' ], [ 'doUpdateTranscacheField' ], @@ -165,6 +164,35 @@ class SqliteUpdater extends DatabaseUpdater { [ 'addField', 'externallinks', 'el_index_60', 'patch-externallinks-el_index_60.sql' ], [ 'addField', 'user_groups', 'ug_expiry', 'patch-user_groups-ug_expiry.sql' ], [ 'addIndex', 'image', 'img_user_timestamp', 'patch-image-user-index-2.sql' ], + + // 1.30 + [ 'modifyField', 'image', 'img_media_type', 'patch-add-3d.sql' ], + [ 'addTable', 'ip_changes', 'patch-ip_changes.sql' ], + [ 'renameIndex', 'categorylinks', 'cl_from', 'PRIMARY', false, + 'patch-categorylinks-fix-pk.sql' ], + [ 'renameIndex', 'templatelinks', 'tl_from', 'PRIMARY', false, + 'patch-templatelinks-fix-pk.sql' ], + [ 'renameIndex', 'pagelinks', 'pl_from', 'PRIMARY', false, 'patch-pagelinks-fix-pk.sql' ], + [ 'renameIndex', 'text', 'old_id', 'PRIMARY', false, 'patch-text-fix-pk.sql' ], + [ 'renameIndex', 'imagelinks', 'il_from', 'PRIMARY', false, 'patch-imagelinks-fix-pk.sql' ], + [ 'renameIndex', 'iwlinks', 'iwl_from', 'PRIMARY', false, 'patch-iwlinks-fix-pk.sql' ], + [ 'renameIndex', 'langlinks', 'll_from', 'PRIMARY', false, 'patch-langlinks-fix-pk.sql' ], + [ 'renameIndex', 'log_search', 'ls_field_val', 'PRIMARY', false, 'patch-log_search-fix-pk.sql' ], + [ 'renameIndex', 'module_deps', 'md_module_skin', 'PRIMARY', false, + 'patch-module_deps-fix-pk.sql' ], + [ 'renameIndex', 'objectcache', 'keyname', 'PRIMARY', false, 'patch-objectcache-fix-pk.sql' ], + [ 'renameIndex', 'querycache_info', 'qci_type', 'PRIMARY', false, + 'patch-querycache_info-fix-pk.sql' ], + [ 'renameIndex', 'site_stats', 'ss_row_id', 'PRIMARY', false, 'patch-site_stats-fix-pk.sql' ], + [ 'renameIndex', 'transcache', 'tc_url_idx', 'PRIMARY', false, 'patch-transcache-fix-pk.sql' ], + [ 'renameIndex', 'user_former_groups', 'ufg_user_group', 'PRIMARY', false, + 'patch-user_former_groups-fix-pk.sql' ], + [ 'renameIndex', 'user_properties', 'user_properties_user_property', 'PRIMARY', false, + 'patch-user_properties-fix-pk.sql' ], + [ 'addTable', 'comment', 'patch-comment-table.sql' ], + [ 'migrateComments' ], + [ 'renameIndex', 'l10n_cache', 'lc_lang_key', 'PRIMARY', false, + 'patch-l10n_cache-primary-key.sql' ], ]; } diff --git a/includes/installer/WebInstaller.php b/includes/installer/WebInstaller.php index a311ce96ed..e0e54c845b 100644 --- a/includes/installer/WebInstaller.php +++ b/includes/installer/WebInstaller.php @@ -703,7 +703,7 @@ class WebInstaller extends Installer { "escaped() . "\">" . wfMessage( 'config-help' )->escaped() . "\n" . - "" . $html . "\n" . + "
    " . $html . "
    \n" . "\n"; } @@ -1005,6 +1005,7 @@ class WebInstaller extends Installer { * * @see getRadioSet * + * @param mixed[] $params * @return array */ public function getRadioElements( $params ) { 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/csb.json b/includes/installer/i18n/csb.json index 2ba47f158b..defaf1bb06 100644 --- a/includes/installer/i18n/csb.json +++ b/includes/installer/i18n/csb.json @@ -1,4 +1,64 @@ { - "@metadata": [], - "mainpagetext": "'''MediaWiki òsta zainstalowónô.'''" + "@metadata": { + "authors": [ + "Kaszeba" + ] + }, + "config-desc": "Jinstalownik MediaWiki", + "config-title": "Jinstalowanié MediaWiki $1", + "config-information": "Wëdowiédzô", + "config-localsettings-key": "Klucz aktualizacëji:", + "config-localsettings-badkey": "Lëchi klucz aktualizacëji.", + "config-session-error": "Fela zrëszeniô sesëji – $1", + "config-your-language": "Twój jãzëk:", + "config-your-language-help": "Wybierzë jãzëk procesu jinstalacëji.", + "config-wiki-language": "Jãzëk wiki:", + "config-back": "← Nazôd", + "config-continue": "Dali →", + "config-page-language": "Jãzëk", + "config-page-welcome": "Witómë w MediaWiki!", + "config-page-dbconnect": "Sparłãczë z bazą pòdôwków", + "config-page-upgrade": "Zaktualnienié jinstalacëji", + "config-page-dbsettings": "Nastôw bazë pòdôwków", + "config-page-name": "Miono", + "config-page-options": "Òptacëje", + "config-page-install": "Wjinstalëjë", + "config-page-complete": "Fardich!", + "config-page-restart": "Zrëszë jinstalacëjã znowa", + "config-page-readme": "Spòdlowô wëdowiédzô", + "config-page-releasenotes": "Wëdowiédzô ò wersëji", + "config-page-copying": "Kòpérowanié", + "config-page-upgradedoc": "Zaktualnienié", + "config-page-existingwiki": "Egyzstëjącô wiki", + "config-restart": "Jo, zrëszë znowa", + "config-env-php": "PHP $1 je wjinastalowóné", + "config-env-hhvm": "HHVM $1 je wjinastalowóné", + "config-memory-raised": "Paraméter PHP memory_limit $1 òstôł zwikszony do $2.", + "config-xcache": "[Http://trac.lighttpd.net/xcache/ XCache] je wjinstalowóny", + "config-apc": "[Http://www.php.net/apc APC] je wjinstalowóny", + "config-apcu": "[http://www.php.net/apcu APCu] je wjinstalowóny", + "config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] je wjinstalowóny", + "config-diff3-bad": "Felënk GNU diff3.", + "config-mysql-innodb": "InnoDB", + "config-mysql-myisam": "MyISAM", + "config-mysql-binary": "binarny", + "config-mysql-utf8": "UTF‐8", + "config-site-name": "Miono wiki:", + "config-site-name-blank": "Wpiszë miono starnów.", + "config-ns-other-default": "MòjôWiki", + "config-admin-box": "Kònto sprôwnika", + "config-admin-name": "Twòjé miono brëkòwnika:", + "config-admin-password": "Parola:", + "config-admin-password-confirm": "Pòwtórzë parolã:", + "config-admin-name-blank": "Wpiszë miono brëkòwnika, chtëren bãdze sprôwnikã.", + "config-admin-email": "E-mailowô adresa:", + "config-license-none": "Felënk stopczi z licencëją", + "config-email-settings": "Nastôwë e-mail", + "config-logo": "Adresa URL logo:", + "config-skins": "Wëzdrzatk", + "config-skins-use-as-default": "Ùżëjë tegò wëzdrzatkù za domëslny", + "config-install-step-done": "fardich", + "config-install-step-failed": "nie dzrzëło sã", + "config-help": "pòmòc", + "mainpagetext": "MediaWiki òsta wjinstalowónô." } diff --git a/includes/installer/i18n/da.json b/includes/installer/i18n/da.json index dacdf811a1..2afd2ca5dd 100644 --- a/includes/installer/i18n/da.json +++ b/includes/installer/i18n/da.json @@ -6,7 +6,8 @@ "Tjernobyl", "Thomsen", "MGA73", - "Mads Haupt" + "Mads Haupt", + "Joedalton" ] }, "config-desc": "Installationsprogrammet til MediaWiki", @@ -15,8 +16,11 @@ "config-localsettings-upgrade": "En LocalSettings.php-fil er blevet fundet.\nFor at opgradere imstallationen, skriv venligst værdien af $wgUpgradeKey i boksen nedenfor.\nDu finder denne i LocalSettings.php.", "config-localsettings-cli-upgrade": "En LocalSettings.php-fil er blevet fundet.\nFor at opgradere installationen skal du køre update.php i stedet for", "config-localsettings-key": "Opgraderingsnøgle:", - "config-localsettings-badkey": "Den nøgle du indtastede er forkert.", + "config-localsettings-badkey": "Den indtastede opgraderingsnøgle er forkert.", "config-upgrade-key-missing": "En eksisterende installation af MediaWiki er blevet fundet.\nFor at opgradere denne installation skal du tilføje følgende linje i bunden af din LocalSettings.php:\n\n$1", + "config-localsettings-incomplete": "Den eksisterende LocalSettings.php ser ud til at være ufuldstændig.\nVariablen $1 er ikke angivet.\nÆndr venligst LocalSettings.php så denne variabel er angivet, og klik på »{{int:Config-continue}}«.", + "config-localsettings-connection-error": "Der opstod en fejl under tilslutningen til databasen med indstillingerne angivet i LocalSettings.php. Ret venligst disse indstillinger og prøv igen.\n\n$1", + "config-session-error": "Der opstod en fejl under start af session: $1", "config-your-language": "Dit sprog:", "config-your-language-help": "Vælg et sprog som du vil bruge under installationen.", "config-wiki-language": "Wiki-sprog:", @@ -43,13 +47,37 @@ "config-db-type": "Databasetype:", "config-db-host": "Databasevært:", "config-db-name": "Databasenavn:", + "config-db-install-account": "Brugerkonto for installation", + "config-db-username": "Databasens brugernavn:", + "config-db-password": "Databasens adgangskode:", + "config-db-install-username": "Indtast brugernavnet som vil blive brugt til at forbinde til databasen under installationsprocessen.\nDette er ikke brugernavnet for MediaWiki-kontoen; det er brugernavnet på din database.", "config-mysql-old": "MySQL $1 eller nyere kræves. Du har $2.", + "config-type-mssql": "Microsoft SQL-server", "config-header-mysql": "MySQL-indstillinger", "config-header-postgres": "PostgreSQL-indstillinger", "config-header-sqlite": "SQLite-indstillinger", "config-header-oracle": "Oracle-indstillinger", "config-invalid-db-type": "Ugyldig databasetype", + "config-mssql-windowsauth": "Windows-godkendelse", + "config-site-name": "Navn på wiki:", + "config-site-name-blank": "Indtast et hjemmesidenavn.", + "config-ns-generic": "Projekt", + "config-admin-box": "Administratorkonto", + "config-admin-name": "Dit brugernavn:", + "config-admin-password": "Adgangskode:", + "config-admin-password-confirm": "Tast adgangskoden igen:", + "config-admin-email": "E-postadresse:", + "config-optional-continue": "Stil mig flere spørgsmål.", + "config-profile-wiki": "Åbn wiki", + "config-profile-no-anon": "Kontooprettelse er krævet", + "config-profile-fishbowl": "Kun godkendte redaktører", + "config-profile-private": "Privat wiki", + "config-license": "Ophavsret og licens:", + "config-license-pd": "Offentlig ejendom", "config-email-usertalk": "Aktiver notifikationer for brugerdiskussionsside", + "config-upload-deleted": "Mappe for slettede filer:", + "config-help": "hjælp", + "config-help-tooltip": "klik for at udvide", "mainpagetext": "'''MediaWiki er nu installeret.'''", "mainpagedocfooter": "Se [https://meta.wikimedia.org/wiki/Help:Contents brugervejledningen] for oplysninger om brugen af wikiprogrammellet.\n\n== At komme i gang ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Listen over opsætningsmuligheder]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki ofte stillede spørgsmål]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Postliste angående udgivelser af MediaWiki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Oversæt MediaWiki til dit sprog]" } diff --git a/includes/installer/i18n/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..be2e65a534 100644 --- a/includes/installer/i18n/es.json +++ b/includes/installer/i18n/es.json @@ -109,6 +109,7 @@ "config-no-cli-uploads-check": "Advertencia: tu directorio predeterminado para cargas ($1) no está comprobado contra la vulnerabilidad\n de ejecución arbitraria de \"scripts\" durante la instalación por línea de comandos.", "config-brokenlibxml": "El sistema tiene una combinación de versiones de PHP y de libxml2 que es poco confiable y puede provocar corrupción oculta en los datos de MediaWiki y otras aplicaciones web.\nActualiza a libxml2 2.7.3 o posterior ([https://bugs.php.net/bug.php?id=45996 bug reportado con PHP]).\nInstalación abortada.", "config-suhosin-max-value-length": "Suhosin está instalado y limita el parámetro length GET a $1 bytes.\nEl componente ResourceLoader (gestor de recursos) de MediaWiki trabajará en este límite, pero eso perjudicará el rendimiento.\nSi es posible, deberías establecer suhosin.get.max_value_length en el valor 1024 o superior en php.ini y establecer $wgResourceLoaderMaxQueryLength en el mismo valor en php.ini.", + "config-using-32bit": "Atención: parece que el sistema funciona con enteros de 32 bits. Esto está [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:32-bit desaconsejado].", "config-db-type": "Tipo de base de datos:", "config-db-host": "Servidor de la base de datos:", "config-db-host-help": "Si tu servidor de base de datos está en otro servidor, escribe el nombre del equipo o su dirección IP aquí.\n\nSi estás utilizando alojamiento web compartido, tu proveedor debería darte el nombre correcto del servidor en su documentación.\n\nSi vas a instalar en un servidor Windows y a utilizar MySQL, el uso de \"localhost\" como nombre del servidor puede no funcionar. Si es así, intenta poner \"127.0.0.1\" como dirección IP local.\n\nSi utilizas PostgreSQL, deja este campo vacío para conectarse a través de un socket de Unix.", @@ -165,7 +166,7 @@ "config-connection-error": "$1.\n\nVerifica el servidor, el nombre de usuario y la contraseña, e intenta de nuevo.", "config-invalid-schema": "El esquema de la base de datos \"$1\" es inválido.\nUse sólo carateres ASCII: letras (a-z, A-Z), guarismos (0-9) y guiones bajos (_).", "config-db-sys-create-oracle": "El instalador sólo admite el empleo de cuentas SYSDBA como método para crear una cuenta nueva.", - "config-db-sys-user-exists-oracle": "La cuenta de usuario \"$1\" ya existe. ¡SYSDBA sólo puede utilizarse para crear una nueva cuenta!", + "config-db-sys-user-exists-oracle": "La cuenta de usuario «$1» ya existe. SYSDBA solo puede utilizarse para crear cuentas nuevas.", "config-postgres-old": "Se requiere PostgreSQL $1 o posterior. Tienes la versión $2.", "config-mssql-old": "Se requiere Microsoft SQL Server $1 o posterior. Tienes la versión $2.", "config-sqlite-name-help": "Elige el nombre que identificará a tu wiki.\nNo uses espacios o guiones.\nEste nombre se usará como nombre del archivo de datos de SQLite.", @@ -235,11 +236,11 @@ "config-pingback-help": "Si seleccionas esta opción, MediaWiki enviará periódicamente a https://www.mediawiki.org datos básicos sobre esta instancia de MediaWiki. Se trata de datos tales como el tipo de sistema, la versión de PHP y la base de datos elegida. La Fundación Wikimedia comparte estos datos con los desarrolladores de MediaWiki para ayudar a guiar el desarrollo futuro. Se enviarán los siguientes datos para tu sistema:\n
    $1
    ", "config-almost-done": "¡Ya casi has terminado!\nAhora puedes saltarte el resto de los pasos e instalar el wiki ya.", "config-optional-continue": "Hazme más preguntas.", - "config-optional-skip": "Ya estoy aburrido, sólo instala el wiki.", + "config-optional-skip": "Ya me aburrí. Tan solo instala el wiki.", "config-profile": "Perfil de derechos de usuario:", "config-profile-wiki": "Wiki abierto", "config-profile-no-anon": "Creación de cuenta requerida", - "config-profile-fishbowl": "Sólo editores autorizados", + "config-profile-fishbowl": "Solo editores autorizados", "config-profile-private": "Wiki privado", "config-profile-help": "Los wikis funcionan mejor cuando dejas que los edite tanta gente como sea posible.\nEn MediaWiki, es fácil revisar los cambios recientes y revertir los daños realizados por usuarios malintencionados o novatos.\nSin embargo, muchos han encontrado que MediaWiki es útil para una amplia variedad de funciones, y a veces no es fácil convencer a todos de los beneficios de la forma wiki.\nPor lo tanto tienes la elección.\n\nEl modelo {{int:config-profile-wiki}} permite que cualquiera pueda editar, sin siquiera iniciar sesión.\nUn wiki con {{int:config-profile-no-anon}} ofrece rendición de cuentas adicional, pero puede disuadir a colaboradores casuales.\n\nEl modelo {{int:config-profile-fishbowl}} permite editar a los usuarios autorizados, pero el público puede ver las páginas, incluyendo el historial.\nUn {{int:config-profile-private}} sólo permite ver páginas a los usuarios autorizados, el mismo grupo al que le está permitido editar.\n\nConfiguraciones más complejas de permisos de usuario están disponibles después de la instalación. Consulta [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:User_rights la entrada correspondiente del manual].", "config-license": "Derechos de autor y licencia:", @@ -342,6 +343,8 @@ "config-help-tooltip": "haz clic para ampliar", "config-nofile": "El archivo \"$1\" no se pudo encontrar. ¿Se ha eliminado?", "config-extension-link": "¿Sabías que tu wiki admite [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions extensiones]?\n\nPuedes navegar por las [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category categorías] o visitar el [https://www.mediawiki.org/wiki/Extension_Matrix centro de extensiones] para ver una lista completa.", + "config-skins-screenshots": "$1 (capturas de pantalla: $2)", + "config-screenshot": "captura de pantalla", "mainpagetext": "MediaWiki se ha instalado.", "mainpagedocfooter": "Consulta la [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents guía] para obtener información sobre el uso del software wiki.\n\n== Primeros pasos ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Lista de ajustes de configuración]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Preguntas frecuentes sobre MediaWiki]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista de correo de anuncios de publicación de MediaWiki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Traducir MediaWiki a tu idioma]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Aprende a combatir el spam en tu wiki]" } diff --git a/includes/installer/i18n/eu.json b/includes/installer/i18n/eu.json index 430345efd3..0591cbb0b1 100644 --- a/includes/installer/i18n/eu.json +++ b/includes/installer/i18n/eu.json @@ -4,7 +4,8 @@ "An13sa", "පසිඳු කාවින්ද", "Subi", - "Sator" + "Sator", + "Mikel Ibaiba" ] }, "config-desc": "MediaWiki instalatzailea", @@ -97,8 +98,10 @@ "config-license-pd": "Domeinu Askea", "config-license-cc-choose": "Aukeratu Creative Commons lizentzia pertsonalizatua", "config-email-settings": "E-posta hobespenak", + "config-email-sender": "Itzuli helbide elektronikoa:", "config-upload-settings": "Irudi eta fitxategi igoerak", "config-upload-enable": "Fitxategi igoera gaitu", + "config-upload-deleted": "Ezabatutako artxiboentzako direktorioa:", "config-logo": "Logo URL:", "config-instantcommons": "Instant Commons gaitu", "config-cc-again": "Berriz aukeratu...", @@ -106,10 +109,14 @@ "config-extensions": "Luzapenak", "config-skins": "Itxurak", "config-install-step-done": "egina", + "config-install-step-failed": "Huts egin du", "config-install-extensions": "Luzapenak barne", "config-install-database": "Datu-basea konfiguratu", "config-install-schema": "Eskema sortu", + "config-install-user": "Datubase erabiltzailea sortzen", "config-install-user-alreadyexists": "\"$1\" erabiltzailea badago.", + "config-install-user-create-failed": "$1 erabiltzailea sortzerakoan huts egin du: $2", + "config-install-user-grant-failed": "$1ri baimena emateak huts egin du: $2", "config-install-tables": "Taulak sortzen", "config-install-interwiki-list": "Ezin izan da interwiki.list fitxategia irakurri.", "config-install-stats": "Estatistikak hasten", diff --git a/includes/installer/i18n/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 db21da6e64..50521f6970 100644 --- a/includes/installer/i18n/fr.json +++ b/includes/installer/i18n/fr.json @@ -81,7 +81,7 @@ "config-outdated-sqlite": "'''Attention''': vous avez SQLite $1, qui est inférieur à la version minimale requise $2. SQLite sera indisponible.", "config-no-fts3": "'''Attention :''' SQLite est compilé sans le module [//sqlite.org/fts3.html FTS3] ; les fonctions de recherche ne seront pas disponibles sur ce moteur.", "config-pcre-old": "'''Fatal :''' PCRE $1 ou ultérieur est nécessaire.\nVotre binaire PHP est lié avec PCRE $2.\n[https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/Plus d’information sur PCRE].", - "config-pcre-no-utf8": "'''Erreur fatale''': Le module PCRE de PHP semble être compilé sans le support PCRE_UTF8.\nMédiaWiki nécessite la gestion d’UTF-8 pour fonctionner correctement.", + "config-pcre-no-utf8": "Erreur fatale: le module PCRE de PHP semble être compilé sans la prise en charge de PCRE_UTF8.\nMédiaWiki a besoin de la gestion d’UTF-8 pour fonctionner correctement.", "config-memory-raised": "Le paramètre memory_limit de PHP était à $1, porté à $2.", "config-memory-bad": "'''Attention :''' Le paramètre memory_limit de PHP est à $1.\nCette valeur est probablement trop faible.\nIl est possible que l’installation échoue !", "config-xcache": "[http://xcache.lighttpd.net/ XCache] est installé", @@ -89,7 +89,7 @@ "config-apcu": "[http://www.php.net/apcu APCu] est installé", "config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] est installé", "config-no-cache-apcu": "Attention : Impossible de trouver [http://www.php.net/apcu APCu], [http://xcache.lighttpd.net/ XCache] ou [http://www.iis.net/download/WinCacheForPhp WinCache].\nLa mise en cache d'objets n'est pas activée.", - "config-mod-security": "'''Attention''': Votre serveur web a [http://modsecurity.org/ mod_security] activé. S'il est mal configuré, cela peut poser des problèmes à MediaWiki ou à d'autres applications qui permettent aux utilisateurs de publier un contenu quelconque.\nReportez-vous à [http://modsecurity.org/documentation/ la documentation de mod_security] ou contactez le support de votre hébergeur si vous rencontrez des erreurs aléatoires.", + "config-mod-security": "'''Attention''': Votre serveur web a [http://modsecurity.org/ mod_security] activé. S’il est mal configuré, cela peut poser des problèmes à MediaWiki ou à d’autres applications qui permettent aux utilisateurs de publier un contenu quelconque.\nReportez-vous à [http://modsecurity.org/documentation/ la documentation de mod_security] ou contactez le soutien de votre hébergeur si vous rencontrez des erreurs aléatoires.", "config-diff3-bad": "GNU diff3 introuvable.", "config-git": "Logiciel de contrôle de version Git trouvé : $1.", "config-git-bad": "Logiciel de contrôle de version Git non trouvé.", @@ -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.", @@ -140,11 +141,11 @@ "config-type-oracle": "Oracle", "config-type-mssql": "Microsoft SQL Server", "config-support-info": "MediaWiki prend en charge ces systèmes de bases de données :\n\n$1\n\nSi vous ne voyez pas le système de base de données que vous essayez d’utiliser ci-dessous, alors suivez les instructions ci-dessus (voir liens) pour activer la prise en charge.", - "config-dbsupport-mysql": "* [{{int:version-db-mysql-url}} MySQL] est le premier choix pour MediaWiki et est le mieux pris en charge. MediaWiki fonctionne aussi avec [{{int:version-db-mariadb-url}} MariaDB] et [{{int:version-db-percona-url}} Percona Server], qui sont compatibles avec MySQL. ([http://www.php.net/manual/en/mysqli.installation.php Comment compiler PHP avec le support MySQL])", - "config-dbsupport-postgres": "* [{{int:version-db-postgres-url}} PostgreSQL] est un système de base de données populaire et ''open source'' qui peut être une alternative à MySQL ([http://www.php.net/manual/en/pgsql.installation.php Comment compiler PHP avec le support de PostgreSQL]).", + "config-dbsupport-mysql": "* [{{int:version-db-mysql-url}} MySQL] est le premier choix pour MediaWiki et est le mieux pris en charge. MediaWiki fonctionne aussi avec [{{int:version-db-mariadb-url}} MariaDB] et [{{int:version-db-percona-url}} Percona Server], qui sont compatibles avec MySQL. ([http://www.php.net/manual/en/mysqli.installation.php Comment compiler PHP avec la prise en charge de MySQL])", + "config-dbsupport-postgres": "* [{{int:version-db-postgres-url}} PostgreSQL] est un système de base de données populaire en ''source ouverte'' qui peut être une alternative à MySQL ([http://www.php.net/manual/en/pgsql.installation.php Comment compiler PHP avec la prise en charge de PostgreSQL]).", "config-dbsupport-sqlite": "* [{{int:version-db-sqlite-url}} SQLite] est un système de base de données léger bien pris en charge. ([http://www.php.net/manual/fr/pdo.installation.php Comment compiler PHP avec la prise en charge de SQLite], en utilisant PDO)", - "config-dbsupport-oracle": "* [{{int:version-db-oracle-url}} Oracle] est un système commercial de gestion de base de données d’entreprise. ([http://www.php.net/manual/en/oci8.installation.php Comment compiler PHP avec le support OCI8])", - "config-dbsupport-mssql": "* [{{int:version-db-mssql-url}} Microsoft SQL Server] est une base de données commerciale d’entreprise pour Windows. ([http://www.php.net/manual/en/sqlsrv.installation.php Comment compiler PHP avec le support de SQLSRV])", + "config-dbsupport-oracle": "* [{{int:version-db-oracle-url}} Oracle] est un système commercial de gestion de base de données d’entreprise. ([http://www.php.net/manual/en/oci8.installation.php Comment compiler PHP avec la prise en charge d’OCI8])", + "config-dbsupport-mssql": "* [{{int:version-db-mssql-url}} Microsoft SQL Server] est une base de données commerciale d’entreprise pour Windows. ([http://www.php.net/manual/en/sqlsrv.installation.php Comment compiler PHP avec la prise en charge de SQLSRV])", "config-header-mysql": "Paramètres de MySQL", "config-header-postgres": "Paramètres de PostgreSQL", "config-header-sqlite": "Paramètres de SQLite", @@ -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/ms.json b/includes/installer/i18n/ms.json index 71b50de519..61acd3ecf6 100644 --- a/includes/installer/i18n/ms.json +++ b/includes/installer/i18n/ms.json @@ -6,7 +6,8 @@ "SNN95", "MaxSem", "Aviator", - "Macofe" + "Macofe", + "Jeluang Terluang" ] }, "config-desc": "Pemasang MediaWiki", @@ -56,7 +57,7 @@ "config-outdated-sqlite": "Amaran: anda mempunyai SQLite $1 yang lebih rendah daripada versi keperluan minimum $1. SQLite tidak akan disediakan.", "config-no-fts3": "Amaran: SQLite disusun tanpa [//sqlite.org/fts3.html modil FTS3], maka ciri-ciri pencarian tidak akan disediakan pada backend ini.", "config-pcre-old": "Amaran keras: PCRE $1 ke atas diperlukan.\nBinari PHP anda berpaut dengan PCRE $2.\n[https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/PCRE Keterangan lanjut].", - "config-memory-bad": "Amaran: memory_limit (Had memori) PHP adalah $1.\nIni mungkin terlalu rendah.\nPemasangan mungkin akan gagal!", + "config-memory-bad": "Amaran: memory_limit (Had memori) PHP ialah $1.\nIni mungkin terlalu rendah.\nPemasangan mungkin akan gagal!", "config-xcache": "[http://xcache.lighttpd.net/ XCache] dipasang", "config-apc": "[http://www.php.net/apc APC] dipasang", "config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] dipasang", @@ -97,7 +98,7 @@ "config-mysql-engine": "Enjin storan:", "config-mysql-innodb": "InnoDB", "config-mysql-myisam": "MyISAM", - "config-mysql-only-myisam-dep": "Amaran: MyISAM adalah satu-satunya enjin storan yang terdapat untuk MySQL di mesin ini, dan penggunaannya dengan MediaWiki tidak digalakkan kerana:\n* ia tidak menyokong keserempakan (''concurrency'') disebabkan penguncian jadual\n* ia lebih terdedah kepada korupsi daripada enjin-enjin lain\n* pangkalan kod MediaWiki tidak sentiasa mengendalikan MyISAM seperti yang diharapkan\n\nPemasangan MySQL anda tidak menyokong InnoDB. Mungkin tiba masanya untuk naik taraf.", + "config-mysql-only-myisam-dep": "Amaran: MyISAM ialah satu-satunya enjin storan yang terdapat untuk MySQL di mesin ini, dan penggunaannya dengan MediaWiki tidak digalakkan kerana:\n* ia tidak menyokong keserempakan (''concurrency'') disebabkan penguncian jadual\n* ia lebih terdedah kepada korupsi daripada enjin-enjin lain\n* pangkalan kod MediaWiki tidak sentiasa mengendalikan MyISAM seperti yang diharapkan\n\nPemasangan MySQL anda tidak menyokong InnoDB. Mungkin tiba masanya untuk naik taraf.", "config-mysql-charset": "Peranggu aksara pangkalan data:", "config-mysql-binary": "Perduaan", "config-mysql-utf8": "UTF-8", 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-br.json b/includes/installer/i18n/pt-br.json index 5ae3a0c37e..7a490513d6 100644 --- a/includes/installer/i18n/pt-br.json +++ b/includes/installer/i18n/pt-br.json @@ -98,6 +98,7 @@ "config-no-cli-uploads-check": "Atenção: O seu diretório padrão para envios ($1) não está marcado para vulnerabilidade\npara execução de script arbitrário durante a instalação do CLI.", "config-brokenlibxml": "O sistema tem uma combinação de PHP e libxml2 que é conflitante e pode causar corrupção de dados ocultos no MediaWiki e outros aplicativos da web.\nAtualize para o libxml2 2.7.3 ou mais recente ([https://bugs.php.net/bug.php?id=45996 bugs com o PHP]).\nInstalação abortada.", "config-suhosin-max-value-length": "O Suhosin está instalado e limita o parâmetro GET length para $1 bytes. O componente ResourceLoader trabalhará em torno deste limite, mas degradará a performance.\nSe possível, defina suhosin.get.max_value_length em php.ini para 1024 ou mais e defina $wgResourceLoaderMaxQueryLength em LocalSettings.php para o mesmo valor.", + "config-using-32bit": "Aviso: o seu sistema parece estar sendo executado com inteiros de 32 bits. Isto [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:32-bit não é recomendado].", "config-db-type": "Tipo do banco de dados:", "config-db-host": "Servidor do banco de dados:", "config-db-host-help": "Se a banco de dados do seu servidor está em um servidor diferente, digite o nome do host ou o endereço IP aqui.\n\nSe você está utilizando uma hospedagem web compartilhada, o seu provedor de hospedagem deverá fornecer o nome do host correto na sua documentação.\n\nSe você está instalando em um servidor Windows e usando o MySQL, usar \"localhost\" pode não funcionar para o nome de servidor. Se não funcionar, tente \"127.0.0.1\" para o endereço de IP local.\n\nSe você está usando PostgreSQl, deixe este campo em branco para se conectar através de um socket Unix.", @@ -331,6 +332,8 @@ "config-help-tooltip": "clique para expandir", "config-nofile": "O arquivo \"$1\" não foi encontrado. Ele foi apagado?", "config-extension-link": "Você sabia que sua wiki suporta [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions extensões]?\n\nVocê pode explorar as [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category extensões por categoria] ou visitar a [https://www.mediawiki.org/wiki/Extension_Matrix Matriz de Extensões] para ver a lista completa.", + "config-skins-screenshots": "$1 (screenshots: $2)", + "config-screenshot": "screenshot", "mainpagetext": "O MediaWiki foi instalado.", "mainpagedocfooter": "Consulte o [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Manual de Usuário] para informações de como usar o software wiki.\n\n== Começando ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Lista de opções de configuração]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ FAQ do MediaWiki]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista de discussão com avisos de novas versões do MediaWiki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Traduza o MediaWiki para seu idioma]" } diff --git a/includes/installer/i18n/pt.json b/includes/installer/i18n/pt.json index 4f44ab81bc..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.", @@ -190,7 +191,7 @@ "config-mssql-windowsauth": "Autenticação do Windows", "config-site-name": "Nome da wiki:", "config-site-name-help": "Este nome aparecerá no título da janela do seu navegador e em vários outros sítios.", - "config-site-name-blank": "Introduza o nome do sítio.", + "config-site-name-blank": "Introduza o nome do site.", "config-project-namespace": "Espaço nominal do projeto:", "config-ns-generic": "Projeto", "config-ns-site-name": "O mesmo que o nome da wiki: $1", @@ -208,14 +209,14 @@ "config-admin-name-invalid": "O nome de utilizador especificado \"$1\" é inválido.\nIntroduza um nome de utilizador diferente.", "config-admin-password-blank": "Introduza uma palavra-passe para a conta de administrador.", "config-admin-password-mismatch": "As duas palavras-passe que introduziu não coincidem.", - "config-admin-email": "Correio electrónico:", + "config-admin-email": "Correio eletrónico:", "config-admin-email-help": "Introduza aqui um correio eletrónico que lhe permita receber mensagens de outros utilizadores da wiki, reiniciar a sua palavra-passe e receber notificações de alterações às suas páginas vigiadas. Pode deixar o campo vazio.", "config-admin-error-user": "Ocorreu um erro interno ao criar um administrador com o nome \"$1\".", "config-admin-error-password": "Ocorreu um erro interno ao definir uma palavra-passe para o administrador \"$1\":
    $2
    ", - "config-admin-error-bademail": "Introduziu um correio electrónico inválido", + "config-admin-error-bademail": "Introduziu um correio eletrónico inválido", "config-subscribe": "Subscrever a [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce lista de divulgação de anúncios de lançamento].", "config-subscribe-help": "Esta é uma lista de divulgação de baixo volume para anúncios de lançamento de versões novas, incluindo anúncios de segurança importantes.\nDeve subscrevê-la e atualizar a sua instalação MediaWiki quando são lançadas versões novas.", - "config-subscribe-noemail": "Tentou subscrever a lista de divulgação dos anúncios de novas versões, sem fornecer um endereço de correio electrónico.\nPara subscrever esta lista de divulgação tem de fornecer um endereço de correio electrónico.", + "config-subscribe-noemail": "Tentou subscrever a lista de divulgação dos anúncios de novas versões, sem fornecer um endereço de correio eletrónico.\nPara subscrever esta lista de divulgação tem de fornecer um endereço de correio eletrónico.", "config-pingback": "Partilhar dados sobre esta instalação com os programadores do MediaWiki.", "config-pingback-help": "Se selecionar esta opção, o MediaWiki fará periodicamente um ping a https://www.mediawiki.org com dados básicos acerca desta instância do MediaWiki. Estes dados incluem, por exemplo, o tipo de sistema, a versão do PHP e a base de dados que escolheu. A Wikimedia Foundation partilha estes dados com os programadores do MediaWiki, para ajudar a guiar o esforço de desenvolvimento futuro. Para o seu sistema, serão enviados os seguintes dados:\n
    $1
    ", "config-almost-done": "Está quase a terminar!\nAgora pode ignorar as restantes configurações e instalar já a wiki.", @@ -237,7 +238,7 @@ "config-license-pd": "Domínio Público", "config-license-cc-choose": "Selecionar uma licença personalizada Creative Commons", "config-license-help": "Muitas wikis de acesso público licenciam todas as colaborações com uma [http://freedomdefined.org/Definition licença livre].\nIsto ajuda a criar um sentido de propriedade da comunidade e encoraja as colaborações a longo prazo.\nTal não é geralmente necessário nas wikis privadas ou corporativas.\n\nSe pretende que seja possível usar textos da Wikipédia na sua wiki e que seja possível a Wikipédia aceitar textos copiados da sua wiki, deve escolher a licença {{int:config-license-cc-by-sa}}..\n\nA licença anterior da Wikipédia era a licença GNU Free Documentation License.\nA GFDL é uma licença válida, mas de difícil compreensão.\nTambém é difícil reutilizar conteúdos licenciados com a GFDL.", - "config-email-settings": "Definições do correio electrónico", + "config-email-settings": "Definições do correio eletrónico", "config-enable-email": "Ativar mensagens eletrónicas de saída", "config-enable-email-help": "Se quer que o correio eletrónico funcione, as [http://www.php.net/manual/en/mail.configuration.php definições de correio eletrónico do PHP] têm de estar configuradas corretamente.\nSe não pretende viabilizar qualquer funcionalidade de correio eletrónico, pode desativá-lo aqui.", "config-email-user": "Ativar mensagens eletrónicas entre utilizadores", @@ -248,8 +249,8 @@ "config-email-watchlist-help": "Permitir que os utilizadores recebam notificações de alterações às suas páginas vigiadas, se tiverem ativado esta funcionalidade nas suas preferências.", "config-email-auth": "Ativar autenticação do correio eletrónico", "config-email-auth-help": "Se esta opção for ativada, os utilizadores têm de confirmar o seu endereço de correio eletrónico usando um link que lhes é enviado sempre que o definirem ou alterarem.\nSó os endereços de correio eletrónico autenticados podem receber mensagens eletrónicas dos outros utilizadores ou alterar as mensagens de notificação.\nÉ '''recomendado''' que esta opção seja ativada nas wikis de acesso público para impedir o uso abusivo das funcionalidades de correio eletrónico.", - "config-email-sender": "Endereço de correio electrónico de retorno:", - "config-email-sender-help": "Introduza o endereço de correio electrónico que será usado como endereço de retorno nas mensagens electrónicas de saída.\nÉ para este endereço que serão enviadas as mensagens que não podem ser entregues.\nMuitos servidores de correio electrónico exigem que pelo menos a parte do nome do domínio seja válida. \\", + "config-email-sender": "Endereço de correio eletrónico de retorno:", + "config-email-sender-help": "Introduza o endereço de correio eletrónico que será usado como endereço de retorno nas mensagens eletrónicas de saída.\nÉ para este endereço que serão enviadas as mensagens que não podem ser entregues.\nMuitos servidores de correio eletrónico exigem que pelo menos a parte do nome do domínio seja válida. \\", "config-upload-settings": "Carregamento de imagens e ficheiros", "config-upload-enable": "Possibilitar o carregamento de ficheiros", "config-upload-help": "O carregamento de ficheiros expõe o seu servidor a riscos de segurança.\nPara mais informações, leia a [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Security secção sobre segurança] do Manual Técnico.\n\nPara permitir o carregamento de ficheiros, altere as permissões do subdiretório images no diretório de raiz do MediaWiki para que o servidor de Internet possa escrever nele.\nDepois ative esta opção.", @@ -258,7 +259,7 @@ "config-logo": "URL do logótipo:", "config-logo-help": "O tema padrão do MediaWiki inclui espaço para um logótipo de 135x160 píxeis acima do menu da barra lateral.\nColoque na wiki uma imagem com estas dimensões e introduza aqui o URL dessa imagem.\n\nSe não pretende usar um logótipo, deixe este campo em branco.", "config-instantcommons": "Ativar Instant Commons", - "config-instantcommons-help": "O [https://www.mediawiki.org/wiki/InstantCommons Instant Commons] é uma funcionalidade que permite que as wikis usem imagens, áudio e outros ficheiros multimédia disponíveis no sítio [https://commons.wikimedia.org/ Wikimedia Commons].\nPara poder usá-los, o MediaWiki necessita de acesso à Internet.\n\nPara mais informações sobre esta funcionalidade, incluindo instruções sobre como configurá-la para usar outras wikis em vez da Wikimedia Commons, consulte o [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgForeignFileRepos Manual Técnico].", + "config-instantcommons-help": "O [https://www.mediawiki.org/wiki/InstantCommons Instant Commons] é uma funcionalidade que permite que as wikis usem imagens, áudio e outros ficheiros multimédia disponíveis no site [https://commons.wikimedia.org/ Wikimedia Commons].\nPara poder usá-los, o MediaWiki necessita de acesso à Internet.\n\nPara mais informações sobre esta funcionalidade, incluindo instruções sobre como configurá-la para usar outras wikis em vez da Wikimedia Commons, consulte o [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgForeignFileRepos Manual Técnico].", "config-cc-error": "O auxiliar de escolha de licenças da Creative Commons não produziu resultados.\nIntroduza o nome da licença manualmente.", "config-cc-again": "Escolha outra vez...", "config-cc-not-chosen": "Escolha a licença da Creative Commons que pretende e clique \"proceed\".", @@ -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/roa-tara.json b/includes/installer/i18n/roa-tara.json index 09f2537361..11c13d7f8b 100644 --- a/includes/installer/i18n/roa-tara.json +++ b/includes/installer/i18n/roa-tara.json @@ -53,6 +53,9 @@ "config-invalid-db-type": "Tipe de database invalide.", "config-mysql-innodb": "InnoDB", "config-mysql-myisam": "MyISAM", + "config-mysql-binary": "Binarie", + "config-mysql-utf8": "UTF-8", + "config-ns-generic": "Proggette", "config-admin-email": "Indirizze e-mail:", "config-install-step-done": "fatte", "config-install-step-failed": "fallite", 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/tr.json b/includes/installer/i18n/tr.json index c3a75398e2..bc5be92a77 100644 --- a/includes/installer/i18n/tr.json +++ b/includes/installer/i18n/tr.json @@ -17,7 +17,8 @@ "HakanIST", "McAang", "Elftrkn", - "Vito Genovese" + "Vito Genovese", + "Incelemeelemani" ] }, "config-desc": "MediaWiki yükleyicisi", @@ -228,6 +229,8 @@ "config-install-interwiki-exists": "''' Uyarı:'' ' interwiki Tablo girdileri zaten görünüyor.\nVarsayılan liste atlanıyor.", "config-install-stats": "Ä°statistik başlatılıyor", "config-install-keys": "Gizli anahtar oluşturma", + "config-install-updates-failed": "Hata: Güncelleme anahtarlarını tablolara ekleme şu hatayla başarısız oldu: $1", + "config-install-sysop": "Yönetici kullanıcı hesabı oluşturma", "config-install-subscribe-notpossible": "cURL yüklü değil ve allow_url_fopen kullanılamaz.", "config-install-mainpage": "Varsayılan içerik ile anasayfa oluşturma", "config-install-extension-tables": "Uzantılar için etkinleştirilmiş tablolar oluşturma", @@ -237,6 +240,8 @@ "config-help-tooltip": "genişletmek için tıklayın", "config-nofile": "\"$1\" dosyası bulunamadı. Silindi mi?", "config-extension-link": "Vikinizin [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions eklentileri] desteklediğini biliyor musunuz?\n\n[https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category Eklentileri kategorilerine göre] inceleyebilir ya da tüm eklentilerin listesini görmek için [https://www.mediawiki.org/wiki/Extension_Matrix Eklenti Matrisine] bakabilirsiniz.", + "config-skins-screenshots": "$1 (ekran görüntüleri: $2)", + "config-screenshot": "ekran görüntüsü", "mainpagetext": "'''MediaWiki başarı ile kuruldu.'''", "mainpagedocfooter": "Viki yazılımının kullanımı hakkında bilgi almak için [https://meta.wikimedia.org/wiki/Help:Contents kullanıcı rehberine] bakınız.\n\n== Yeni Başlayanlar ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Yapılandırma ayarlarının listesi]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki SSS]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki e-posta listesi]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Kendi diliniz için MediaWiki yerelleştirmesi]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Kendi vikinizde spam ile nasıl savaşılacağını öğrennin]" } diff --git a/includes/installer/i18n/uk.json b/includes/installer/i18n/uk.json index 78730351b6..54339c3b3d 100644 --- a/includes/installer/i18n/uk.json +++ b/includes/installer/i18n/uk.json @@ -88,6 +88,7 @@ "config-no-cli-uploads-check": "'''Увага:''' Ваша типова папка для завантажень ($1) не перевірялась на вразливість до виконання довільних скриптів під час встановлення CLI.", "config-brokenlibxml": "У Вашій системі невдале поєднання версій PHP і libxml2, яке може спричинити пошкодження прихованих даних у MediaWiki та інших веб-застосунках.\nОновіть libxml2 до версії 2.7.3 або пізнішої ([https://bugs.php.net/bug.php?id=45996 відомості про помилку]).\nВстановлення перервано.", "config-suhosin-max-value-length": "Suhosin встановлено і обмежує параметра GET length до $1 байта. Компонент MediaWiki ResourceLoader буде обходити це обмеження, однак це зменшить продуктивність. Якщо це можливо, Вам варто встановити значення suhosin.get.max_value_length як 1024 і більше у php.ini і встановити таке ж значення $wgResourceLoaderMaxQueryLength у LocalSettings.php .", + "config-using-32bit": "Попередження: схоже, що Ваша система працює з 32-бітними цілими числами. Таке [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:32-bit не рекомендується].", "config-db-type": "Тип бази даних:", "config-db-host": "Хост бази даних:", "config-db-host-help": "Якщо сервер бази даних знаходиться на іншому сервері, введіть тут ім'я хосту і IP адресу.\n\nЯкщо Ви використовуєте віртуальний хостинг, Ваш хостинг-провайдер має надати Вам правильне ім'я хосту у його документації.\n\nЯкщо у Вас сервер із Windows Ви використовуєте MySQL, параметр \"localhost\" може не працювати для імені сервера. Якщо не працює, використайте \"127.0.0.1\" як локальну IP-адресу.\n\nЯкщо Ви використовуєте PostgreSQL, залиште це поле пустим, щоб під'єднатись через сокет Unix.", @@ -318,6 +319,8 @@ "config-help-tooltip": "натисніть, щоб розгорнути", "config-nofile": "Файл \"$1\" не знайдено. Його видалено?", "config-extension-link": "Чи знаєте ви, що ваше вікі підтримує [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions розширення]?\n\nВи можете переглядати [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category розширення по категорії] або в [https://www.mediawiki.org/wiki/Extension_Matrix матрицю розширень] щоб побачити повний список розширень.", + "config-skins-screenshots": "$1 (скріншоти: $2)", + "config-screenshot": "скріншот", "mainpagetext": "Програмне забезпечення «MediaWiki» встановлено.", "mainpagedocfooter": "Інформацію про роботу з цією вікі можна знайти на сторінці [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Довідка:Вміст].\n\n== Деякі корисні ресурси ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Список налаштувань];\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Часті питання з приводу MediaWiki];\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Розсилка повідомлень про появу нових версій MediaWiki];\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Локалізувати MediaWiki своєю мовою]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Дізнатися, як боротися зі спамом у своїй вікі]" } diff --git a/includes/installer/i18n/vi.json b/includes/installer/i18n/vi.json index 0a7f8cd248..1c441cd7e5 100644 --- a/includes/installer/i18n/vi.json +++ b/includes/installer/i18n/vi.json @@ -82,6 +82,7 @@ "config-no-cli-uploads-check": "Cảnh báo: ThÆ° mục tải lên mặc định của bạn ($1) không được kiểm tra lỗ hỏng bảo mật dễ bị khai thác bởi các đoạn mã thá»±c thi xấu trong quá trình cài đặt giao diện dòng lệnh.", "config-brokenlibxml": "Hệ thống của bạn có kết hợp các phiên bản lỗi lầm của PHP và libxml2, điều này có thể gây ra tổn thÆ°Æ¡ng không nhìn thấy được đối với dữ liệu trong MediaWiki và các ứng dụng Web khác.\nHãy nâng cấp lên phiên bản libxml2 2.7.3 trở lên ([https://bugs.php.net/bug.php?id=45996 lỗi nộp PHP]).\nCài đặt bị hủy bỏ.", "config-suhosin-max-value-length": "Suhosin được cài đặt và hạn chế tham số GET length (độ dài) không thể vượt quá $1 byte.\nThành phần ResourceLoader của MediaWiki sẽ khắc phục giới hạn này, nhÆ°ng điều này sẽ làm giảm hiệu suất.\nNếu có thể, bạn nên tăng suhosin.get.max_value_length lên 1024 trở lên trong php.ini, và đặt $wgResourceLoaderMaxQueryLength cùng giá trị trong LocalSettings.php.", + "config-using-32bit": "Cảnh báo: Máy của bạn hình nhÆ° sá»­ dụng các số nguyên 32 bit. Chế độ này [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:32-bit không được khuyên khích].", "config-db-type": "Kiểu cÆ¡ sở dữ liệu:", "config-db-host": "Máy chủ của cÆ¡ sở dữ liệu:", "config-db-host-help": "Nếu máy chủ cÆ¡ sở dữ liệu của bạn nằm trên máy chủ khác, hãy điền tên hoặc địa chỉ IP của máy chủ vào đây.\n\nNếu bạn đang dùng Web hosting chia sẻ, tài liệu của nhà cung cấp hosting của bạn sẽ có tên chính xác của máy chủ.\n\nNếu bạn đang cài đặt trên một máy chủ Windows và sá»­ dụng MySQL, việc dùng “localhost” có thể không hợp với tên máy chủ. Nếu bị nhÆ° vậy, hãy thá»­ “127.0.0.1” tức địa chỉ IP địa phÆ°Æ¡ng.\n\nNếu bạn đang dùng PostgreSQL, hãy để trống mục này để kết nối với một ổ cắm Unix.", @@ -312,6 +313,8 @@ "config-help-tooltip": "nhấn chuột để mở rộng", "config-nofile": "Không tìm thấy tập tin “$1”. Nó có phải bị xóa không?", "config-extension-link": "Bạn có biết rằng wiki của bạn có hỗ trợ [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions mở rộng]?\n\nBạn có thể truy cập [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category phần mở rộng theo thể loại] hoặc [https://www.mediawiki.org/wiki/Extension_Matrix Ma trận Mở rộng] để xem danh sách đầy đủ các phần mở rộng.", + "config-skins-screenshots": "$1 (ảnh chụp màn hình: $2)", + "config-screenshot": "ảnh chụp màn hình", "mainpagetext": "'''MediaWiki đã được cài đặt.'''", "mainpagedocfooter": "Xin đọc [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Hướng dẫn sá»­ dụng] để biết thêm thông tin về cách sá»­ dụng phần mềm wiki.\n\n== Để bắt đầu ==\n\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Danh sách các thiết lập cấu hình]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Các câu hỏi thường gặp MediaWiki]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Danh sách gá»­i thÆ° về việc phát hành MediaWiki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Tìm hiểu cách chống spam tại wiki của bạn]" } diff --git a/includes/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/interwiki/Interwiki.php b/includes/interwiki/Interwiki.php index 8dd6193a9d..2156820578 100644 --- a/includes/interwiki/Interwiki.php +++ b/includes/interwiki/Interwiki.php @@ -88,7 +88,7 @@ class Interwiki { * @since 1.26 */ public static function invalidateCache( $prefix ) { - return MediaWikiServices::getInstance()->getInterwikiLookup()->invalidateCache( $prefix ); + MediaWikiServices::getInstance()->getInterwikiLookup()->invalidateCache( $prefix ); } /** diff --git a/includes/jobqueue/JobQueue.php b/includes/jobqueue/JobQueue.php index d20a233ee2..1f4f179a67 100644 --- a/includes/jobqueue/JobQueue.php +++ b/includes/jobqueue/JobQueue.php @@ -378,7 +378,7 @@ abstract class JobQueue { // Flag this job as an old duplicate based on its "root" job... try { if ( $job && $this->isRootJobOldDuplicate( $job ) ) { - JobQueue::incrStats( 'dupe_pops', $this->type ); + self::incrStats( 'dupe_pops', $this->type ); $job = DuplicateJob::newFromJob( $job ); // convert to a no-op } } catch ( Exception $e ) { diff --git a/includes/jobqueue/JobQueueDB.php b/includes/jobqueue/JobQueueDB.php index cefe74df18..b68fdaefb3 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 ); } @@ -727,7 +734,6 @@ class JobQueueDB extends JobQueue { 'job_title' => $job->getTitle()->getDBkey(), 'job_params' => self::makeBlob( $job->getParams() ), // Additional job metadata - 'job_id' => $dbw->nextSequenceValue( 'job_job_id_seq' ), 'job_timestamp' => $dbw->timestamp(), 'job_sha1' => Wikimedia\base_convert( sha1( serialize( $job->getDeduplicationInfo() ) ), @@ -768,10 +774,15 @@ class JobQueueDB extends JobQueue { protected function getDB( $index ) { $lbFactory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory(); $lb = ( $this->cluster !== false ) - ? $lbFactory->getExternalLB( $this->cluster, $this->wiki ) + ? $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 7fdd617ab3..e74331113d 100644 --- a/includes/jobqueue/JobQueueFederated.php +++ b/includes/jobqueue/JobQueueFederated.php @@ -28,7 +28,7 @@ * For example, one can set $wgJobTypeConf['refreshLinks'] to point to a * JobQueueFederated instance, which itself would consist of three JobQueueRedis * instances, each using their own redis server. This would allow for the jobs - * to be split (evenly or based on weights) accross multiple servers if a single + * to be split (evenly or based on weights) across multiple servers if a single * server becomes impractical or expensive. Different JobQueue classes can be mixed. * * The basic queue configuration (e.g. "order", "claimTTL") of a federated queue @@ -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/JobQueueMemory.php b/includes/jobqueue/JobQueueMemory.php index 649e2af989..f9e2c3dc41 100644 --- a/includes/jobqueue/JobQueueMemory.php +++ b/includes/jobqueue/JobQueueMemory.php @@ -177,7 +177,7 @@ class JobQueueMemory extends JobQueue { return new MappedIterator( $unclaimed, function ( $value ) { - $this->jobFromSpecInternal( $value ); + return $this->jobFromSpecInternal( $value ); } ); } @@ -196,7 +196,7 @@ class JobQueueMemory extends JobQueue { return new MappedIterator( $claimed, function ( $value ) { - $this->jobFromSpecInternal( $value ); + return $this->jobFromSpecInternal( $value ); } ); } diff --git a/includes/jobqueue/JobQueueSecondTestQueue.php b/includes/jobqueue/JobQueueSecondTestQueue.php new file mode 100644 index 0000000000..4e3409af73 --- /dev/null +++ b/includes/jobqueue/JobQueueSecondTestQueue.php @@ -0,0 +1,282 @@ + $params['wiki'], 'type' => $params['type'] ]; + $this->mainQueue = JobQueue::factory( $params['mainqueue'] + $conf ); + $this->debugQueue = JobQueue::factory( $params['debugqueue'] + $conf ); + + // We need to construct parent after creating the main and debug queue + // because super constructor calls some methods we delegate to the main queue. + parent::__construct( $params ); + } + + /** + * Get the allowed queue orders for configuration validation + * + * @return array Subset of (random, timestamp, fifo, undefined) + */ + protected function supportedOrders() { + return $this->mainQueue->supportedOrders(); + } + + /** + * Get the default queue order to use if configuration does not specify one + * + * @return string One of (random, timestamp, fifo, undefined) + */ + protected function optimalOrder() { + return $this->mainQueue->optimalOrder(); + } + + /** + * Find out if delayed jobs are supported for configuration validation + * + * @return bool Whether delayed jobs are supported + */ + protected function supportsDelayedJobs() { + return $this->mainQueue->supportsDelayedJobs(); + } + + /** + * @see JobQueue::isEmpty() + * @return bool + */ + protected function doIsEmpty() { + return $this->mainQueue->doIsEmpty(); + } + + /** + * @see JobQueue::getSize() + * @return int + */ + protected function doGetSize() { + return $this->mainQueue->doGetSize(); + } + + /** + * @see JobQueue::getAcquiredCount() + * @return int + */ + protected function doGetAcquiredCount() { + return $this->mainQueue->doGetAcquiredCount(); + } + + /** + * @see JobQueue::getDelayedCount() + * @return int + */ + protected function doGetDelayedCount() { + return $this->mainQueue->doGetDelayedCount(); + } + + /** + * @see JobQueue::getAbandonedCount() + * @return int + */ + protected function doGetAbandonedCount() { + return $this->mainQueue->doGetAbandonedCount(); + } + + /** + * @see JobQueue::batchPush() + * @param IJobSpecification[] $jobs + * @param int $flags + */ + protected function doBatchPush( array $jobs, $flags ) { + $this->mainQueue->doBatchPush( $jobs, $flags ); + + try { + $this->debugQueue->doBatchPush( $jobs, $flags ); + } catch ( Exception $exception ) { + MWExceptionHandler::logException( $exception ); + } + } + + /** + * @see JobQueue::pop() + * @return Job|bool + */ + protected function doPop() { + return $this->mainQueue->doPop(); + } + + /** + * @see JobQueue::ack() + * @param Job $job + * @return Job|bool + */ + protected function doAck( Job $job ) { + return $this->mainQueue->doAck( $job ); + } + + /** + * @see JobQueue::deduplicateRootJob() + * @param IJobSpecification $job + * @throws MWException + * @return bool + */ + protected function doDeduplicateRootJob( IJobSpecification $job ) { + return $this->mainQueue->doDeduplicateRootJob( $job ); + } + + /** + * @see JobQueue::isRootJobOldDuplicate() + * @param Job $job + * @return bool + */ + protected function doIsRootJobOldDuplicate( Job $job ) { + return $this->mainQueue->doIsRootJobOldDuplicate( $job ); + } + + /** + * @param string $signature Hash identifier of the root job + * @return string + */ + protected function getRootJobCacheKey( $signature ) { + return $this->mainQueue->getRootJobCacheKey( $signature ); + } + + /** + * @see JobQueue::delete() + * @return bool + * @throws MWException + */ + protected function doDelete() { + return $this->mainQueue->doDelete(); + } + + /** + * @see JobQueue::waitForBackups() + * @return void + */ + protected function doWaitForBackups() { + $this->mainQueue->doWaitForBackups(); + } + + /** + * @see JobQueue::flushCaches() + * @return void + */ + protected function doFlushCaches() { + $this->mainQueue->doFlushCaches(); + } + + /** + * Get an iterator to traverse over all available jobs in this queue. + * This does not include jobs that are currently acquired or delayed. + * Note: results may be stale if the queue is concurrently modified. + * + * @return Iterator + * @throws JobQueueError + */ + public function getAllQueuedJobs() { + return $this->mainQueue->getAllQueuedJobs(); + } + + /** + * Get an iterator to traverse over all delayed jobs in this queue. + * Note: results may be stale if the queue is concurrently modified. + * + * @return Iterator + * @throws JobQueueError + * @since 1.22 + */ + public function getAllDelayedJobs() { + return $this->mainQueue->getAllDelayedJobs(); + } + + /** + * Get an iterator to traverse over all claimed jobs in this queue + * + * Callers should be quick to iterator over it or few results + * will be returned due to jobs being acknowledged and deleted + * + * @return Iterator + * @throws JobQueueError + * @since 1.26 + */ + public function getAllAcquiredJobs() { + return $this->mainQueue->getAllAcquiredJobs(); + } + + /** + * Get an iterator to traverse over all abandoned jobs in this queue + * + * @return Iterator + * @throws JobQueueError + * @since 1.25 + */ + public function getAllAbandonedJobs() { + return $this->mainQueue->getAllAbandonedJobs(); + } + + /** + * Do not use this function outside of JobQueue/JobQueueGroup + * + * @return string + * @since 1.22 + */ + public function getCoalesceLocationInternal() { + return $this->mainQueue->getCoalesceLocationInternal(); + } + + /** + * @see JobQueue::getSiblingQueuesWithJobs() + * @param array $types List of queues types + * @return array|null (list of queue types) or null if unsupported + */ + protected function doGetSiblingQueuesWithJobs( array $types ) { + return $this->mainQueue->doGetSiblingQueuesWithJobs( $types ); + } + + /** + * @see JobQueue::getSiblingQueuesSize() + * @param array $types List of queues types + * @return array|null (list of queue types) or null if unsupported + */ + protected function doGetSiblingQueueSizes( array $types ) { + return $this->mainQueue->doGetSiblingQueueSizes( $types ); + } + + /** + * @throws JobQueueReadOnlyError + */ + protected function assertNotReadOnly() { + $this->mainQueue->assertNotReadOnly(); + } +} 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/aggregator/JobQueueAggregator.php b/includes/jobqueue/aggregator/JobQueueAggregator.php index 7ce2c74fc2..f26beee4bd 100644 --- a/includes/jobqueue/aggregator/JobQueueAggregator.php +++ b/includes/jobqueue/aggregator/JobQueueAggregator.php @@ -79,6 +79,9 @@ abstract class JobQueueAggregator { /** * @see JobQueueAggregator::notifyQueueEmpty() + * @param string $wiki + * @param string $type + * @return bool */ abstract protected function doNotifyQueueEmpty( $wiki, $type ); @@ -97,6 +100,9 @@ abstract class JobQueueAggregator { /** * @see JobQueueAggregator::notifyQueueNonEmpty() + * @param string $wiki + * @param string $type + * @return bool */ abstract protected function doNotifyQueueNonEmpty( $wiki, $type ); 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..e8edab59b4 100644 --- a/includes/jobqueue/jobs/HTMLCacheUpdateJob.php +++ b/includes/jobqueue/jobs/HTMLCacheUpdateJob.php @@ -38,8 +38,15 @@ use MediaWiki\MediaWikiServices; class HTMLCacheUpdateJob extends Job { function __construct( Title $title, array $params ) { parent::__construct( 'htmlCacheUpdate', $title, $params ); - // Base backlink purge jobs can be de-duplicated - $this->removeDuplicates = ( !isset( $params['range'] ) && !isset( $params['pages'] ) ); + // Avoid the overhead of de-duplication when it would be pointless. + // Note that these jobs always set page_touched to the current time, + // so letting the older existing job "win" is still correct. + $this->removeDuplicates = ( + // Ranges rarely will line up + !isset( $params['range'] ) && + // Multiple pages per job make matches unlikely + !( isset( $params['pages'] ) && count( $params['pages'] ) != 1 ) + ); } /** @@ -96,7 +103,7 @@ class HTMLCacheUpdateJob extends Job { * @param array $pages Map of (page ID => (namespace, DB key)) entries */ protected function invalidateTitles( array $pages ) { - global $wgUpdateRowsPerQuery, $wgUseFileCache; + global $wgUpdateRowsPerQuery, $wgUseFileCache, $wgPageLanguageUseDB; // Get all page IDs in this query into an array $pageIds = array_keys( $pages ); @@ -113,6 +120,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 +137,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__ ); @@ -134,14 +145,21 @@ class HTMLCacheUpdateJob extends Job { // Get the list of affected pages (races only mean something else did the purge) $titleArray = TitleArray::newFromResult( $dbw->select( 'page', - [ 'page_namespace', 'page_title' ], + array_merge( + [ 'page_namespace', 'page_title' ], + $wgPageLanguageUseDB ? [ 'page_lang' ] : [] + ), [ 'page_id' => $pageIds, 'page_touched' => $dbw->timestamp( $touchTimestamp ) ], __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 +170,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..424fcecb2d 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 ) { @@ -207,7 +207,7 @@ class RefreshLinksJob extends Job { if ( $page->getTouched() >= $this->params['rootJobTimestamp'] || $opportunistic ) { // Cache is suspected to be up-to-date. As long as the cache rev ID matches // and it reflects the job's triggering change, then it is usable. - $parserOutput = ParserCache::singleton()->getDirty( $page, $parserOptions ); + $parserOutput = $services->getParserCache()->getDirty( $page, $parserOptions ); if ( !$parserOutput || $parserOutput->getCacheRevisionId() != $revision->getId() || $parserOutput->getCacheTime() < $skewedTimestamp @@ -234,7 +234,7 @@ class RefreshLinksJob extends Job { && $parserOutput->isCacheable() ) { $ctime = wfTimestamp( TS_MW, (int)$start ); // cache time - ParserCache::singleton()->save( + $services->getParserCache()->save( $parserOutput, $page, $parserOptions, $ctime, $revision->getId() ); } @@ -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/CSSMin.php b/includes/libs/CSSMin.php index ea0f1b7c74..a9c021e697 100644 --- a/includes/libs/CSSMin.php +++ b/includes/libs/CSSMin.php @@ -78,7 +78,12 @@ class CSSMin { $url = $match['file'][0]; // Skip fully-qualified and protocol-relative URLs and data URIs - if ( substr( $url, 0, 2 ) === '//' || parse_url( $url, PHP_URL_SCHEME ) ) { + // Also skips the rare `behavior` property specifying application's default behavior + if ( + substr( $url, 0, 2 ) === '//' || + parse_url( $url, PHP_URL_SCHEME ) || + substr( $url, 0, 9 ) === '#default#' + ) { break; } @@ -137,7 +142,23 @@ class CSSMin { if ( preg_match( '/^[\r\n\t\x20-\x7e]+$/', $contents ) ) { // Do not base64-encode non-binary files (sane SVGs). // (This often produces longer URLs, but they compress better, yielding a net smaller size.) - $uri = 'data:' . $type . ',' . rawurlencode( $contents ); + $encoded = rawurlencode( $contents ); + // Unencode some things that don't need to be encoded, to make the encoding smaller + $encoded = strtr( $encoded, [ + '%20' => ' ', // Unencode spaces + '%2F' => '/', // Unencode slashes + '%3A' => ':', // Unencode colons + '%3D' => '=', // Unencode equals signs + '%22' => '"', // Unencode double quotes + '%0A' => ' ', // Change newlines to spaces + '%0D' => ' ', // Change carriage returns to spaces + '%09' => ' ', // Change tabs to spaces + ] ); + // Consolidate runs of multiple spaces in a row + $encoded = preg_replace( '/ {2,}/', ' ', $encoded ); + // Remove leading and trailing spaces + $encoded = preg_replace( '/^ | $/', '', $encoded ); + $uri = 'data:' . $type . ',' . $encoded; if ( !$ie8Compat || strlen( $uri ) < self::DATA_URI_SIZE_LIMIT ) { return $uri; } @@ -183,17 +204,7 @@ class CSSMin { return self::$mimeTypes[$ext]; } - $realpath = realpath( $file ); - if ( - $realpath - && function_exists( 'finfo_file' ) - && function_exists( 'finfo_open' ) - && defined( 'FILEINFO_MIME_TYPE' ) - ) { - return finfo_file( finfo_open( FILEINFO_MIME_TYPE ), $realpath ); - } - - return false; + return mime_content_type( realpath( $file ) ); } /** @@ -212,7 +223,7 @@ class CSSMin { if ( preg_match( '!^[\w\d:@/~.%+;,?&=-]+$!', $url ) ) { return "url($url)"; } else { - return 'url("' . strtr( $url, [ '\\' => '\\\\', '"' => '\\"' ] ) . '")'; + return "url('" . strtr( $url, [ '\\' => '\\\\', "'" => "\\'" ] ) . "')"; } } @@ -252,7 +263,7 @@ class CSSMin { // quotation marks (e.g. "foo /* bar"). $comments = []; - $pattern = '/(?!' . CSSMin::EMBED_REGEX . ')(' . CSSMin::COMMENT_REGEX . ')/s'; + $pattern = '/(?!' . self::EMBED_REGEX . ')(' . self::COMMENT_REGEX . ')/s'; $source = preg_replace_callback( $pattern, @@ -355,7 +366,7 @@ class CSSMin { }, $source ); // Re-insert comments - $pattern = '/' . CSSMin::PLACEHOLDER . '(\d+)x/'; + $pattern = '/' . self::PLACEHOLDER . '(\d+)x/'; $source = preg_replace_callback( $pattern, function ( $match ) use ( &$comments ) { return $comments[ $match[1] ]; }, $source ); @@ -389,6 +400,9 @@ class CSSMin { return false; } + /** + * @codeCoverageIgnore + */ private static function getUrlRegex() { static $urlRegex; if ( $urlRegex === null ) { @@ -474,7 +488,12 @@ class CSSMin { // Pass thru fully-qualified and protocol-relative URLs and data URIs, as well as local URLs if // we can't expand them. - if ( self::isRemoteUrl( $url ) || self::isLocalUrl( $url ) ) { + // Also skips the rare `behavior` property specifying application's default behavior + if ( + self::isRemoteUrl( $url ) || + self::isLocalUrl( $url ) || + substr( $url, 0, 9 ) === '#default#' + ) { return $url; } 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..f61c139a99 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 ) { @@ -116,11 +116,12 @@ class HashRing { // If more locations are requested, wrap-around and keep adding them reset( $this->ring ); while ( count( $locations ) < $limit ) { - list( $location, ) = each( $this->ring ); + $location = key( $this->ring ); if ( $location === $primaryLocation ) { break; // don't go in circles } $locations[] = $location; + next( $this->ring ); } return $locations; @@ -152,7 +153,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 +219,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/HttpStatus.php b/includes/libs/HttpStatus.php index 27f872857c..7e652162b2 100644 --- a/includes/libs/HttpStatus.php +++ b/includes/libs/HttpStatus.php @@ -98,7 +98,7 @@ class HttpStatus { $message = self::getMessage( $code ); if ( $message === null ) { trigger_error( "Unknown HTTP status code $code", E_USER_WARNING ); - return false; + return; } MediaWiki\HeaderCallback::warnIfHeadersSent(); 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 e8b0e6a770..1c48f49d6b 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 ) ); } /** @@ -498,7 +510,7 @@ class IP { * 2001:0db8:85a3::7344 - 2001:0db8:85a3::7344 Explicit range * 2001:0db8:85a3::7344 Single IP * @param string $range IP range - * @return array(string, string) + * @return array [ string, string ] */ public static function parseRange( $range ) { // CIDR notation @@ -549,7 +561,7 @@ class IP { */ private static function parseCIDR6( $range ) { # Explode into - $parts = explode( '/', IP::sanitizeIP( $range ), 2 ); + $parts = explode( '/', self::sanitizeIP( $range ), 2 ); if ( count( $parts ) != 2 ) { return [ false, false ]; } @@ -590,7 +602,7 @@ class IP { */ private static function parseRange6( $range ) { # Expand any IPv6 IP - $range = IP::sanitizeIP( $range ); + $range = self::sanitizeIP( $range ); // CIDR notation... if ( strpos( $range, '/' ) !== false ) { list( $network, $bits ) = self::parseCIDR6( $range ); @@ -732,8 +744,8 @@ class IP { public static function getSubnet( $ip ) { $matches = []; $subnet = false; - if ( IP::isIPv6( $ip ) ) { - $parts = IP::parseRange( "$ip/64" ); + if ( self::isIPv6( $ip ) ) { + $parts = self::parseRange( "$ip/64" ); $subnet = $parts[0]; } elseif ( preg_match( '/^(\d+\.\d+\.\d+)\.\d+$/', $ip, $matches ) ) { // IPv4 diff --git a/includes/libs/MapCacheLRU.php b/includes/libs/MapCacheLRU.php index db6869bd53..c92769fc4e 100644 --- a/includes/libs/MapCacheLRU.php +++ b/includes/libs/MapCacheLRU.php @@ -76,7 +76,8 @@ class MapCacheLRU { */ public function has( $key ) { if ( !is_int( $key ) && !is_string( $key ) ) { - throw new MWException( __METHOD__ . ' called with invalid key. Must be string or integer.' ); + throw new UnexpectedValueException( + __METHOD__ . ' called with invalid key. Must be string or integer.' ); } return array_key_exists( $key, $this->cache ); } diff --git a/includes/libs/MemoizedCallable.php b/includes/libs/MemoizedCallable.php index 6b4281fb96..14462f1d9f 100644 --- a/includes/libs/MemoizedCallable.php +++ b/includes/libs/MemoizedCallable.php @@ -1,4 +1,24 @@ 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/StringUtils.php b/includes/libs/StringUtils.php index cffb5a3945..9638706dc2 100644 --- a/includes/libs/StringUtils.php +++ b/includes/libs/StringUtils.php @@ -276,7 +276,7 @@ class StringUtils { // Replace instances of the separator inside HTML-like tags with the placeholder $replacer = new DoubleReplacer( $separator, $placeholder ); - $cleaned = StringUtils::delimiterReplaceCallback( '<', '>', $replacer->cb(), $text ); + $cleaned = self::delimiterReplaceCallback( '<', '>', $replacer->cb(), $text ); // Explode, then put the replaced separators back in $items = explode( $separator, $cleaned ); @@ -303,7 +303,7 @@ class StringUtils { // Replace instances of the separator inside HTML-like tags with the placeholder $replacer = new DoubleReplacer( $search, $placeholder ); - $cleaned = StringUtils::delimiterReplaceCallback( '<', '>', $replacer->cb(), $text ); + $cleaned = self::delimiterReplaceCallback( '<', '>', $replacer->cb(), $text ); // Explode, then put the replaced separators back in $cleaned = str_replace( $search, $replace, $cleaned ); diff --git a/includes/libs/Xhprof.php b/includes/libs/Xhprof.php index 016c9b1574..e58d98fcc3 100644 --- a/includes/libs/Xhprof.php +++ b/includes/libs/Xhprof.php @@ -37,6 +37,7 @@ class Xhprof { /** * Start xhprof profiler + * @return bool */ public static function isEnabled() { return self::$enabled; @@ -44,6 +45,9 @@ class Xhprof { /** * Start xhprof profiler + * @param int $flags + * @param array $options + * @throws Exception */ public static function enable( $flags = 0, $options = [] ) { if ( self::isEnabled() ) { diff --git a/includes/libs/XhprofData.php b/includes/libs/XhprofData.php index 2383d2adc4..0be4ff6ad8 100644 --- a/includes/libs/XhprofData.php +++ b/includes/libs/XhprofData.php @@ -107,6 +107,7 @@ class XhprofData { * The resulting array is left padded with nulls, so a key * with no parent (eg 'main()') will return [null, 'function']. * + * @param string $key * @return array */ public static function splitKey( $key ) { 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/FileBackendStore.php b/includes/libs/filebackend/FileBackendStore.php index 9bfdbe8cd6..b8eec3f01d 100644 --- a/includes/libs/filebackend/FileBackendStore.php +++ b/includes/libs/filebackend/FileBackendStore.php @@ -1714,7 +1714,7 @@ abstract class FileBackendStore extends FileBackend { return; // invalid storage path } $mtime = ConvertibleTimestamp::convert( TS_UNIX, $val['mtime'] ); - $ttl = $this->memCache->adaptiveTTL( $mtime, 7 * 86400, 300, .1 ); + $ttl = $this->memCache->adaptiveTTL( $mtime, 7 * 86400, 300, 0.1 ); $key = $this->fileCacheKey( $path ); // Set the cache unless it is currently salted. $this->memCache->set( $key, $val, $ttl ); @@ -1840,14 +1840,8 @@ abstract class FileBackendStore extends FileBackend { return call_user_func_array( $this->mimeCallback, func_get_args() ); } - $mime = null; - if ( $fsPath !== null && function_exists( 'finfo_file' ) ) { - $finfo = finfo_open( FILEINFO_MIME_TYPE ); - $mime = finfo_file( $finfo, $fsPath ); - finfo_close( $finfo ); - } - - return is_string( $mime ) ? $mime : 'unknown/unknown'; + $mime = ( $fsPath !== null ) ? mime_content_type( $fsPath ) : false; + return $mime ?: 'unknown/unknown'; } } 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..de5a103831 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 @@ -1250,7 +1250,7 @@ class SwiftFileBackend extends FileBackendStore { * @return StatusValue[] */ protected function doExecuteOpHandlesInternal( array $fileOpHandles ) { - /** @var $statuses StatusValue[] */ + /** @var StatusValue[] $statuses */ $statuses = []; $auth = $this->getAuthentication(); @@ -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..e9fb11f7a8 100644 --- a/includes/libs/mime/IEContentAnalyzer.php +++ b/includes/libs/mime/IEContentAnalyzer.php @@ -333,7 +333,7 @@ class IEContentAnalyzer { * @param string $chunk the first 256 bytes of the file * @param string $proposed the MIME type proposed by the server * - * @return Array: map of IE version to detected MIME type + * @return array map of IE version to detected MIME type */ public function getRealMimesFromData( $fileName, $chunk, $proposed ) { $types = $this->getMimesFromData( $fileName, $chunk, $proposed ); @@ -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 ) { @@ -371,7 +371,7 @@ class IEContentAnalyzer { * @param string $chunk the first 256 bytes of the file * @param string $proposed the MIME type proposed by the server * - * @return Array: map of IE version to detected MIME type + * @return array map of IE version to detected MIME type */ public function getMimesFromData( $fileName, $chunk, $proposed ) { $types = []; @@ -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/MimeAnalyzer.php b/includes/libs/mime/MimeAnalyzer.php index 631bb17ebf..4d860bb593 100644 --- a/includes/libs/mime/MimeAnalyzer.php +++ b/includes/libs/mime/MimeAnalyzer.php @@ -988,18 +988,8 @@ EOT; $m = null; if ( $callback ) { $m = $callback( $file ); - } elseif ( function_exists( "finfo_open" ) && function_exists( "finfo_file" ) ) { - $mime_magic_resource = finfo_open( FILEINFO_MIME ); - - if ( $mime_magic_resource ) { - $m = finfo_file( $mime_magic_resource, $file ); - finfo_close( $mime_magic_resource ); - } else { - $this->logger->info( __METHOD__ . - ": finfo_open failed on " . FILEINFO_MIME . "!\n" ); - } } else { - $this->logger->info( __METHOD__ . ": no magic mime detector found!\n" ); + $m = mime_content_type( $file ); } if ( $m ) { 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/APCBagOStuff.php b/includes/libs/objectcache/APCBagOStuff.php index 9bfcee798a..e41c3a2592 100644 --- a/includes/libs/objectcache/APCBagOStuff.php +++ b/includes/libs/objectcache/APCBagOStuff.php @@ -42,8 +42,6 @@ class APCBagOStuff extends BagOStuff { const KEY_SUFFIX = ':2'; /** - * Constructor - * * Available parameters are: * - nativeSerialize: If true, pass objects to apc_store(), and trust it * to serialize them correctly. If false, serialize diff --git a/includes/libs/objectcache/APCUBagOStuff.php b/includes/libs/objectcache/APCUBagOStuff.php index 6e6a3adebb..a26e56020f 100644 --- a/includes/libs/objectcache/APCUBagOStuff.php +++ b/includes/libs/objectcache/APCUBagOStuff.php @@ -28,8 +28,6 @@ */ class APCUBagOStuff extends APCBagOStuff { /** - * Constructor - * * Available parameters are: * - nativeSerialize: If true, pass objects to apcu_store(), and trust it * to serialize them correctly. If false, serialize diff --git a/includes/libs/objectcache/BagOStuff.php b/includes/libs/objectcache/BagOStuff.php index 7cd678b035..8a23db515b 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 */ @@ -476,7 +476,7 @@ abstract class BagOStuff implements IExpiringStore, LoggerAwareInterface { $lSince = microtime( true ); // lock timestamp return new ScopedCallback( function () use ( $key, $lSince, $expiry ) { - $latency = .050; // latency skew (err towards keeping lock present) + $latency = 0.050; // latency skew (err towards keeping lock present) $age = ( microtime( true ) - $lSince + $latency ); if ( ( $age + $latency ) >= $expiry ) { $this->logger->warning( "Lock for $key held too long ($age sec)." ); @@ -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/MemcachedBagOStuff.php b/includes/libs/objectcache/MemcachedBagOStuff.php index 5128d824b2..0188991aa0 100644 --- a/includes/libs/objectcache/MemcachedBagOStuff.php +++ b/includes/libs/objectcache/MemcachedBagOStuff.php @@ -45,7 +45,7 @@ class MemcachedBagOStuff extends BagOStuff { protected function applyDefaultParams( $params ) { return $params + [ 'compress_threshold' => 1500, - 'connect_timeout' => .5, + 'connect_timeout' => 0.5, 'debug' => false ]; } diff --git a/includes/libs/objectcache/MemcachedPeclBagOStuff.php b/includes/libs/objectcache/MemcachedPeclBagOStuff.php index c568e7b4f6..e3e66d5826 100644 --- a/includes/libs/objectcache/MemcachedPeclBagOStuff.php +++ b/includes/libs/objectcache/MemcachedPeclBagOStuff.php @@ -29,8 +29,6 @@ class MemcachedPeclBagOStuff extends MemcachedBagOStuff { /** - * Constructor - * * Available parameters are: * - servers: The list of IP:port combinations holding the memcached servers. * - persistent: Whether to use a persistent connection diff --git a/includes/libs/objectcache/MultiWriteBagOStuff.php b/includes/libs/objectcache/MultiWriteBagOStuff.php index 687c67c356..200ab7969c 100644 --- a/includes/libs/objectcache/MultiWriteBagOStuff.php +++ b/includes/libs/objectcache/MultiWriteBagOStuff.php @@ -171,16 +171,22 @@ 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 /*, ... */ ) { $ret = true; $args = array_slice( func_get_args(), 3 ); + if ( $count > 1 && $asyncWrites ) { + // Deep-clone $args to prevent misbehavior when something writes an + // object to the BagOStuff then modifies it afterwards, e.g. T168040. + $args = unserialize( serialize( $args ) ); + } + foreach ( $this->caches as $i => $cache ) { if ( $i >= $count ) { break; // ignore the lower tiers 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..1f757a41e9 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,14 +1417,14 @@ 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 ) { + public function adaptiveTTL( $mtime, $maxTTL, $minTTL = 30, $factor = 0.2 ) { if ( is_float( $mtime ) || ctype_digit( $mtime ) ) { $mtime = (int)$mtime; // handle fractional seconds and string integers } @@ -1439,7 +1439,7 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface { } /** - * @return integer Number of warmup key cache misses last round + * @return int Number of warmup key cache misses last round * @since 1.30 */ public function getWarmupKeyMisses() { @@ -1452,8 +1452,8 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface { * This must set the key to "PURGED::" * * @param string $key Cache key - * @param integer $ttl How long to keep the tombstone [seconds] - * @param integer $holdoff HOLDOFF_* constant controlling how long to ignore sets for this key + * @param int $ttl How long to keep the tombstone [seconds] + * @param int $holdoff HOLDOFF_* constant controlling how long to ignore sets for this key * @return bool Success */ protected function relayPurge( $key, $ttl, $holdoff ) { @@ -1540,8 +1540,8 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface { * and get hits too. Similar to worthRefreshExpiring(), randomization is used. * * @param float $asOf UNIX timestamp of the value - * @param integer $ageNew Age of key when this might recommend refreshing (seconds) - * @param integer $timeTillRefresh Age of key when it should be refreshed if popular (seconds) + * @param int $ageNew Age of key when this might recommend refreshing (seconds) + * @param int $timeTillRefresh Age of key when it should be refreshed if popular (seconds) * @param float $now The current UNIX timestamp * @return bool */ @@ -1590,7 +1590,7 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface { * Do not use this method outside WANObjectCache * * @param mixed $value - * @param integer $ttl [0=forever] + * @param int $ttl [0=forever] * @param float $now Unix Current timestamp just before calling set() * @return array */ diff --git a/includes/libs/objectcache/WANObjectCacheReaper.php b/includes/libs/objectcache/WANObjectCacheReaper.php index 1696c59414..14737b145a 100644 --- a/includes/libs/objectcache/WANObjectCacheReaper.php +++ b/includes/libs/objectcache/WANObjectCacheReaper.php @@ -48,7 +48,7 @@ class WANObjectCacheReaper implements LoggerAwareInterface { /** @var string */ protected $channel; - /** @var integer */ + /** @var int */ protected $initialStartWindow; /** diff --git a/includes/libs/rdbms/ChronologyProtector.php b/includes/libs/rdbms/ChronologyProtector.php index 8b1aabe3cd..8121654e33 100644 --- a/includes/libs/rdbms/ChronologyProtector.php +++ b/includes/libs/rdbms/ChronologyProtector.php @@ -61,9 +61,9 @@ class ChronologyProtector implements LoggerAwareInterface { /** @var float[] Map of (DB master name => 1) */ protected $shutdownTouchDBs = []; - /** @var integer Seconds to store positions */ + /** @var int Seconds to store positions */ const POSITION_TTL = 60; - /** @var integer Max time to wait for positions to appear */ + /** @var int Max time to wait for positions to appear */ const POS_WAIT_TIMEOUT = 5; /** @@ -315,7 +315,7 @@ class ChronologyProtector implements LoggerAwareInterface { * @return array */ private static function mergePositions( $curValue, array $shutdownPositions ) { - /** @var $curPositions DBMasterPos[] */ + /** @var DBMasterPos[] $curPositions */ if ( $curValue === false ) { $curPositions = $shutdownPositions; } else { diff --git a/includes/libs/rdbms/TransactionProfiler.php b/includes/libs/rdbms/TransactionProfiler.php index 43b6f88704..57a12a4463 100644 --- a/includes/libs/rdbms/TransactionProfiler.php +++ b/includes/libs/rdbms/TransactionProfiler.php @@ -39,7 +39,7 @@ class TransactionProfiler implements LoggerAwareInterface { /** @var float Seconds */ protected $dbLockThreshold = 3.0; /** @var float Seconds */ - protected $eventThreshold = .25; + protected $eventThreshold = 0.25; /** @var bool */ protected $silenced = false; @@ -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 723a4a607b..e7417eb84a 100644 --- a/includes/libs/rdbms/database/Database.php +++ b/includes/libs/rdbms/database/Database.php @@ -54,8 +54,8 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware const PING_TTL = 1.0; const PING_QUERY = 'SELECT 1 AS ping'; - const TINY_WRITE_SEC = .010; - const SLOW_WRITE_SEC = .500; + const TINY_WRITE_SEC = 0.010; + const SLOW_WRITE_SEC = 0.500; const SMALL_WRITE_ROWS = 100; /** @var string SQL query */ @@ -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) @@ -1126,6 +1130,19 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware } } + /** + * Checks whether the cause of the error is detected to be a timeout. + * + * It returns false by default, and not all engines support detecting this yet. + * If this returns false, it will be treated as a generic query error. + * + * @param string $error Error text + * @param int $errno Error number + */ + protected function wasQueryTimeout( $error, $errno ) { + return false; + } + public function reportQueryError( $error, $errno, $sql, $fname, $tempIgnore = false ) { if ( $this->ignoreErrors() || $tempIgnore ) { $this->queryLogger->debug( "SQL ERROR (ignored): $error\n" ); @@ -1142,7 +1159,12 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware ] ) ); $this->queryLogger->debug( "SQL ERROR: " . $error . "\n" ); - throw new DBQueryError( $this, $error, $errno, $sql, $fname ); + $wasQueryTimeout = $this->wasQueryTimeout( $error, $errno ); + if ( $wasQueryTimeout ) { + throw new DBQueryTimeoutError( $this, $error, $errno, $sql, $fname ); + } else { + throw new DBQueryError( $this, $error, $errno, $sql, $fname ); + } } } @@ -2078,7 +2100,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 @@ -2102,6 +2124,7 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware /** * @param string $s + * @param string $escapeChar * @return string */ protected function escapeLikeInternal( $s, $escapeChar = '`' ) { @@ -2412,6 +2435,15 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware * we don't want to select everything into memory * * @see IDatabase::insertSelect() + * @param string $destTable + * @param string|array $srcTable + * @param array $varMap + * @param array $conds + * @param string $fname + * @param array $insertOptions + * @param array $selectOptions + * @param array $selectJoinConds + * @return bool */ protected function nativeInsertSelect( $destTable, $srcTable, $varMap, $conds, $fname = __METHOD__, @@ -2587,7 +2619,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 ) { @@ -2664,10 +2696,13 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware } final public function onTransactionPreCommitOrIdle( callable $callback, $fname = __METHOD__ ) { - if ( $this->mTrxLevel ) { + if ( $this->mTrxLevel || $this->getFlag( self::DBO_TRX ) ) { + // As long as DBO_TRX is set, writes will accumulate until the load balancer issues + // an implicit commit of all peer databases. This is true even if a transaction has + // not yet been triggered by writes; make sure $callback runs *after* any such writes. $this->mTrxPreCommitCallbacks[] = [ $callback, $fname ]; } else { - // If no transaction is active, then make one for this callback + // No transaction is active nor will start implicitly, so make one for this callback $this->startAtomic( __METHOD__ ); try { call_user_func( $callback ); @@ -2704,7 +2739,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 */ @@ -2784,7 +2819,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 */ @@ -3187,7 +3222,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/DatabaseMssql.php b/includes/libs/rdbms/database/DatabaseMssql.php index 8f3cab8314..4ebc6233ed 100644 --- a/includes/libs/rdbms/database/DatabaseMssql.php +++ b/includes/libs/rdbms/database/DatabaseMssql.php @@ -1110,6 +1110,7 @@ class DatabaseMssql extends Database { * MS SQL supports more pattern operators than other databases (ex: [,],^) * * @param string $s + * @param string $escapeChar * @return string */ protected function escapeLikeInternal( $s, $escapeChar = '`' ) { 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..5312a3d032 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]; @@ -483,6 +486,10 @@ abstract class DatabaseMysqlBase extends Database { */ abstract protected function mysqlError( $conn = null ); + protected function wasQueryTimeout( $error, $errno ) { + return $errno == 2062; + } + /** * @param string $table * @param array $uniqueIndexes @@ -778,6 +785,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 +802,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 +998,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..4c3cbddf76 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; /** @@ -33,7 +34,7 @@ use IP; * @see Database */ class DatabaseMysqli extends DatabaseMysqlBase { - /** @var $mConn mysqli */ + /** @var mysqli $mConn */ /** * @param string $sql @@ -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..672b3458ca 100644 --- a/includes/libs/rdbms/database/DatabasePostgres.php +++ b/includes/libs/rdbms/database/DatabasePostgres.php @@ -39,8 +39,6 @@ class DatabasePostgres extends Database { /** @var int The number of rows affected as an integer */ protected $mAffectedRows = null; - /** @var int */ - private $mInsertId = null; /** @var float|string */ private $numericVersion = null; /** @var string Connect string to open a PostgreSQL connection */ @@ -352,14 +350,10 @@ class DatabasePostgres extends Database { return pg_field_name( $res, $n ); } - /** - * Return the result of the last call to nextSequenceValue(); - * This must be called after nextSequenceValue(). - * - * @return int|null - */ public function insertId() { - return $this->mInsertId; + $res = $this->query( "SELECT lastval()" ); + $row = $this->fetchRow( $res ); + return is_null( $row[0] ) ? null : (int)$row[0]; } public function dataSeek( $res, $row ) { @@ -521,6 +515,10 @@ __INDEXATTR__; public function selectSQLText( $table, $vars, $conds = '', $fname = __METHOD__, $options = [], $join_conds = [] ) { + if ( is_string( $options ) ) { + $options = [ $options ]; + } + // Change the FOR UPDATE option as necessary based on the join conditions. Then pass // to the parent function to get the actual SQL text. // In Postgres when using FOR UPDATE, only the main table and tables that are inner joined @@ -532,12 +530,28 @@ __INDEXATTR__; $forUpdateKey = array_search( 'FOR UPDATE', $options, true ); if ( $forUpdateKey !== false && $join_conds ) { unset( $options[$forUpdateKey] ); + $options['FOR UPDATE'] = []; + + // All tables not in $join_conds are good + foreach ( $table as $alias => $name ) { + if ( is_numeric( $alias ) ) { + $alias = $name; + } + if ( !isset( $join_conds[$alias] ) ) { + $options['FOR UPDATE'][] = $alias; + } + } foreach ( $join_conds as $table_cond => $join_cond ) { if ( 0 === preg_match( '/^(?:LEFT|RIGHT|FULL)(?: OUTER)? JOIN$/i', $join_cond[0] ) ) { $options['FOR UPDATE'][] = $table_cond; } } + + // Quote alias names so $this->tableName() won't mangle them + $options['FOR UPDATE'] = array_map( function ( $name ) use ( $table ) { + return isset( $table[$name] ) ? $this->addIdentifierQuotes( $name ) : $name; + }, $options['FOR UPDATE'] ); } if ( isset( $options['ORDER BY'] ) && $options['ORDER BY'] == 'NULL' ) { @@ -756,12 +770,7 @@ __INDEXATTR__; } public function nextSequenceValue( $seqName ) { - $safeseq = str_replace( "'", "''", $seqName ); - $res = $this->query( "SELECT nextval('$safeseq')" ); - $row = $this->fetchRow( $res ); - $this->mInsertId = is_null( $row[0] ) ? null : (int)$row[0]; - - return $this->mInsertId; + return new NextSequenceValue; } /** @@ -1149,8 +1158,8 @@ SQL; } /** - * @var string $table - * @var string $field + * @param string $table + * @param string $field * @return PostgresField|null */ public function fieldInfo( $table, $field ) { @@ -1204,6 +1213,8 @@ SQL; $s = pg_escape_bytea( $conn, $s->fetch() ); } return "'$s'"; + } elseif ( $s instanceof NextSequenceValue ) { + return 'DEFAULT'; } return "'" . pg_escape_string( $conn, $s ) . "'"; diff --git a/includes/libs/rdbms/database/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..78889e52e0 100644 --- a/includes/libs/rdbms/database/IDatabase.php +++ b/includes/libs/rdbms/database/IDatabase.php @@ -206,6 +206,7 @@ interface IDatabase { * Returns true if this database does an implicit sort when doing GROUP BY * * @return bool + * @deprecated Since 1.30; only use grouped or aggregated fields in the SELECT */ public function implicitGroupby(); @@ -277,7 +278,7 @@ interface IDatabase { /** * Get the number of affected rows from pending write queries * - * @return integer + * @return int * @since 1.30 */ public function pendingWriteRowsAffected(); @@ -420,12 +421,9 @@ interface IDatabase { /** * Get the inserted value of an auto-increment row * - * The value inserted should be fetched from nextSequenceValue() - * - * Example: - * $id = $dbw->nextSequenceValue( 'page_page_id_seq' ); - * $dbw->insert( 'page', [ 'page_id' => $id ] ); - * $id = $dbw->insertId(); + * This should only be called after an insert that used an auto-incremented + * value. If no such insert was previously done in the current database + * session, the return value is undefined. * * @return int */ @@ -1114,15 +1112,20 @@ interface IDatabase { public function anyString(); /** - * Returns an appropriately quoted sequence value for inserting a new row. - * MySQL has autoincrement fields, so this is just NULL. But the PostgreSQL - * subclass will return an integer, and save the value for insertId() + * Deprecated method, calls should be removed. + * + * This was formerly used for PostgreSQL and Oracle to handle + * self::insertId() auto-incrementing fields. It is no longer necessary + * since DatabasePostgres::insertId() has been reimplemented using + * `lastval()` and Oracle has been reimplemented using triggers. + * + * Implementations should return null if inserting `NULL` into an + * auto-incrementing field works, otherwise it should return an instance of + * NextSequenceValue and filter it on calls to relevant methods. * - * Any implementation of this function should *not* involve reusing - * sequence numbers created for rolled-back transactions. - * See https://bugs.mysql.com/bug.php?id=30767 for details. + * @deprecated since 1.30, no longer needed * @param string $seqName - * @return null|int + * @return null|NextSequenceValue */ public function nextSequenceValue( $seqName ); diff --git a/includes/libs/rdbms/database/position/MySQLMasterPos.php b/includes/libs/rdbms/database/position/MySQLMasterPos.php index 06776fe8fd..0657cf3dc0 100644 --- a/includes/libs/rdbms/database/position/MySQLMasterPos.php +++ b/includes/libs/rdbms/database/position/MySQLMasterPos.php @@ -24,7 +24,7 @@ class MySQLMasterPos implements DBMasterPos { /** * @param string $file Binlog file name - * @param integer $pos Binlog position + * @param int $pos Binlog position * @param string $gtid Comma separated GTID set [optional] */ function __construct( $file, $pos, $gtid = '' ) { diff --git a/includes/libs/rdbms/database/resultwrapper/FakeResultWrapper.php b/includes/libs/rdbms/database/resultwrapper/FakeResultWrapper.php index 493cde8d9c..12e59b598f 100644 --- a/includes/libs/rdbms/database/resultwrapper/FakeResultWrapper.php +++ b/includes/libs/rdbms/database/resultwrapper/FakeResultWrapper.php @@ -9,7 +9,7 @@ use stdClass; * doesn't go anywhere near an actual database. */ class FakeResultWrapper extends ResultWrapper { - /** @var $result stdClass[] */ + /** @var stdClass[] $result */ /** * @param stdClass[] $rows diff --git a/includes/libs/rdbms/database/resultwrapper/MssqlResultWrapper.php b/includes/libs/rdbms/database/resultwrapper/MssqlResultWrapper.php index 4e28397455..298ec61934 100644 --- a/includes/libs/rdbms/database/resultwrapper/MssqlResultWrapper.php +++ b/includes/libs/rdbms/database/resultwrapper/MssqlResultWrapper.php @@ -5,7 +5,7 @@ namespace Wikimedia\Rdbms; use stdClass; class MssqlResultWrapper extends ResultWrapper { - /** @var integer|null */ + /** @var int|null */ private $mSeekTo = null; /** diff --git a/includes/libs/rdbms/database/utils/NextSequenceValue.php b/includes/libs/rdbms/database/utils/NextSequenceValue.php new file mode 100644 index 0000000000..44bf0ddcdd --- /dev/null +++ b/includes/libs/rdbms/database/utils/NextSequenceValue.php @@ -0,0 +1,12 @@ +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..e6870a7e2e 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; @@ -40,19 +40,22 @@ class DBQueryError extends DBExpectedError { * @param int|string $errno * @param string $sql * @param string $fname + * @param string $message Optional message, intended for subclases (optional) */ - function __construct( IDatabase $db, $error, $errno, $sql, $fname ) { - if ( $db instanceof Database && $db->wasConnectionError( $errno ) ) { - $message = "A connection error occured. \n" . - "Query: $sql\n" . - "Function: $fname\n" . - "Error: $errno $error\n"; - } else { - $message = "A database query error has occurred. Did you forget to run " . - "your application's database schema updater after upgrading? \n" . - "Query: $sql\n" . - "Function: $fname\n" . - "Error: $errno $error\n"; + public function __construct( IDatabase $db, $error, $errno, $sql, $fname, $message = null ) { + if ( $message === null ) { + if ( $db instanceof Database && $db->wasConnectionError( $errno ) ) { + $message = "A connection error occured. \n" . + "Query: $sql\n" . + "Function: $fname\n" . + "Error: $errno $error\n"; + } else { + $message = "A database query error has occurred. Did you forget to run " . + "your application's database schema updater after upgrading? \n" . + "Query: $sql\n" . + "Function: $fname\n" . + "Error: $errno $error\n"; + } } parent::__construct( $db, $message ); diff --git a/includes/libs/rdbms/exception/DBQueryTimeoutError.php b/includes/libs/rdbms/exception/DBQueryTimeoutError.php new file mode 100644 index 0000000000..ea91d9550e --- /dev/null +++ b/includes/libs/rdbms/exception/DBQueryTimeoutError.php @@ -0,0 +1,38 @@ +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 acb4dce5f6..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,56 +199,69 @@ 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 - * Index must be an actual index into the array. - * If the server is already open, returns it. + * + * 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 or DB_MASTER/DB_REPLICA + * @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 @@ -253,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 ); @@ -261,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 ); @@ -275,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 0b70010e19..8393e2bcfe 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 array */ + /** @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,24 +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'] ) @@ -148,9 +161,14 @@ class LoadBalancer implements ILoadBalancer { $this->mReadIndex = -1; $this->mConns = [ - 'local' => [], - 'foreignUsed' => [], - 'foreignFree' => [] + // Connection were transaction rounds may be applied + self::KEY_LOCAL => [], + self::KEY_FOREIGN_INUSE => [], + 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; @@ -183,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 { @@ -240,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 ); } @@ -371,9 +384,9 @@ class LoadBalancer implements ILoadBalancer { throw new InvalidArgumentException( "Empty server array given to LoadBalancer" ); } - /** @var $i int|bool Index of selected server */ + /** @var int|bool $i Index of selected server */ $i = false; - /** @var $laggedReplicaMode bool Whether server is considered lagged */ + /** @var bool $laggedReplicaMode Whether server is considered lagged */ $laggedReplicaMode = false; // Quickly look through the available servers for a server that meets criteria... @@ -525,7 +538,7 @@ class LoadBalancer implements ILoadBalancer { public function getAnyOpenConnection( $i ) { foreach ( $this->mConns as $connsByServer ) { if ( !empty( $connsByServer[$i] ) ) { - /** @var $serverConns IDatabase[] */ + /** @var IDatabase[] $serverConns */ $serverConns = $connsByServer[$i]; return reset( $serverConns ); @@ -604,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' ); @@ -660,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(); @@ -710,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['foreignUsed'][$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['foreignUsed'][$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['foreignFree'][$serverIndex][$domain] = $conn; - unset( $this->mConns['foreignUsed'][$serverIndex][$domain] ); - if ( !$this->mConns['foreignUsed'][$serverIndex] ) { - unset( $this->mConns[ 'foreignUsed' ][$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 { @@ -732,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 } @@ -770,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['local'][$i][0] ) ) { - $conn = $this->mConns['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['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; + } } } @@ -802,6 +820,10 @@ class LoadBalancer implements ILoadBalancer { $conn = false; } + if ( $autoCommit && $conn instanceof IDatabase ) { + $conn->clearFlag( $conn::DBO_TRX ); // auto-commit mode + } + return $conn; } @@ -823,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['foreignUsed'][$i][$domain] ) ) { - // Reuse an already-used connection - $conn = $this->mConns['foreignUsed'][$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['foreignFree'][$i][$domain] ) ) { + } elseif ( isset( $this->mConns[$connFreeKey][$i][$domain] ) ) { // Reuse a free connection for the same domain - $conn = $this->mConns['foreignFree'][$i][$domain]; - unset( $this->mConns['foreignFree'][$i][$domain] ); - $this->mConns['foreignUsed'][$i][$domain] = $conn; + $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['foreignFree'][$i] ) ) { - // Reuse a connection from another domain - $conn = reset( $this->mConns['foreignFree'][$i] ); - $oldDomain = key( $this->mConns['foreignFree'][$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 ) ) { @@ -853,8 +885,8 @@ class LoadBalancer implements ILoadBalancer { $conn = false; } else { $conn->tablePrefix( $prefix ); - unset( $this->mConns['foreignFree'][$i][$oldDomain] ); - $this->mConns['foreignUsed'][$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" ); } @@ -867,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" ); @@ -874,7 +907,7 @@ class LoadBalancer implements ILoadBalancer { $conn = false; } else { $conn->tablePrefix( $prefix ); - $this->mConns['foreignUsed'][$i][$domain] = $conn; + $this->mConns[$connInUseKey][$i][$domain] = $conn; $this->connLogger->debug( __METHOD__ . ": opened new connection for $i/$domain" ); } } @@ -1033,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 */ @@ -1085,9 +1122,12 @@ class LoadBalancer implements ILoadBalancer { } ); $this->mConns = [ - 'local' => [], - 'foreignFree' => [], - 'foreignUsed' => [], + self::KEY_LOCAL => [], + 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; } @@ -1168,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 ] ); } @@ -1307,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. @@ -1321,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 ); } @@ -1621,13 +1669,19 @@ class LoadBalancer implements ILoadBalancer { } public function setDomainPrefix( $prefix ) { - if ( $this->mConns['foreignUsed'] ) { - // Do not switch connections to explicit foreign domains unless marked as free - $domains = []; - foreach ( $this->mConns['foreignUsed'] as $i => $connsByDomain ) { - $domains = array_merge( $domains, array_keys( $connsByDomain ) ); + // Find connections to explicit foreign domains still marked as in-use... + $domainsInUse = []; + $this->forEachOpenConnection( function ( IDatabase $conn ) use ( &$domainsInUse ) { + // Once reuseConnection() is called on a handle, its reference count goes from 1 to 0. + // Until then, it is still in use by the caller (explicitly or via DBConnRef scope). + if ( $conn->getLBInfo( 'foreignPoolRefCount' ) > 0 ) { + $domainsInUse[] = $conn->getDomainID(); } - $domains = implode( ', ', $domains ); + } ); + + // Do not switch connections to explicit foreign domains unless marked as safe + if ( $domainsInUse ) { + $domains = implode( ', ', $domainsInUse ); throw new DBUnexpectedError( null, "Foreign domain connections are still in use ($domains)." ); } 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..8292c0369b 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 } @@ -156,7 +157,7 @@ class LoadMonitor implements ILoadMonitor { $newWeight = $movAveRatio * $coefficient + ( 1 - $movAveRatio ) * $lastWeight; // Scale from 10% to 100% of nominal weight - $weightScales[$i] = max( $newWeight, .10 ); + $weightScales[$i] = max( $newWeight, 0.10 ); if ( !$conn ) { $lagTimes[$i] = false; @@ -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..d346f651f8 100644 --- a/includes/libs/stats/NullStatsdDataFactory.php +++ b/includes/libs/stats/NullStatsdDataFactory.php @@ -40,8 +40,8 @@ class NullStatsdDataFactory implements IBufferingStatsdDataFactory { * and logged in users by sending the current userId of a user * with each request with a key of "uniques" (or similar). * - * @param string|array $key The metric(s) to set. - * @param float $value The value for the stats. + * @param string|array $key The metric(s) to set. + * @param float $value The value for the stats. * * @return array */ @@ -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..6494c26302 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; @@ -56,7 +56,7 @@ class SamplingStatsdClient extends StatsdClient { } if ( $samplingRates ) { array_walk( $data, function ( $item ) use ( $samplingRates ) { - /** @var $item StatsdData */ + /** @var StatsdData $item */ foreach ( $samplingRates as $pattern => $rate ) { if ( fnmatch( $pattern, $item->getKey(), FNM_NOESCAPE ) ) { $item->setSampleRate( $item->getSampleRate() * $rate ); @@ -77,7 +77,7 @@ class SamplingStatsdClient extends StatsdClient { * strings are not allowed here as sampleData requires a StatsdDataInterface * @param int $sampleRate * - * @return integer the data sent in bytes + * @return int the data sent in bytes */ public function send( $data, $sampleRate = 1 ) { if ( !is_array( $data ) ) { @@ -147,7 +147,7 @@ class SamplingStatsdClient extends StatsdClient { } /** - * {@inheritDoc} + * @inheritDoc */ protected function throwException( Exception $exception ) { if ( !$this->getFailSilently() ) { diff --git a/includes/libs/virtualrest/ParsoidVirtualRESTService.php b/includes/libs/virtualrest/ParsoidVirtualRESTService.php index a148a39707..37a967fff6 100644 --- a/includes/libs/virtualrest/ParsoidVirtualRESTService.php +++ b/includes/libs/virtualrest/ParsoidVirtualRESTService.php @@ -58,15 +58,14 @@ class ParsoidVirtualRESTService extends VirtualRESTService { 'url' => 'http://localhost:8000/', 'prefix' => 'localhost', 'domain' => 'localhost', + 'timeout' => null, 'forwardCookies' => false, 'HTTPProxy' => null, ], $params ); // Ensure that the url parameter has a trailing slash. - $mparams['url'] = preg_replace( - '#/?$#', - '/', - $mparams['url'] - ); + if ( substr( $mparams['url'], -1 ) !== '/' ) { + $mparams['url'] .= '/'; + } // Ensure the correct domain format: strip protocol, port, // and trailing slash if present. This lets us use // $wgCanonicalServer as a default value, which is very convenient. @@ -147,6 +146,10 @@ class ParsoidVirtualRESTService extends VirtualRESTService { * Visual Editor "pretends" the V1 API is like. A previous version of * ParsoidVirtualRESTService translated these to the "real" Parsoid v1 * API. We now translate these to the "real" Parsoid v3 API. + * @param array $req + * @param Closure $idGeneratorFunc + * @return array + * @throws Exception */ public function onParsoid1Request( array $req, Closure $idGeneratorFunc ) { $parts = explode( '/', $req['url'] ); diff --git a/includes/libs/virtualrest/RestbaseVirtualRESTService.php b/includes/libs/virtualrest/RestbaseVirtualRESTService.php index 35c45deb50..192b4bd43d 100644 --- a/includes/libs/virtualrest/RestbaseVirtualRESTService.php +++ b/includes/libs/virtualrest/RestbaseVirtualRESTService.php @@ -61,11 +61,9 @@ class RestbaseVirtualRESTService extends VirtualRESTService { 'fixedUrl' => false, ], $params ); // Ensure that the url parameter has a trailing slash. - $mparams['url'] = preg_replace( - '#/?$#', - '/', - $mparams['url'] - ); + if ( substr( $mparams['url'], -1 ) !== '/' ) { + $mparams['url'] .= '/'; + } // Ensure the correct domain format: strip protocol, port, // and trailing slash if present. This lets us use // $wgCanonicalServer as a default value, which is very convenient. @@ -114,6 +112,10 @@ class RestbaseVirtualRESTService extends VirtualRESTService { /** * Remaps Parsoid v1/v3 requests to RESTBase v1 requests. + * @param array $reqs + * @param Closure $idGeneratorFunc + * @return array + * @throws Exception */ public function onParsoidRequests( array $reqs, Closure $idGeneratorFunc ) { $result = []; @@ -147,6 +149,10 @@ class RestbaseVirtualRESTService extends VirtualRESTService { * NOTE: the POST APIs aren't "real" Parsoid v1 APIs, they are just what * Visual Editor "pretends" the V1 API is like. (See * ParsoidVirtualRESTService.) + * @param array $req + * @param Closure $idGeneratorFunc + * @return array + * @throws Exception */ public function onParsoid1Request( array $req, Closure $idGeneratorFunc ) { $parts = explode( '/', $req['url'] ); @@ -235,6 +241,10 @@ class RestbaseVirtualRESTService extends VirtualRESTService { * * body: array( 'wikitext' => ... ) or array( 'wikitext' => ..., 'body_only' => true/false ) * * $title is optional * * $revision is optional + * @param array $req + * @param Closure $idGeneratorFunc + * @return array + * @throws Exception */ public function onParsoid3Request( array $req, Closure $idGeneratorFunc ) { $parts = explode( '/', $req['url'] ); diff --git a/includes/libs/xmp/XMP.php b/includes/libs/xmp/XMP.php index e12766a2ad..c46acc691c 100644 --- a/includes/libs/xmp/XMP.php +++ b/includes/libs/xmp/XMP.php @@ -131,6 +131,7 @@ class XMPReader implements LoggerAwareInterface { /** * Primary job is to initialize the XMLParser + * @param LoggerInterface|null $logger */ function __construct( LoggerInterface $logger = null ) { if ( !function_exists( 'xml_parser_create_ns' ) ) { @@ -189,6 +190,7 @@ class XMPReader implements LoggerAwareInterface { /** * Check if this instance supports using this class + * @return bool */ public static function isSupported() { return function_exists( 'xml_parser_create_ns' ) && class_exists( 'XMLReader' ); diff --git a/includes/logging/BlockLogFormatter.php b/includes/logging/BlockLogFormatter.php index a0bfb59345..1ed18cd0bb 100644 --- a/includes/logging/BlockLogFormatter.php +++ b/includes/logging/BlockLogFormatter.php @@ -60,7 +60,7 @@ class BlockLogFormatter extends LogFormatter { // is shown on the correct side of the tooltip text. $durationTooltip = '‎' . htmlspecialchars( $params[4] ); $params[4] = Message::rawParam( - "" . + "" . $this->context->getLanguage()->translateBlockExpiry( $params[4], $this->context->getUser(), diff --git a/includes/logging/LogEntry.php b/includes/logging/LogEntry.php index fa94fe5b23..8b51932be7 100644 --- a/includes/logging/LogEntry.php +++ b/includes/logging/LogEntry.php @@ -170,19 +170,21 @@ class DatabaseLogEntry extends LogEntryBase { * @return array */ public static function getSelectQueryData() { - $tables = [ 'logging', 'user' ]; + $commentQuery = CommentStore::newKey( 'log_comment' )->getJoin(); + + $tables = [ 'logging', 'user' ] + $commentQuery['tables']; $fields = [ 'log_id', 'log_type', 'log_action', 'log_timestamp', 'log_user', 'log_user_text', 'log_namespace', 'log_title', // unused log_page - 'log_comment', 'log_params', 'log_deleted', + 'log_params', 'log_deleted', 'user_id', 'user_name', 'user_editcount', - ]; + ] + $commentQuery['fields']; $joins = [ // IPs don't have an entry in user table 'user' => [ 'LEFT JOIN', 'log_user=user_id' ], - ]; + ] + $commentQuery['joins']; return [ 'tables' => $tables, @@ -322,7 +324,7 @@ class DatabaseLogEntry extends LogEntryBase { } public function getComment() { - return $this->row->log_comment; + return CommentStore::newKey( 'log_comment' )->getComment( $this->row )->text; } public function getDeleted() { @@ -380,7 +382,9 @@ class RCDatabaseLogEntry extends DatabaseLogEntry { } public function getComment() { - return $this->row->rc_comment; + return CommentStore::newKey( 'rc_comment' ) + // Legacy because the row probably used RecentChange::selectFields() + ->getCommentLegacy( wfGetDB( DB_REPLICA ), $this->row )->text; } public function getDeleted() { @@ -589,10 +593,7 @@ class ManualLogEntry extends LogEntryBase { * @throws MWException */ public function insert( IDatabase $dbw = null ) { - global $wgContLang; - $dbw = $dbw ?: wfGetDB( DB_MASTER ); - $id = $dbw->nextSequenceValue( 'logging_log_id_seq' ); if ( $this->timestamp === null ) { $this->timestamp = wfTimestampNow(); @@ -601,9 +602,6 @@ class ManualLogEntry extends LogEntryBase { // Trim spaces on user supplied text $comment = trim( $this->getComment() ); - // Truncate for whole multibyte characters. - $comment = $wgContLang->truncate( $comment, 255 ); - $params = $this->getParameters(); $relations = $this->relations; @@ -615,7 +613,6 @@ class ManualLogEntry extends LogEntryBase { } $data = [ - 'log_id' => $id, 'log_type' => $this->getType(), 'log_action' => $this->getSubtype(), 'log_timestamp' => $dbw->timestamp( $this->getTimestamp() ), @@ -624,12 +621,12 @@ class ManualLogEntry extends LogEntryBase { 'log_namespace' => $this->getTarget()->getNamespace(), 'log_title' => $this->getTarget()->getDBkey(), 'log_page' => $this->getTarget()->getArticleID(), - 'log_comment' => $comment, 'log_params' => LogEntryBase::makeParamBlob( $params ), ]; if ( isset( $this->deleted ) ) { $data['log_deleted'] = $this->deleted; } + $data += CommentStore::newKey( 'log_comment' )->insert( $dbw, $comment ); $dbw->insert( 'logging', $data, __METHOD__ ); $this->id = $dbw->insertId(); diff --git a/includes/logging/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 f2b16705c7..e421209278 100644 --- a/includes/logging/LogPage.php +++ b/includes/logging/LogPage.php @@ -72,8 +72,6 @@ class LogPage { private $target; /** - * Constructor - * * @param string $type One of '', 'block', 'protect', 'rights', 'delete', * 'upload', 'move' * @param bool $rc Whether to update recent changes as well as the logging table @@ -92,12 +90,10 @@ class LogPage { global $wgLogRestrictions; $dbw = wfGetDB( DB_MASTER ); - $log_id = $dbw->nextSequenceValue( 'logging_log_id_seq' ); // @todo FIXME private/protected/public property? $this->timestamp = $now = wfTimestampNow(); $data = [ - 'log_id' => $log_id, 'log_type' => $this->type, 'log_action' => $this->action, 'log_timestamp' => $dbw->timestamp( $now ), @@ -106,9 +102,9 @@ class LogPage { 'log_namespace' => $this->target->getNamespace(), 'log_title' => $this->target->getDBkey(), 'log_page' => $this->target->getArticleID(), - 'log_comment' => $this->comment, 'log_params' => $this->params ]; + $data += CommentStore::newKey( 'log_comment' )->insert( $dbw, $this->comment ); $dbw->insert( 'logging', $data, __METHOD__ ); $newId = $dbw->insertId(); @@ -207,7 +203,7 @@ class LogPage { * @return bool */ public static function isLogType( $type ) { - return in_array( $type, LogPage::validTypes() ); + return in_array( $type, self::validTypes() ); } /** @@ -289,7 +285,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 ) { @@ -331,8 +327,6 @@ class LogPage { * @return int The log_id of the inserted log entry */ public function addEntry( $action, $target, $comment, $params = [], $doer = null ) { - global $wgContLang; - if ( !is_array( $params ) ) { $params = [ $params ]; } @@ -344,13 +338,10 @@ class LogPage { # Trim spaces on user supplied text $comment = trim( $comment ); - # Truncate for whole multibyte characters. - $comment = $wgContLang->truncate( $comment, 255 ); - $this->action = $action; $this->target = $target; $this->comment = $comment; - $this->params = LogPage::makeParamBlob( $params ); + $this->params = self::makeParamBlob( $params ); if ( $doer === null ) { global $wgUser; diff --git a/includes/logging/LogPager.php b/includes/logging/LogPager.php index 11dce31bc7..f79fcfa61c 100644 --- a/includes/logging/LogPager.php +++ b/includes/logging/LogPager.php @@ -49,8 +49,6 @@ class LogPager extends ReverseChronologicalPager { public $mLogEventsList; /** - * Constructor - * * @param LogEventsList $list * @param string|array $types Log types to show * @param string $performer The user who made the log entries diff --git a/includes/mail/EmailNotification.php b/includes/mail/EmailNotification.php index 932797abac..2931d9dd3c 100644 --- a/includes/mail/EmailNotification.php +++ b/includes/mail/EmailNotification.php @@ -343,7 +343,7 @@ class EmailNotification { $keys['$PAGETITLE'] = $this->title->getPrefixedText(); $keys['$PAGETITLE_URL'] = $this->title->getCanonicalURL(); $keys['$PAGEMINOREDIT'] = $this->minorEdit ? - wfMessage( 'minoredit' )->inContentLanguage()->text() : ''; + wfMessage( 'enotif_minoredit' )->inContentLanguage()->text() : ''; $keys['$UNWATCHURL'] = $this->title->getCanonicalURL( 'action=unwatch' ); if ( $this->editor->isAnon() ) { diff --git a/includes/mail/UserMailer.php b/includes/mail/UserMailer.php index 3858f27566..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 @@ -175,18 +175,18 @@ class UserMailer { // first send to non-split address list, then to split addresses one by one $status = Status::newGood(); if ( $to ) { - $status->merge( UserMailer::sendInternal( + $status->merge( self::sendInternal( $to, $from, $subject, $body, $options ) ); } foreach ( $splitTo as $newTo ) { - $status->merge( UserMailer::sendInternal( + $status->merge( self::sendInternal( [ $newTo ], $from, $subject, $body, $options ) ); } return $status; } } - return UserMailer::sendInternal( $to, $from, $subject, $body, $options ); + return self::sendInternal( $to, $from, $subject, $body, $options ); } /** @@ -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/DjVuImage.php b/includes/media/DjVuImage.php index 57b5b36c14..d25111c445 100644 --- a/includes/media/DjVuImage.php +++ b/includes/media/DjVuImage.php @@ -40,8 +40,6 @@ class DjVuImage { const DJVUTXT_MEMORY_LIMIT = 300000; /** - * Constructor - * * @param string $filename The DjVu file name. */ function __construct( $filename ) { diff --git a/includes/media/Exif.php b/includes/media/Exif.php index 9bfbc96c69..cd457f0bec 100644 --- a/includes/media/Exif.php +++ b/includes/media/Exif.php @@ -96,8 +96,6 @@ class Exif { private $byteOrder; /** - * Constructor - * * @param string $file Filename. * @param string $byteOrder Type of byte ordering either 'BE' (Big Endian) * or 'LE' (Little Endian). Default ''. @@ -120,162 +118,162 @@ class Exif { # TIFF Rev. 6.0 Attribute Information (p22) 'IFD0' => [ # Tags relating to image structure - 'ImageWidth' => Exif::SHORT_OR_LONG, # Image width - 'ImageLength' => Exif::SHORT_OR_LONG, # Image height - 'BitsPerSample' => [ Exif::SHORT, 3 ], # Number of bits per component + 'ImageWidth' => self::SHORT_OR_LONG, # Image width + 'ImageLength' => self::SHORT_OR_LONG, # Image height + 'BitsPerSample' => [ self::SHORT, 3 ], # Number of bits per component # "When a primary image is JPEG compressed, this designation is not" # "necessary and is omitted." (p23) - 'Compression' => Exif::SHORT, # Compression scheme #p23 - 'PhotometricInterpretation' => Exif::SHORT, # Pixel composition #p23 - 'Orientation' => Exif::SHORT, # Orientation of image #p24 - 'SamplesPerPixel' => Exif::SHORT, # Number of components - 'PlanarConfiguration' => Exif::SHORT, # Image data arrangement #p24 - 'YCbCrSubSampling' => [ Exif::SHORT, 2 ], # Subsampling ratio of Y to C #p24 - 'YCbCrPositioning' => Exif::SHORT, # Y and C positioning #p24-25 - 'XResolution' => Exif::RATIONAL, # Image resolution in width direction - 'YResolution' => Exif::RATIONAL, # Image resolution in height direction - 'ResolutionUnit' => Exif::SHORT, # Unit of X and Y resolution #(p26) + 'Compression' => self::SHORT, # Compression scheme #p23 + 'PhotometricInterpretation' => self::SHORT, # Pixel composition #p23 + 'Orientation' => self::SHORT, # Orientation of image #p24 + 'SamplesPerPixel' => self::SHORT, # Number of components + 'PlanarConfiguration' => self::SHORT, # Image data arrangement #p24 + 'YCbCrSubSampling' => [ self::SHORT, 2 ], # Subsampling ratio of Y to C #p24 + 'YCbCrPositioning' => self::SHORT, # Y and C positioning #p24-25 + 'XResolution' => self::RATIONAL, # Image resolution in width direction + 'YResolution' => self::RATIONAL, # Image resolution in height direction + 'ResolutionUnit' => self::SHORT, # Unit of X and Y resolution #(p26) # Tags relating to recording offset - 'StripOffsets' => Exif::SHORT_OR_LONG, # Image data location - 'RowsPerStrip' => Exif::SHORT_OR_LONG, # Number of rows per strip - 'StripByteCounts' => Exif::SHORT_OR_LONG, # Bytes per compressed strip - 'JPEGInterchangeFormat' => Exif::SHORT_OR_LONG, # Offset to JPEG SOI - 'JPEGInterchangeFormatLength' => Exif::SHORT_OR_LONG, # Bytes of JPEG data + 'StripOffsets' => self::SHORT_OR_LONG, # Image data location + 'RowsPerStrip' => self::SHORT_OR_LONG, # Number of rows per strip + 'StripByteCounts' => self::SHORT_OR_LONG, # Bytes per compressed strip + 'JPEGInterchangeFormat' => self::SHORT_OR_LONG, # Offset to JPEG SOI + 'JPEGInterchangeFormatLength' => self::SHORT_OR_LONG, # Bytes of JPEG data # Tags relating to image data characteristics - 'TransferFunction' => Exif::IGNORE, # Transfer function - 'WhitePoint' => [ Exif::RATIONAL, 2 ], # White point chromaticity - 'PrimaryChromaticities' => [ Exif::RATIONAL, 6 ], # Chromaticities of primarities + 'TransferFunction' => self::IGNORE, # Transfer function + 'WhitePoint' => [ self::RATIONAL, 2 ], # White point chromaticity + 'PrimaryChromaticities' => [ self::RATIONAL, 6 ], # Chromaticities of primarities # Color space transformation matrix coefficients #p27 - 'YCbCrCoefficients' => [ Exif::RATIONAL, 3 ], - 'ReferenceBlackWhite' => [ Exif::RATIONAL, 6 ], # Pair of black and white reference values + 'YCbCrCoefficients' => [ self::RATIONAL, 3 ], + 'ReferenceBlackWhite' => [ self::RATIONAL, 6 ], # Pair of black and white reference values # Other tags - 'DateTime' => Exif::ASCII, # File change date and time - 'ImageDescription' => Exif::ASCII, # Image title - 'Make' => Exif::ASCII, # Image input equipment manufacturer - 'Model' => Exif::ASCII, # Image input equipment model - 'Software' => Exif::ASCII, # Software used - 'Artist' => Exif::ASCII, # Person who created the image - 'Copyright' => Exif::ASCII, # Copyright holder + 'DateTime' => self::ASCII, # File change date and time + 'ImageDescription' => self::ASCII, # Image title + 'Make' => self::ASCII, # Image input equipment manufacturer + 'Model' => self::ASCII, # Image input equipment model + 'Software' => self::ASCII, # Software used + 'Artist' => self::ASCII, # Person who created the image + 'Copyright' => self::ASCII, # Copyright holder ], # Exif IFD Attribute Information (p30-31) 'EXIF' => [ # @todo NOTE: Nonexistence of this field is taken to mean nonconformance # to the Exif 2.1 AND 2.2 standards - 'ExifVersion' => Exif::UNDEFINED, # Exif version - 'FlashPixVersion' => Exif::UNDEFINED, # Supported Flashpix version #p32 + 'ExifVersion' => self::UNDEFINED, # Exif version + 'FlashPixVersion' => self::UNDEFINED, # Supported Flashpix version #p32 # Tags relating to Image Data Characteristics - 'ColorSpace' => Exif::SHORT, # Color space information #p32 + 'ColorSpace' => self::SHORT, # Color space information #p32 # Tags relating to image configuration - 'ComponentsConfiguration' => Exif::UNDEFINED, # Meaning of each component #p33 - 'CompressedBitsPerPixel' => Exif::RATIONAL, # Image compression mode - 'PixelYDimension' => Exif::SHORT_OR_LONG, # Valid image height - 'PixelXDimension' => Exif::SHORT_OR_LONG, # Valid image width + 'ComponentsConfiguration' => self::UNDEFINED, # Meaning of each component #p33 + 'CompressedBitsPerPixel' => self::RATIONAL, # Image compression mode + 'PixelYDimension' => self::SHORT_OR_LONG, # Valid image height + 'PixelXDimension' => self::SHORT_OR_LONG, # Valid image width # Tags relating to related user information - 'MakerNote' => Exif::IGNORE, # Manufacturer notes - 'UserComment' => Exif::UNDEFINED, # User comments #p34 + 'MakerNote' => self::IGNORE, # Manufacturer notes + 'UserComment' => self::UNDEFINED, # User comments #p34 # Tags relating to related file information - 'RelatedSoundFile' => Exif::ASCII, # Related audio file + 'RelatedSoundFile' => self::ASCII, # Related audio file # Tags relating to date and time - 'DateTimeOriginal' => Exif::ASCII, # Date and time of original data generation #p36 - 'DateTimeDigitized' => Exif::ASCII, # Date and time of original data generation - 'SubSecTime' => Exif::ASCII, # DateTime subseconds - 'SubSecTimeOriginal' => Exif::ASCII, # DateTimeOriginal subseconds - 'SubSecTimeDigitized' => Exif::ASCII, # DateTimeDigitized subseconds + 'DateTimeOriginal' => self::ASCII, # Date and time of original data generation #p36 + 'DateTimeDigitized' => self::ASCII, # Date and time of original data generation + 'SubSecTime' => self::ASCII, # DateTime subseconds + 'SubSecTimeOriginal' => self::ASCII, # DateTimeOriginal subseconds + 'SubSecTimeDigitized' => self::ASCII, # DateTimeDigitized subseconds # Tags relating to picture-taking conditions (p31) - 'ExposureTime' => Exif::RATIONAL, # Exposure time - 'FNumber' => Exif::RATIONAL, # F Number - 'ExposureProgram' => Exif::SHORT, # Exposure Program #p38 - 'SpectralSensitivity' => Exif::ASCII, # Spectral sensitivity - 'ISOSpeedRatings' => Exif::SHORT, # ISO speed rating - 'OECF' => Exif::IGNORE, + 'ExposureTime' => self::RATIONAL, # Exposure time + 'FNumber' => self::RATIONAL, # F Number + 'ExposureProgram' => self::SHORT, # Exposure Program #p38 + 'SpectralSensitivity' => self::ASCII, # Spectral sensitivity + 'ISOSpeedRatings' => self::SHORT, # ISO speed rating + 'OECF' => self::IGNORE, # Optoelectronic conversion factor. Note: We don't have support for this atm. - 'ShutterSpeedValue' => Exif::SRATIONAL, # Shutter speed - 'ApertureValue' => Exif::RATIONAL, # Aperture - 'BrightnessValue' => Exif::SRATIONAL, # Brightness - 'ExposureBiasValue' => Exif::SRATIONAL, # Exposure bias - 'MaxApertureValue' => Exif::RATIONAL, # Maximum land aperture - 'SubjectDistance' => Exif::RATIONAL, # Subject distance - 'MeteringMode' => Exif::SHORT, # Metering mode #p40 - 'LightSource' => Exif::SHORT, # Light source #p40-41 - 'Flash' => Exif::SHORT, # Flash #p41-42 - 'FocalLength' => Exif::RATIONAL, # Lens focal length - 'SubjectArea' => [ Exif::SHORT, 4 ], # Subject area - 'FlashEnergy' => Exif::RATIONAL, # Flash energy - 'SpatialFrequencyResponse' => Exif::IGNORE, # Spatial frequency response. Not supported atm. - 'FocalPlaneXResolution' => Exif::RATIONAL, # Focal plane X resolution - 'FocalPlaneYResolution' => Exif::RATIONAL, # Focal plane Y resolution - 'FocalPlaneResolutionUnit' => Exif::SHORT, # Focal plane resolution unit #p46 - 'SubjectLocation' => [ Exif::SHORT, 2 ], # Subject location - 'ExposureIndex' => Exif::RATIONAL, # Exposure index - 'SensingMethod' => Exif::SHORT, # Sensing method #p46 - 'FileSource' => Exif::UNDEFINED, # File source #p47 - 'SceneType' => Exif::UNDEFINED, # Scene type #p47 - 'CFAPattern' => Exif::IGNORE, # CFA pattern. not supported atm. - 'CustomRendered' => Exif::SHORT, # Custom image processing #p48 - 'ExposureMode' => Exif::SHORT, # Exposure mode #p48 - 'WhiteBalance' => Exif::SHORT, # White Balance #p49 - 'DigitalZoomRatio' => Exif::RATIONAL, # Digital zoom ration - 'FocalLengthIn35mmFilm' => Exif::SHORT, # Focal length in 35 mm film - 'SceneCaptureType' => Exif::SHORT, # Scene capture type #p49 - 'GainControl' => Exif::SHORT, # Scene control #p49-50 - 'Contrast' => Exif::SHORT, # Contrast #p50 - 'Saturation' => Exif::SHORT, # Saturation #p50 - 'Sharpness' => Exif::SHORT, # Sharpness #p50 - 'DeviceSettingDescription' => Exif::IGNORE, + 'ShutterSpeedValue' => self::SRATIONAL, # Shutter speed + 'ApertureValue' => self::RATIONAL, # Aperture + 'BrightnessValue' => self::SRATIONAL, # Brightness + 'ExposureBiasValue' => self::SRATIONAL, # Exposure bias + 'MaxApertureValue' => self::RATIONAL, # Maximum land aperture + 'SubjectDistance' => self::RATIONAL, # Subject distance + 'MeteringMode' => self::SHORT, # Metering mode #p40 + 'LightSource' => self::SHORT, # Light source #p40-41 + 'Flash' => self::SHORT, # Flash #p41-42 + 'FocalLength' => self::RATIONAL, # Lens focal length + 'SubjectArea' => [ self::SHORT, 4 ], # Subject area + 'FlashEnergy' => self::RATIONAL, # Flash energy + 'SpatialFrequencyResponse' => self::IGNORE, # Spatial frequency response. Not supported atm. + 'FocalPlaneXResolution' => self::RATIONAL, # Focal plane X resolution + 'FocalPlaneYResolution' => self::RATIONAL, # Focal plane Y resolution + 'FocalPlaneResolutionUnit' => self::SHORT, # Focal plane resolution unit #p46 + 'SubjectLocation' => [ self::SHORT, 2 ], # Subject location + 'ExposureIndex' => self::RATIONAL, # Exposure index + 'SensingMethod' => self::SHORT, # Sensing method #p46 + 'FileSource' => self::UNDEFINED, # File source #p47 + 'SceneType' => self::UNDEFINED, # Scene type #p47 + 'CFAPattern' => self::IGNORE, # CFA pattern. not supported atm. + 'CustomRendered' => self::SHORT, # Custom image processing #p48 + 'ExposureMode' => self::SHORT, # Exposure mode #p48 + 'WhiteBalance' => self::SHORT, # White Balance #p49 + 'DigitalZoomRatio' => self::RATIONAL, # Digital zoom ration + 'FocalLengthIn35mmFilm' => self::SHORT, # Focal length in 35 mm film + 'SceneCaptureType' => self::SHORT, # Scene capture type #p49 + 'GainControl' => self::SHORT, # Scene control #p49-50 + 'Contrast' => self::SHORT, # Contrast #p50 + 'Saturation' => self::SHORT, # Saturation #p50 + 'Sharpness' => self::SHORT, # Sharpness #p50 + 'DeviceSettingDescription' => self::IGNORE, # Device settings description. This could maybe be supported. Need to find an # example file that uses this to see if it has stuff of interest in it. - 'SubjectDistanceRange' => Exif::SHORT, # Subject distance range #p51 + 'SubjectDistanceRange' => self::SHORT, # Subject distance range #p51 - 'ImageUniqueID' => Exif::ASCII, # Unique image ID + 'ImageUniqueID' => self::ASCII, # Unique image ID ], # GPS Attribute Information (p52) 'GPS' => [ - 'GPSVersion' => Exif::UNDEFINED, + 'GPSVersion' => self::UNDEFINED, # Should be an array of 4 Exif::BYTE's. However php treats it as an undefined # Note exif standard calls this GPSVersionID, but php doesn't like the id suffix - 'GPSLatitudeRef' => Exif::ASCII, # North or South Latitude #p52-53 - 'GPSLatitude' => [ Exif::RATIONAL, 3 ], # Latitude - 'GPSLongitudeRef' => Exif::ASCII, # East or West Longitude #p53 - 'GPSLongitude' => [ Exif::RATIONAL, 3 ], # Longitude - 'GPSAltitudeRef' => Exif::UNDEFINED, + 'GPSLatitudeRef' => self::ASCII, # North or South Latitude #p52-53 + 'GPSLatitude' => [ self::RATIONAL, 3 ], # Latitude + 'GPSLongitudeRef' => self::ASCII, # East or West Longitude #p53 + 'GPSLongitude' => [ self::RATIONAL, 3 ], # Longitude + 'GPSAltitudeRef' => self::UNDEFINED, # Altitude reference. Note, the exif standard says this should be an EXIF::Byte, # but php seems to disagree. - 'GPSAltitude' => Exif::RATIONAL, # Altitude - 'GPSTimeStamp' => [ Exif::RATIONAL, 3 ], # GPS time (atomic clock) - 'GPSSatellites' => Exif::ASCII, # Satellites used for measurement - 'GPSStatus' => Exif::ASCII, # Receiver status #p54 - 'GPSMeasureMode' => Exif::ASCII, # Measurement mode #p54-55 - 'GPSDOP' => Exif::RATIONAL, # Measurement precision - 'GPSSpeedRef' => Exif::ASCII, # Speed unit #p55 - 'GPSSpeed' => Exif::RATIONAL, # Speed of GPS receiver - 'GPSTrackRef' => Exif::ASCII, # Reference for direction of movement #p55 - 'GPSTrack' => Exif::RATIONAL, # Direction of movement - 'GPSImgDirectionRef' => Exif::ASCII, # Reference for direction of image #p56 - 'GPSImgDirection' => Exif::RATIONAL, # Direction of image - 'GPSMapDatum' => Exif::ASCII, # Geodetic survey data used - 'GPSDestLatitudeRef' => Exif::ASCII, # Reference for latitude of destination #p56 - 'GPSDestLatitude' => [ Exif::RATIONAL, 3 ], # Latitude destination - 'GPSDestLongitudeRef' => Exif::ASCII, # Reference for longitude of destination #p57 - 'GPSDestLongitude' => [ Exif::RATIONAL, 3 ], # Longitude of destination - 'GPSDestBearingRef' => Exif::ASCII, # Reference for bearing of destination #p57 - 'GPSDestBearing' => Exif::RATIONAL, # Bearing of destination - 'GPSDestDistanceRef' => Exif::ASCII, # Reference for distance to destination #p57-58 - 'GPSDestDistance' => Exif::RATIONAL, # Distance to destination - 'GPSProcessingMethod' => Exif::UNDEFINED, # Name of GPS processing method - 'GPSAreaInformation' => Exif::UNDEFINED, # Name of GPS area - 'GPSDateStamp' => Exif::ASCII, # GPS date - 'GPSDifferential' => Exif::SHORT, # GPS differential correction + 'GPSAltitude' => self::RATIONAL, # Altitude + 'GPSTimeStamp' => [ self::RATIONAL, 3 ], # GPS time (atomic clock) + 'GPSSatellites' => self::ASCII, # Satellites used for measurement + 'GPSStatus' => self::ASCII, # Receiver status #p54 + 'GPSMeasureMode' => self::ASCII, # Measurement mode #p54-55 + 'GPSDOP' => self::RATIONAL, # Measurement precision + 'GPSSpeedRef' => self::ASCII, # Speed unit #p55 + 'GPSSpeed' => self::RATIONAL, # Speed of GPS receiver + 'GPSTrackRef' => self::ASCII, # Reference for direction of movement #p55 + 'GPSTrack' => self::RATIONAL, # Direction of movement + 'GPSImgDirectionRef' => self::ASCII, # Reference for direction of image #p56 + 'GPSImgDirection' => self::RATIONAL, # Direction of image + 'GPSMapDatum' => self::ASCII, # Geodetic survey data used + 'GPSDestLatitudeRef' => self::ASCII, # Reference for latitude of destination #p56 + 'GPSDestLatitude' => [ self::RATIONAL, 3 ], # Latitude destination + 'GPSDestLongitudeRef' => self::ASCII, # Reference for longitude of destination #p57 + 'GPSDestLongitude' => [ self::RATIONAL, 3 ], # Longitude of destination + 'GPSDestBearingRef' => self::ASCII, # Reference for bearing of destination #p57 + 'GPSDestBearing' => self::RATIONAL, # Bearing of destination + 'GPSDestDistanceRef' => self::ASCII, # Reference for distance to destination #p57-58 + 'GPSDestDistance' => self::RATIONAL, # Distance to destination + 'GPSProcessingMethod' => self::UNDEFINED, # Name of GPS processing method + 'GPSAreaInformation' => self::UNDEFINED, # Name of GPS area + 'GPSDateStamp' => self::ASCII, # GPS date + 'GPSDifferential' => self::SHORT, # GPS differential correction ], ]; @@ -761,43 +759,43 @@ class Exif { } // Does not work if not typecast switch ( (string)$etype ) { - case (string)Exif::BYTE: + case (string)self::BYTE: $this->debug( $val, __FUNCTION__, $debug ); return $this->isByte( $val ); - case (string)Exif::ASCII: + case (string)self::ASCII: $this->debug( $val, __FUNCTION__, $debug ); return $this->isASCII( $val ); - case (string)Exif::SHORT: + case (string)self::SHORT: $this->debug( $val, __FUNCTION__, $debug ); return $this->isShort( $val ); - case (string)Exif::LONG: + case (string)self::LONG: $this->debug( $val, __FUNCTION__, $debug ); return $this->isLong( $val ); - case (string)Exif::RATIONAL: + case (string)self::RATIONAL: $this->debug( $val, __FUNCTION__, $debug ); return $this->isRational( $val ); - case (string)Exif::SHORT_OR_LONG: + case (string)self::SHORT_OR_LONG: $this->debug( $val, __FUNCTION__, $debug ); return $this->isShort( $val ) || $this->isLong( $val ); - case (string)Exif::UNDEFINED: + case (string)self::UNDEFINED: $this->debug( $val, __FUNCTION__, $debug ); return $this->isUndefined( $val ); - case (string)Exif::SLONG: + case (string)self::SLONG: $this->debug( $val, __FUNCTION__, $debug ); return $this->isSlong( $val ); - case (string)Exif::SRATIONAL: + case (string)self::SRATIONAL: $this->debug( $val, __FUNCTION__, $debug ); return $this->isSrational( $val ); - case (string)Exif::IGNORE: + case (string)self::IGNORE: $this->debug( $val, __FUNCTION__, $debug ); return false; diff --git a/includes/media/FormatMetadata.php b/includes/media/FormatMetadata.php index 69982c2fb4..666196585a 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 @@ -1761,9 +1761,9 @@ class FormatMetadata extends ContextSource { } return $newValue; } else { // _type is 'ul' or 'ol' or missing in which case it defaults to 'ul' - list( $k, $v ) = each( $value ); - if ( $k === '_type' ) { - $v = current( $value ); + $v = reset( $value ); + if ( key( $value ) === '_type' ) { + $v = next( $value ); } return $v; } @@ -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..481e880cfe 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,12 +915,12 @@ 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 []; + return [ 'X-Content-Dimensions' => '' ]; // T175689 } } 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/SVGMetadataExtractor.php b/includes/media/SVGMetadataExtractor.php index 2cf4d23b45..9b22cbee1a 100644 --- a/includes/media/SVGMetadataExtractor.php +++ b/includes/media/SVGMetadataExtractor.php @@ -58,8 +58,6 @@ class SVGReader { private $languagePrefixes = []; /** - * Constructor - * * Creates an SVGReader drawing from the source provided * @param string $source URI from which to read * @throws MWException|Exception diff --git a/includes/media/TransformationalImageHandler.php b/includes/media/TransformationalImageHandler.php index 742a5b7f61..de438da2cf 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 @@ -221,7 +221,7 @@ abstract class TransformationalImageHandler extends ImageHandler { } # Try a hook. Called "Bitmap" for historical reasons. - /** @var $mto MediaTransformOutput */ + /** @var MediaTransformOutput $mto */ $mto = null; Hooks::run( 'BitmapHandlerTransform', [ $this, $image, &$scalerParams, &$mto ] ); if ( !is_null( $mto ) ) { @@ -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..e23989dfa8 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 ) { @@ -298,6 +299,8 @@ class WebPHandler extends BitmapHandler { /** * Must use "im" for XCF * + * @param string $dstPath + * @param bool $checkDstPath * @return string */ protected function getScalerType( $dstPath, $checkDstPath = true ) { 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 16328bcead..b91bd9a88a 100644 --- a/includes/page/Article.php +++ b/includes/page/Article.php @@ -466,7 +466,7 @@ class Article implements Page { # Allow frames by default $outputPage->allowClickjacking(); - $parserCache = ParserCache::singleton(); + $parserCache = MediaWikiServices::getInstance()->getParserCache(); $parserOptions = $this->getParserOptions(); # Render printable version, use printable version cache @@ -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 ); @@ -1594,7 +1594,7 @@ class Article implements Page { [ 'delete', $this->getTitle()->getPrefixedText() ] ) ) { # Flag to hide all contents of the archived revisions - $suppress = $request->getVal( 'wpSuppress' ) && $user->isAllowed( 'suppressrevision' ); + $suppress = $request->getCheck( 'wpSuppress' ) && $user->isAllowed( 'suppressrevision' ); $this->doDelete( $reason, $suppress ); @@ -1669,50 +1669,37 @@ class Article implements Page { $title = $this->getTitle(); $ctx = $this->getContext(); $outputPage = $ctx->getOutput(); - $useMediaWikiUIEverywhere = $ctx->getConfig()->get( 'UseMediaWikiUIEverywhere' ); $outputPage->setPageTitle( wfMessage( 'delete-confirm', $title->getPrefixedText() ) ); $outputPage->addBacklinkSubtitle( $title ); $outputPage->setRobotPolicy( 'noindex,nofollow' ); + $backlinkCache = $title->getBacklinkCache(); if ( $backlinkCache->hasLinks( 'pagelinks' ) || $backlinkCache->hasLinks( 'templatelinks' ) ) { $outputPage->wrapWikiMsg( "\n", 'deleting-backlinks-warning' ); } + + $subpageQueryLimit = 51; + $subpages = $title->getSubpages( $subpageQueryLimit ); + $subpageCount = count( $subpages ); + if ( $subpageCount > 0 ) { + $outputPage->wrapWikiMsg( "\n", + [ 'deleting-subpages-warning', Message::numParam( $subpageCount ) ] ); + } $outputPage->addWikiMsg( 'confirmdeletetext' ); Hooks::run( 'ArticleConfirmDelete', [ $this, $outputPage, &$reason ] ); $user = $this->getContext()->getUser(); - if ( $user->isAllowed( 'suppressrevision' ) ) { - $suppress = Html::openElement( 'div', [ 'id' => 'wpDeleteSuppressRow' ] ) . - Xml::checkLabel( wfMessage( 'revdelete-suppress' )->text(), - 'wpSuppress', 'wpSuppress', false, [ 'tabindex' => '4' ] ) . - Html::closeElement( 'div' ); - } else { - $suppress = ''; - } $checkWatch = $user->getBoolOption( 'watchdeletion' ) || $user->isWatched( $title ); $outputPage->enableOOUI(); - $options = []; - $options[] = [ - 'data' => 'other', - 'label' => $ctx->msg( 'deletereasonotherlist' )->inContentLanguage()->text(), - ]; - $list = $ctx->msg( 'deletereason-dropdown' )->inContentLanguage()->text(); - foreach ( explode( "\n", $list ) as $option ) { - $value = trim( $option ); - if ( $value == '' ) { - continue; - } elseif ( substr( $value, 0, 1 ) == '*' && substr( $value, 1, 1 ) != '*' ) { - $options[] = [ 'optgroup' => trim( substr( $value, 1 ) ) ]; - } elseif ( substr( $value, 0, 2 ) == '**' ) { - $options[] = [ 'data' => trim( substr( $value, 2 ) ) ]; - } else { - $options[] = [ 'data' => trim( $value ) ]; - } - } + $options = Xml::listDropDownOptions( + $ctx->msg( 'deletereason-dropdown' )->inContentLanguage()->text(), + [ 'other' => $ctx->msg( 'deletereasonotherlist' )->inContentLanguage()->text() ] + ); + $options = Xml::listDropDownOptionsOoui( $options ); $fields[] = new OOUI\FieldLayout( new OOUI\DropdownInputWidget( [ @@ -1761,6 +1748,21 @@ class Article implements Page { ); } + if ( $user->isAllowed( 'suppressrevision' ) ) { + $fields[] = new OOUI\FieldLayout( + new OOUI\CheckboxInputWidget( [ + 'name' => 'wpSuppress', + 'inputId' => 'wpSuppress', + 'tabIndex' => 4, + ] ), + [ + 'label' => $ctx->msg( 'revdelete-suppress' )->text(), + 'align' => 'inline', + 'infusable' => true, + ] + ); + } + $fields[] = new OOUI\FieldLayout( new OOUI\ButtonInputWidget( [ 'name' => 'wpConfirmB', @@ -1905,7 +1907,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 ) { @@ -2565,7 +2567,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 @@ -2579,7 +2581,7 @@ class Article implements Page { /** * @param array $limit * @param string $reason - * @param int $cascade + * @param int &$cascade * @param array $expiry * @return bool */ @@ -2600,7 +2602,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( @@ -2614,7 +2616,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 */ @@ -2627,7 +2629,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 */ @@ -2637,7 +2639,7 @@ class Article implements Page { } /** - * @param bool $hasHistory + * @param bool &$hasHistory * @return mixed */ public function generateReason( &$hasHistory ) { diff --git a/includes/page/CategoryPage.php b/includes/page/CategoryPage.php index 7dea27113d..2d7e8f24fd 100644 --- a/includes/page/CategoryPage.php +++ b/includes/page/CategoryPage.php @@ -27,7 +27,7 @@ */ class CategoryPage extends Article { # Subclasses can change this to override the viewer class. - public $mCategoryViewerClass = 'CategoryViewer'; + protected $mCategoryViewerClass = 'CategoryViewer'; /** * @var WikiCategoryPage @@ -117,4 +117,12 @@ class CategoryPage extends Article { $out->addHTML( $viewer->getHTML() ); $this->addHelpLink( 'Help:Categories' ); } + + function getCategoryViewerClass() { + return $this->mCategoryViewerClass; + } + + function setCategoryViewerClass( $class ) { + $this->mCategoryViewerClass = $class; + } } diff --git a/includes/page/ImageHistoryPseudoPager.php b/includes/page/ImageHistoryPseudoPager.php index 4785ef1ad4..20bc614b51 100644 --- a/includes/page/ImageHistoryPseudoPager.php +++ b/includes/page/ImageHistoryPseudoPager.php @@ -55,8 +55,7 @@ class ImageHistoryPseudoPager extends ReverseChronologicalPager { public function __construct( $imagePage ) { parent::__construct( $imagePage->getContext() ); $this->mImagePage = $imagePage; - $this->mTitle = clone $imagePage->getTitle(); - $this->mTitle->setFragment( '#filehistory' ); + $this->mTitle = $imagePage->getTitle()->createFragmentTarget( 'filehistory' ); $this->mImg = null; $this->mHist = []; $this->mRange = [ 0, 0 ]; // display range diff --git a/includes/page/ImagePage.php b/includes/page/ImagePage.php index d37700b58d..0e3eaa5bcc 100644 --- a/includes/page/ImagePage.php +++ b/includes/page/ImagePage.php @@ -254,15 +254,16 @@ class ImagePage extends Article { $r .= "\n"; foreach ( $metadata as $type => $stuff ) { foreach ( $stuff as $v ) { - # @todo FIXME: Why is this using escapeId for a class?! - $class = Sanitizer::escapeId( $v['id'] ); + $class = str_replace( ' ', '_', $v['id'] ); if ( $type == 'collapsed' ) { // Handled by mediawiki.action.view.metadata module. $class .= ' collapsable'; } - $r .= "\n"; - $r .= "\n"; - $r .= "\n"; + $r .= Html::rawElement( 'tr', + [ 'class' => $class ], + Html::rawElement( 'th', [], $v['name'] ) + . Html::rawElement( 'td', [], $v['value'] ) + ); } } $r .= "
    {$v['name']}{$v['value']}
    \n
    \n"; @@ -620,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..af936cc730 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(); @@ -716,7 +734,9 @@ class PageArchive { 'deleted' => $unsuppress ? 0 : $row->ar_deleted ] ); + // This will also copy the revision to ip_changes if it was an IP edit. $revision->insertOn( $dbw ); + $restored++; Hooks::run( 'ArticleRevisionUndeleted', diff --git a/includes/page/WikiPage.php b/includes/page/WikiPage.php index 3ba2d2e69e..c04eb0ad5b 100644 --- a/includes/page/WikiPage.php +++ b/includes/page/WikiPage.php @@ -20,6 +20,7 @@ * @file */ +use MediaWiki\Edit\PreparedEdit; use \MediaWiki\Logger\LoggerFactory; use \MediaWiki\MediaWikiServices; use Wikimedia\Rdbms\FakeResultWrapper; @@ -49,7 +50,7 @@ class WikiPage implements Page, IDBAccessObject { public $mLatest = false; // !< Integer (false means "not loaded") /**@}}*/ - /** @var stdClass Map of cache fields (text, parser output, ect) for a proposed/new edit */ + /** @var PreparedEdit Map of cache fields (text, parser output, ect) for a proposed/new edit */ public $mPreparedEdit = false; /** @@ -212,6 +213,7 @@ class WikiPage implements Page, IDBAccessObject { * @todo Move this UI stuff somewhere else * * @see ContentHandler::getActionOverrides + * @return array */ public function getActionOverrides() { return $this->getContentHandler()->getActionOverrides(); @@ -382,11 +384,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 ); @@ -781,7 +784,7 @@ class WikiPage implements Page, IDBAccessObject { * Determine whether a page would be suitable for being counted as an * article in the site_stats table based on the title & its content * - * @param object|bool $editInfo (false): object returned by prepareTextForEdit(), + * @param PreparedEdit|bool $editInfo (false): object returned by prepareTextForEdit(), * if false, the current database state will be used * @return bool */ @@ -876,11 +879,10 @@ class WikiPage implements Page, IDBAccessObject { } // Update the DB post-send if the page has not cached since now - $that = $this; $latest = $this->getLatest(); DeferredUpdates::addCallableUpdate( - function () use ( $that, $retval, $latest ) { - $that->insertRedirectEntry( $retval, $latest ); + function () use ( $retval, $latest ) { + $this->insertRedirectEntry( $retval, $latest ); }, DeferredUpdates::POSTSEND, wfGetDB( DB_MASTER ) @@ -981,18 +983,12 @@ class WikiPage implements Page, IDBAccessObject { $dbr = wfGetDB( DB_REPLICA ); - if ( $dbr->implicitGroupby() ) { - $realNameField = 'user_real_name'; - } else { - $realNameField = 'MIN(user_real_name) AS user_real_name'; - } - $tables = [ 'revision', 'user' ]; $fields = [ 'user_id' => 'rev_user', 'user_name' => 'rev_user_text', - $realNameField, + 'user_real_name' => 'MIN(user_real_name)', 'timestamp' => 'MAX(rev_timestamp)', ]; @@ -1045,9 +1041,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( @@ -1069,7 +1065,8 @@ class WikiPage implements Page, IDBAccessObject { } if ( $useParserCache ) { - $parserOutput = ParserCache::singleton()->get( $this, $parserOptions ); + $parserOutput = MediaWikiServices::getInstance()->getParserCache() + ->get( $this, $parserOptions ); if ( $parserOutput !== false ) { return $parserOutput; } @@ -1164,11 +1161,10 @@ class WikiPage implements Page, IDBAccessObject { * page ID is already in use. */ public function insertOn( $dbw, $pageId = null ) { - $pageIdForInsert = $pageId ?: $dbw->nextSequenceValue( 'page_page_id_seq' ); + $pageIdForInsert = $pageId ? [ 'page_id' => $pageId ] : []; $dbw->insert( 'page', [ - 'page_id' => $pageIdForInsert, 'page_namespace' => $this->mTitle->getNamespace(), 'page_title' => $this->mTitle->getDBkey(), 'page_restrictions' => '', @@ -1178,7 +1174,7 @@ class WikiPage implements Page, IDBAccessObject { 'page_touched' => $dbw->timestamp(), 'page_latest' => 0, // Fill this in shortly... 'page_len' => 0, // Fill this in shortly... - ], + ] + $pageIdForInsert, __METHOD__, 'IGNORE' ); @@ -1606,7 +1602,7 @@ class WikiPage implements Page, IDBAccessObject { $meta = [ 'bot' => ( $flags & EDIT_FORCE_BOT ), 'minor' => ( $flags & EDIT_MINOR ) && $user->isAllowed( 'minoredit' ), - 'serialized' => $editInfo->pst, + 'serialized' => $pstContent->serialize( $serialFormat ), 'serialFormat' => $serialFormat, 'baseRevId' => $baseRevId, 'oldRevision' => $old_revision, @@ -1636,7 +1632,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 @@ -1657,7 +1653,7 @@ class WikiPage implements Page, IDBAccessObject { // Convenience variables $now = wfTimestampNow(); $oldid = $meta['oldId']; - /** @var $oldContent Content|null */ + /** @var Content|null $oldContent */ $oldContent = $meta['oldContent']; $newsize = $content->getSize(); @@ -1810,7 +1806,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 @@ -1919,10 +1915,10 @@ class WikiPage implements Page, IDBAccessObject { $wikiPage = $this; // Trigger post-create hook $params = [ &$wikiPage, &$user, $content, $summary, - $flags & EDIT_MINOR, null, null, &$flags, $revision ]; + $flags & EDIT_MINOR, null, null, &$flags, $revision ]; Hooks::run( 'PageContentInsertComplete', $params ); // Trigger post-save hook - $params = array_merge( $params, [ &$status, $meta['baseRevId'] ] ); + $params = array_merge( $params, [ &$status, $meta['baseRevId'], 0 ] ); Hooks::run( 'PageContentSaveComplete', $params ); } ), @@ -1960,7 +1956,9 @@ class WikiPage implements Page, IDBAccessObject { /** * Prepare content which is about to be saved. - * Returns a stdClass with source, pst and output members + * + * Prior to 1.30, this returned a stdClass object with the same class + * members. * * @param Content $content * @param Revision|int|null $revision Revision object. For backwards compatibility, a @@ -1969,7 +1967,7 @@ class WikiPage implements Page, IDBAccessObject { * @param string|null $serialFormat * @param bool $useCache Check shared prepared edit cache * - * @return object + * @return PreparedEdit * * @since 1.21 */ @@ -2019,7 +2017,7 @@ class WikiPage implements Page, IDBAccessObject { $popts = ParserOptions::newFromUserAndLang( $user, $wgContLang ); Hooks::run( 'ArticlePrepareTextForEdit', [ $this, $popts ] ); - $edit = (object)[]; + $edit = new PreparedEdit(); if ( $cachedEdit ) { $edit->timestamp = $cachedEdit->timestamp; } else { @@ -2107,13 +2105,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 @@ -2160,7 +2158,7 @@ class WikiPage implements Page, IDBAccessObject { // Save it to the parser cache. // Make sure the cache time matches page_touched to avoid double parsing. - ParserCache::singleton()->save( + MediaWikiServices::getInstance()->getParserCache()->save( $editInfo->output, $this, $editInfo->popts, $revision->getTimestamp(), $editInfo->revid ); @@ -2295,10 +2293,10 @@ class WikiPage implements Page, IDBAccessObject { public function doUpdateRestrictions( array $limit, array $expiry, &$cascade, $reason, User $user, $tags = null ) { - global $wgCascadingRestrictionLevels, $wgContLang; + global $wgCascadingRestrictionLevels; if ( wfReadOnly() ) { - return Status::newFatal( 'readonlytext', wfReadOnlyReason() ); + return Status::newFatal( wfMessage( 'readonlytext', wfReadOnlyReason() ) ); } $this->loadPageData( 'fromdbmaster' ); @@ -2368,9 +2366,6 @@ class WikiPage implements Page, IDBAccessObject { $logAction = 'protect'; } - // Truncate for whole multibyte characters - $reason = $wgContLang->truncate( $reason, 255 ); - $logRelationsValues = []; $logRelationsField = null; $logParamsDetails = []; @@ -2442,7 +2437,6 @@ class WikiPage implements Page, IDBAccessObject { $dbw->insert( 'page_restrictions', [ - 'pr_id' => $dbw->nextSequenceValue( 'page_restrictions_pr_id_seq' ), 'pr_page' => $id, 'pr_type' => $action, 'pr_level' => $restrictions, @@ -2480,6 +2474,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' ] ], [ @@ -2489,8 +2484,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', @@ -2734,6 +2728,7 @@ class WikiPage implements Page, IDBAccessObject { * @param array|string &$error Array of errors to append to * @param User $user The deleting user * @param array $tags Tags to apply to the deletion action + * @param string $logsubtype * @return Status Status object; if successful, $status->value is the log_id of the * deletion log entry. If the page couldn't be deleted because it wasn't * found, $status is a non-fatal 'cannotdelete' error @@ -2742,7 +2737,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" ); @@ -2806,6 +2801,9 @@ class WikiPage implements Page, IDBAccessObject { $content = null; } + $revCommentStore = new CommentStore( 'rev_comment' ); + $arCommentStore = new CommentStore( 'ar_comment' ); + $fields = Revision::selectFields(); $bitfield = false; @@ -2823,20 +2821,28 @@ class WikiPage implements Page, IDBAccessObject { // the rev_deleted field, which is reserved for this purpose. // Get all of the page revisions + $commentQuery = $revCommentStore->getJoin(); $res = $dbw->select( - 'revision', - $fields, + [ 'revision' ] + $commentQuery['tables'], + $fields + $commentQuery['fields'], [ 'rev_page' => $id ], __METHOD__, - 'FOR UPDATE' + 'FOR UPDATE', + $commentQuery['joins'] ); + // Build their equivalent archive rows $rowsInsert = []; + $revids = []; + + /** @var int[] Revision IDs of edits that were made by IPs */ + $ipRevIds = []; + foreach ( $res as $row ) { + $comment = $revCommentStore->getComment( $row ); $rowInsert = [ 'ar_namespace' => $namespace, 'ar_title' => $dbKey, - 'ar_comment' => $row->rev_comment, 'ar_user' => $row->rev_user, 'ar_user_text' => $row->rev_user_text, 'ar_timestamp' => $row->rev_timestamp, @@ -2850,12 +2856,19 @@ class WikiPage implements Page, IDBAccessObject { 'ar_page_id' => $id, 'ar_deleted' => $suppress ? $bitfield : $row->rev_deleted, 'ar_sha1' => $row->rev_sha1, - ]; + ] + $arCommentStore->insert( $dbw, $comment ); if ( $wgContentHandlerUseDB ) { $rowInsert['ar_content_model'] = $row->rev_content_model; $rowInsert['ar_content_format'] = $row->rev_content_format; } $rowsInsert[] = $rowInsert; + $revids[] = $row->rev_id; + + // Keep track of IP edits, so that the corresponding rows can + // be deleted in the ip_changes table. + if ( (int)$row->rev_user === 0 && IP::isValid( $row->rev_user_text ) ) { + $ipRevIds[] = $row->rev_id; + } } // Copy them into the archive table $dbw->insert( 'archive', $rowsInsert, __METHOD__ ); @@ -2870,6 +2883,14 @@ class WikiPage implements Page, IDBAccessObject { // Now that it's safely backed up, delete it $dbw->delete( 'page', [ 'page_id' => $id ], __METHOD__ ); $dbw->delete( 'revision', [ 'rev_page' => $id ], __METHOD__ ); + if ( $wgCommentTableSchemaMigrationStage > MIGRATION_OLD ) { + $dbw->delete( 'revision_comment_temp', [ 'revcomment_rev' => $revids ], __METHOD__ ); + } + + // Also delete records from ip_changes as applicable. + if ( count( $ipRevIds ) > 0 ) { + $dbw->delete( 'ip_changes', [ 'ipc_rev_id' => $ipRevIds ], __METHOD__ ); + } // Log the deletion, if the page was suppressed, put it in the suppression log instead $logtype = $suppress ? 'suppress' : 'delete'; @@ -2915,7 +2936,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() { @@ -2970,7 +2991,7 @@ class WikiPage implements Page, IDBAccessObject { } // Clear caches - WikiPage::onArticleDelete( $this->mTitle ); + self::onArticleDelete( $this->mTitle ); ResourceLoaderWikiModule::invalidateModuleCache( $this->mTitle, $revision, null, wfWikiID() ); @@ -2997,7 +3018,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) * @@ -3049,7 +3070,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 @@ -3134,9 +3155,6 @@ class WikiPage implements Page, IDBAccessObject { // Trim spaces on user supplied text $summary = trim( $summary ); - // Truncate for whole multibyte characters. - $summary = $wgContLang->truncate( $summary, 255 ); - // Save $flags = EDIT_UPDATE | EDIT_INTERNAL; @@ -3410,7 +3428,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(); @@ -3629,7 +3647,7 @@ class WikiPage implements Page, IDBAccessObject { return $this->getTitle()->getCanonicalURL(); } - /* + /** * @param WANObjectCache $cache * @return string[] * @since 1.28 diff --git a/includes/pager/IndexPager.php b/includes/pager/IndexPager.php index 0b867ef00e..d1c98f22fc 100644 --- a/includes/pager/IndexPager.php +++ b/includes/pager/IndexPager.php @@ -162,8 +162,8 @@ abstract class IndexPager extends ContextSource implements Pager { : []; } elseif ( is_array( $index ) ) { # First element is the default - reset( $index ); - list( $this->mOrderType, $this->mIndexField ) = each( $index ); + $this->mIndexField = reset( $index ); + $this->mOrderType = key( $index ); $this->mExtraSortFields = isset( $extraSort[$this->mOrderType] ) ? (array)$extraSort[$this->mOrderType] : []; @@ -737,6 +737,6 @@ abstract class IndexPager extends ContextSource implements Pager { * @return bool */ protected function getDefaultDirections() { - return IndexPager::DIR_ASCENDING; + return self::DIR_ASCENDING; } } diff --git a/includes/parser/BlockLevelPass.php b/includes/parser/BlockLevelPass.php index 599fbf61de..fab9ab7fb1 100644 --- a/includes/parser/BlockLevelPass.php +++ b/includes/parser/BlockLevelPass.php @@ -257,12 +257,17 @@ class BlockLevelPass { $output .= $this->nextItem( $prefix[$commonPrefixLength - 1] ); } + # Close an open
    if we have a
    (":") starting on this line + if ( $this->DTopen && $commonPrefixLength > 0 && $prefix[$commonPrefixLength - 1] === ':' ) { + $output .= $this->nextItem( ':' ); + } + # Open prefixes where appropriate. if ( $lastPrefix && $prefixLength > $commonPrefixLength ) { $output .= "\n"; } while ( $prefixLength > $commonPrefixLength ) { - $char = substr( $prefix, $commonPrefixLength, 1 ); + $char = $prefix[$commonPrefixLength]; $output .= $this->openList( $char ); if ( ';' === $char ) { 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 5da25465c6..d00b333a16 100644 --- a/includes/parser/Parser.php +++ b/includes/parser/Parser.php @@ -227,7 +227,7 @@ class Parser { * @var string Deprecated accessor for the strip marker prefix. * @deprecated since 1.26; use Parser::MARKER_PREFIX instead. */ - public $mUniqPrefix = Parser::MARKER_PREFIX; + public $mUniqPrefix = self::MARKER_PREFIX; /** * @var array Array with the language name of each language link (i.e. the @@ -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 = []; @@ -1295,7 +1268,7 @@ class Parser { if ( !$frame->depth ) { $flag = 0; } else { - $flag = Parser::PTD_FOR_INCLUSION; + $flag = self::PTD_FOR_INCLUSION; } $dom = $this->preprocessToDom( $text, $flag ); $text = $frame->expand( $dom ); @@ -2103,7 +2076,7 @@ class Parser { /** * Process [[ ]] wikilinks (RIL) - * @param string $s + * @param string &$s * @throws MWException * @return LinkHolderArray * @@ -2323,8 +2296,13 @@ 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; + // Special case: strip newlines when only thing between + // this link and next are newlines + $s .= trim( $trail, "\n" ) === '' ? '' : $trail; continue; } @@ -2349,7 +2327,13 @@ 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 + // Special case: strip newlines when only thing between + // this link and next are newlines + $s .= trim( $trail, "\n" ) === '' ? '' : $trail; if ( $wasblank ) { $sortkey = $this->getDefaultSort(); @@ -2361,11 +2345,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 +2590,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 +2598,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 +2698,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() ); @@ -3258,6 +3237,8 @@ class Parser { . wfMessage( 'parser-template-loop-warning', $titleText )->inContentLanguage()->text() . ''; $this->addTrackingCategory( 'template-loop-category' ); + $this->mOutput->addWarning( wfMessage( 'template-loop-warning', + wfEscapeWikiText( $titleText ) )->text() ); wfDebug( __METHOD__ . ": template loop broken at '$titleText'\n" ); } } @@ -3411,7 +3392,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, ]; @@ -4035,7 +4016,7 @@ class Parser { * @private */ public function formatHeadings( $text, $origText, $isMain = true ) { - global $wgMaxTocLevel, $wgExperimentalHtmlIds; + global $wgMaxTocLevel; # Inhibit editsection links if requested in the page if ( isset( $this->mDoubleUnderscores['noeditsection'] ) ) { @@ -4229,61 +4210,46 @@ class Parser { # Save headline for section edit hint before it's escaped $headlineHint = $safeHeadline; - if ( $wgExperimentalHtmlIds ) { - # For reverse compatibility, provide an id that's - # HTML4-compatible, like we used to. - # It may be worth noting, academically, that it's possible for - # the legacy anchor to conflict with a non-legacy headline - # anchor on the page. In this case likely the "correct" thing - # would be to either drop the legacy anchors or make sure - # they're numbered first. However, this would require people - # to type in section names like "abc_.D7.93.D7.90.D7.A4" - # manually, so let's not bother worrying about it. - $legacyHeadline = Sanitizer::escapeId( $safeHeadline, - [ 'noninitial', 'legacy' ] ); - $safeHeadline = Sanitizer::escapeId( $safeHeadline ); - - if ( $legacyHeadline == $safeHeadline ) { - # No reason to have both (in fact, we can't) - $legacyHeadline = false; - } - } else { - $legacyHeadline = false; - $safeHeadline = Sanitizer::escapeId( $safeHeadline, - 'noninitial' ); + # Decode HTML entities + $safeHeadline = Sanitizer::decodeCharReferences( $safeHeadline ); + $fallbackHeadline = Sanitizer::escapeIdForAttribute( $safeHeadline, Sanitizer::ID_FALLBACK ); + $linkAnchor = Sanitizer::escapeIdForLink( $safeHeadline ); + $safeHeadline = Sanitizer::escapeIdForAttribute( $safeHeadline, Sanitizer::ID_PRIMARY ); + if ( $fallbackHeadline === $safeHeadline ) { + # No reason to have both (in fact, we can't) + $fallbackHeadline = false; } - # HTML names must be case-insensitively unique (T12721). - # This does not apply to Unicode characters per - # https://www.w3.org/TR/html5/infrastructure.html#case-sensitivity-and-string-comparison + # HTML IDs must be case-insensitively unique for IE compatibility (T12721). # @todo FIXME: We may be changing them depending on the current locale. $arrayKey = strtolower( $safeHeadline ); - if ( $legacyHeadline === false ) { - $legacyArrayKey = false; + if ( $fallbackHeadline === false ) { + $fallbackArrayKey = false; } else { - $legacyArrayKey = strtolower( $legacyHeadline ); + $fallbackArrayKey = strtolower( $fallbackHeadline ); } # Create the anchor for linking from the TOC to the section $anchor = $safeHeadline; - $legacyAnchor = $legacyHeadline; + $fallbackAnchor = $fallbackHeadline; if ( isset( $refers[$arrayKey] ) ) { // @codingStandardsIgnoreStart for ( $i = 2; isset( $refers["${arrayKey}_$i"] ); ++$i ); // @codingStandardsIgnoreEnd $anchor .= "_$i"; + $linkAnchor .= "_$i"; $refers["${arrayKey}_$i"] = true; } else { $refers[$arrayKey] = true; } - if ( $legacyHeadline !== false && isset( $refers[$legacyArrayKey] ) ) { + if ( $fallbackHeadline !== false && isset( $refers[$fallbackArrayKey] ) ) { // @codingStandardsIgnoreStart - for ( $i = 2; isset( $refers["${legacyArrayKey}_$i"] ); ++$i ); + for ( $i = 2; isset( $refers["${fallbackArrayKey}_$i"] ); ++$i ); // @codingStandardsIgnoreEnd - $legacyAnchor .= "_$i"; - $refers["${legacyArrayKey}_$i"] = true; + $fallbackAnchor .= "_$i"; + $refers["${fallbackArrayKey}_$i"] = true; } else { - $refers[$legacyArrayKey] = true; + $refers[$fallbackArrayKey] = true; } # Don't number the heading if it is the only one (looks silly) @@ -4297,7 +4263,7 @@ class Parser { } if ( $enoughToc && ( !isset( $wgMaxTocLevel ) || $toclevel < $wgMaxTocLevel ) ) { - $toc .= Linker::tocLine( $anchor, $tocline, + $toc .= Linker::tocLine( $linkAnchor, $tocline, $numbering, $toclevel, ( $isTemplate ? false : $sectionIndex ) ); } @@ -4364,7 +4330,7 @@ class Parser { } $head[$headlineCount] = Linker::makeHeadline( $level, $matches['attrib'][$headlineCount], $anchor, $headline, - $editlink, $legacyAnchor ); + $editlink, $fallbackAnchor ); $headlineCount++; } @@ -4553,7 +4519,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 @@ -4914,7 +4880,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 ) { @@ -5423,7 +5389,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 */ @@ -5806,22 +5772,35 @@ class Parser { # Strip out wikitext links(they break the anchor) $text = $this->stripSectionName( $text ); $text = Sanitizer::normalizeSectionNameWhitespace( $text ); - return '#' . Sanitizer::escapeId( $text, 'noninitial' ); + $text = Sanitizer::decodeCharReferences( $text ); + return '#' . Sanitizer::escapeIdForLink( $text ); } /** * Same as guessSectionNameFromWikiText(), but produces legacy anchors - * instead. For use in redirects, since IE6 interprets Redirect: headers - * as something other than UTF-8 (apparently?), resulting in breakage. + * instead, if possible. For use in redirects, since various versions + * of Microsoft browsers interpret Location: headers as something other + * than UTF-8, resulting in breakage. * * @param string $text The section name * @return string An anchor */ public function guessLegacySectionNameFromWikiText( $text ) { + global $wgFragmentMode; + # Strip out wikitext links(they break the anchor) $text = $this->stripSectionName( $text ); $text = Sanitizer::normalizeSectionNameWhitespace( $text ); - return '#' . Sanitizer::escapeId( $text, [ 'noninitial', 'legacy' ] ); + $text = Sanitizer::decodeCharReferences( $text ); + + if ( isset( $wgFragmentMode[1] ) && $wgFragmentMode[1] === 'legacy' ) { + // ForAttribute() and ForLink() are the same for legacy encoding + $id = Sanitizer::escapeIdForAttribute( $text, Sanitizer::ID_FALLBACK ); + } else { + $id = Sanitizer::escapeIdForLink( $text ); + } + + return "#$id"; } /** diff --git a/includes/parser/ParserOptions.php b/includes/parser/ParserOptions.php index 96a4368258..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 ) { @@ -927,7 +927,6 @@ class ParserOptions { } /** - * Constructor * @warning For interaction with the parser cache, use * WikiPage::makeParserOptions(), ContentHandler::makeParserOptions(), or * ParserOptions::newCanonical() instead. @@ -1063,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 10ac1925bd..3480a51f3c 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 = @@ -223,7 +223,7 @@ class ParserOutput extends CacheTime { // finalizeAdaptiveCacheExpiry() uses TTL = MAX( m * PARSE_TIME + b, MIN_AR_TTL) // Current values imply that m=3933.333333 and b=-333.333333 // See https://www.nngroup.com/articles/website-response-times/ - const PARSE_FAST_SEC = .100; // perceived "fast" page parse + const PARSE_FAST_SEC = 0.100; // perceived "fast" page parse const PARSE_SLOW_SEC = 1.0; // perceived "slow" page parse const FAST_AR_TTL = 60; // adaptive TTL for "fast" pages const SLOW_AR_TTL = 3600; // adaptive TTL for "slow" pages @@ -243,6 +243,7 @@ class ParserOutput extends CacheTime { * return value is suitable for writing back via setText() but is not valid * for display to the user. * + * @return string * @since 1.27 */ public function getRawText() { @@ -253,12 +254,12 @@ class ParserOutput extends CacheTime { $text = $this->mText; if ( $this->mEditSectionTokens ) { $text = preg_replace_callback( - ParserOutput::EDITSECTION_REGEX, + self::EDITSECTION_REGEX, function ( $m ) { global $wgOut, $wgLang; $editsectionPage = Title::newFromText( htmlspecialchars_decode( $m[1] ) ); $editsectionSection = htmlspecialchars_decode( $m[2] ); - $editsectionContent = isset( $m[4] ) ? $m[3] : null; + $editsectionContent = isset( $m[4] ) ? Sanitizer::decodeCharReferences( $m[3] ) : null; if ( !is_object( $editsectionPage ) ) { throw new MWException( "Bad parser output text." ); @@ -274,7 +275,7 @@ class ParserOutput extends CacheTime { $text ); } else { - $text = preg_replace( ParserOutput::EDITSECTION_REGEX, '', $text ); + $text = preg_replace( self::EDITSECTION_REGEX, '', $text ); } // If you have an old cached version of this class - sorry, you can't disable the TOC @@ -291,14 +292,17 @@ class ParserOutput extends CacheTime { } /** - * @param integer $id + * @param int $id * @since 1.28 */ public function setSpeculativeRevIdUsed( $id ) { $this->mSpeculativeRevId = $id; } - /** @since 1.28 */ + /** + * @return int|null + * @since 1.28 + */ public function getSpeculativeRevIdUsed() { return $this->mSpeculativeRevId; } @@ -320,6 +324,7 @@ class ParserOutput extends CacheTime { } /** + * @return array * @since 1.25 */ public function getIndicators() { @@ -382,7 +387,10 @@ class ParserOutput extends CacheTime { return $this->mModuleStyles; } - /** @since 1.23 */ + /** + * @return array + * @since 1.23 + */ public function getJsConfigVars() { return $this->mJsConfigVars; } @@ -471,6 +479,8 @@ class ParserOutput extends CacheTime { } /** + * @param string $id + * @param string $content * @since 1.25 */ public function setIndicator( $id, $content ) { @@ -836,6 +846,8 @@ class ParserOutput extends CacheTime { * @code * $parser->getOutput()->my_ext_foo = '...'; * @endcode + * @param string $name + * @param mixed $value */ public function setProperty( $name, $value ) { $this->mProperties[$name] = $value; @@ -1075,7 +1087,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.php b/includes/parser/Preprocessor.php index 24474d5795..49e961aec3 100644 --- a/includes/parser/Preprocessor.php +++ b/includes/parser/Preprocessor.php @@ -62,6 +62,7 @@ abstract class Preprocessor { * * @param string $text * @param int $flags + * @param string $tree */ protected function cacheSetTree( $text, $flags, $tree ) { $config = RequestContext::getMain()->getConfig(); @@ -69,7 +70,7 @@ abstract class Preprocessor { $length = strlen( $text ); $threshold = $config->get( 'PreprocessorCacheThreshold' ); if ( $threshold === false || $length < $threshold || $length > 1e6 ) { - return false; + return; } $cache = ObjectCache::getLocalClusterInstance(); 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..332f8e9fa7 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 ); @@ -1869,6 +1869,8 @@ class PPNode_Hash_Tree implements PPNode { /** * Like splitArg() but for a raw child array. For internal use only. + * @param array $children + * @return array */ public static function splitRawArg( array $children ) { $bits = []; @@ -1910,6 +1912,8 @@ class PPNode_Hash_Tree implements PPNode { /** * Like splitExt() but for a raw child array. For internal use only. + * @param array $children + * @return array */ public static function splitRawExt( array $children ) { $bits = []; @@ -1953,6 +1957,8 @@ class PPNode_Hash_Tree implements PPNode { /** * Like splitHeading() but for a raw child array. For internal use only. + * @param array $children + * @return array */ public static function splitRawHeading( array $children ) { $bits = []; @@ -1984,6 +1990,8 @@ class PPNode_Hash_Tree implements PPNode { /** * Like splitTemplate() but for a raw child array. For internal use only. + * @param array $children + * @return array */ public static function splitRawTemplate( array $children ) { $parts = []; @@ -2027,7 +2035,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 +2164,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/poolcounter/PoolWorkArticleView.php b/includes/poolcounter/PoolWorkArticleView.php index 1f1add7924..17b62d77f8 100644 --- a/includes/poolcounter/PoolWorkArticleView.php +++ b/includes/poolcounter/PoolWorkArticleView.php @@ -17,6 +17,7 @@ * * @file */ +use MediaWiki\MediaWikiServices; class PoolWorkArticleView extends PoolCounterWork { /** @var WikiPage */ @@ -28,6 +29,9 @@ class PoolWorkArticleView extends PoolCounterWork { /** @var int */ private $revid; + /** @var ParserCache */ + private $parserCache; + /** @var ParserOptions */ private $parserOptions; @@ -66,7 +70,8 @@ class PoolWorkArticleView extends PoolCounterWork { $this->cacheable = $useParserCache; $this->parserOptions = $parserOptions; $this->content = $content; - $this->cacheKey = ParserCache::singleton()->getKey( $page, $parserOptions ); + $this->parserCache = MediaWikiServices::getInstance()->getParserCache(); + $this->cacheKey = $this->parserCache->getKey( $page, $parserOptions ); $keyPrefix = $this->cacheKey ?: wfMemcKey( 'articleview', 'missingcachekey' ); parent::__construct( 'ArticleView', $keyPrefix . ':revid:' . $revid ); } @@ -153,7 +158,7 @@ class PoolWorkArticleView extends PoolCounterWork { } if ( $this->cacheable && $this->parserOutput->isCacheable() && $isCurrent ) { - ParserCache::singleton()->save( + $this->parserCache->save( $this->parserOutput, $this->page, $this->parserOptions, $cacheTime, $this->revid ); } @@ -175,7 +180,7 @@ class PoolWorkArticleView extends PoolCounterWork { * @return bool */ public function getCachedWork() { - $this->parserOutput = ParserCache::singleton()->get( $this->page, $this->parserOptions ); + $this->parserOutput = $this->parserCache->get( $this->page, $this->parserOptions ); if ( $this->parserOutput === false ) { wfDebug( __METHOD__ . ": parser cache miss\n" ); @@ -190,7 +195,7 @@ class PoolWorkArticleView extends PoolCounterWork { * @return bool */ public function fallback() { - $this->parserOutput = ParserCache::singleton()->getDirty( $this->page, $this->parserOptions ); + $this->parserOutput = $this->parserCache->getDirty( $this->page, $this->parserOptions ); if ( $this->parserOutput === false ) { wfDebugLog( 'dirty', 'dirty missing' ); 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/profiler/output/ProfilerOutput.php b/includes/profiler/output/ProfilerOutput.php index ddf084e81c..20b07801b4 100644 --- a/includes/profiler/output/ProfilerOutput.php +++ b/includes/profiler/output/ProfilerOutput.php @@ -31,7 +31,6 @@ abstract class ProfilerOutput { protected $params = []; /** - * Constructor * @param Profiler $collector The actual profiler * @param array $params Configuration array, passed down from $wgProfiler */ diff --git a/includes/rcfeed/FormattedRCFeed.php b/includes/rcfeed/FormattedRCFeed.php index 48a9f946a5..afe900d09c 100644 --- a/includes/rcfeed/FormattedRCFeed.php +++ b/includes/rcfeed/FormattedRCFeed.php @@ -52,7 +52,7 @@ abstract class FormattedRCFeed extends RCFeed { */ public function notify( RecentChange $rc, $actionComment = null ) { $params = $this->params; - /** @var $formatter RCFeedFormatter */ + /** @var RCFeedFormatter $formatter */ $formatter = is_object( $params['formatter'] ) ? $params['formatter'] : new $params['formatter']; $line = $formatter->getLine( $params, $rc, $actionComment ); diff --git a/includes/rcfeed/IRCColourfulRCFeedFormatter.php b/includes/rcfeed/IRCColourfulRCFeedFormatter.php index ddea69511a..531a3eb203 100644 --- a/includes/rcfeed/IRCColourfulRCFeedFormatter.php +++ b/includes/rcfeed/IRCColourfulRCFeedFormatter.php @@ -28,6 +28,10 @@ class IRCColourfulRCFeedFormatter implements RCFeedFormatter { /** * @see RCFeedFormatter::getLine + * @param array $feed + * @param RecentChange $rc + * @param string|null $actionComment + * @return string|null */ public function getLine( array $feed, RecentChange $rc, $actionComment ) { global $wgUseRCPatrol, $wgUseNPPatrol, $wgLocalInterwikis, @@ -89,7 +93,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/rcfeed/MachineReadableRCFeedFormatter.php b/includes/rcfeed/MachineReadableRCFeedFormatter.php index 20f88bd97c..a90d648eb3 100644 --- a/includes/rcfeed/MachineReadableRCFeedFormatter.php +++ b/includes/rcfeed/MachineReadableRCFeedFormatter.php @@ -36,6 +36,10 @@ abstract class MachineReadableRCFeedFormatter implements RCFeedFormatter { /** * Generates a notification that can be easily interpreted by a machine. * @see RCFeedFormatter::getLine + * @param array $feed + * @param RecentChange $rc + * @param string|null $actionComment + * @return string|null */ public function getLine( array $feed, RecentChange $rc, $actionComment ) { global $wgCanonicalServer, $wgServerName, $wgScriptPath; diff --git a/includes/rcfeed/RedisPubSubFeedEngine.php b/includes/rcfeed/RedisPubSubFeedEngine.php index 4c011be2cd..8a3aa0c104 100644 --- a/includes/rcfeed/RedisPubSubFeedEngine.php +++ b/includes/rcfeed/RedisPubSubFeedEngine.php @@ -27,11 +27,13 @@ * 'rc'. If the URI contains a query string, its parameters will be parsed * as RedisConnectionPool options. * - * @example + * @par Example: + * @code * $wgRCFeeds['redis'] = array( * 'formatter' => 'JSONRCFeedFormatter', * 'uri' => "redis://127.0.0.1:6379/rc.$wgDBname", * ); + * @endcode * * @since 1.22 */ @@ -39,6 +41,9 @@ class RedisPubSubFeedEngine extends RCFeedEngine { /** * @see FormattedRCFeed::send + * @param array $feed + * @param string $line + * @return bool */ public function send( array $feed, $line ) { $parsed = wfParseUrl( $feed['uri'] ); diff --git a/includes/rcfeed/UDPRCFeedEngine.php b/includes/rcfeed/UDPRCFeedEngine.php index 61ced5f440..f76d771ef4 100644 --- a/includes/rcfeed/UDPRCFeedEngine.php +++ b/includes/rcfeed/UDPRCFeedEngine.php @@ -25,6 +25,9 @@ class UDPRCFeedEngine extends RCFeedEngine { /** * @see RCFeedEngine::send + * @param array $feed + * @param string $line + * @return bool */ public function send( array $feed, $line ) { $transport = UDPTransport::newFromString( $feed['uri'] ); diff --git a/includes/registration/ExtensionJsonValidator.php b/includes/registration/ExtensionJsonValidator.php index 8142111b82..c8e5e1906b 100644 --- a/includes/registration/ExtensionJsonValidator.php +++ b/includes/registration/ExtensionJsonValidator.php @@ -105,7 +105,7 @@ class ExtensionJsonValidator { // All good. return true; } else { - $out = "$path did pass validation.\n"; + $out = "$path did not pass validation.\n"; foreach ( $validator->getErrors() as $error ) { $out .= "[{$error['property']}] {$error['message']}\n"; } diff --git a/includes/registration/ExtensionRegistry.php b/includes/registration/ExtensionRegistry.php index eac04a9b89..bf33c6cfa7 100644 --- a/includes/registration/ExtensionRegistry.php +++ b/includes/registration/ExtensionRegistry.php @@ -332,6 +332,12 @@ class ExtensionRegistry { } foreach ( $info['callbacks'] as $name => $cb ) { + if ( !is_callable( $cb ) ) { + if ( is_array( $cb ) ) { + $cb = '[ ' . implode( ', ', $cb ) . ' ]'; + } + throw new UnexpectedValueException( "callback '$cb' is not callable" ); + } call_user_func( $cb, $info['credits'][$name] ); } } diff --git a/includes/resourceloader/ResourceLoader.php b/includes/resourceloader/ResourceLoader.php index 855311667d..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 */ @@ -178,7 +187,7 @@ class ResourceLoader implements LoggerAwareInterface { * @return string Filtered data, or a comment containing an error message */ public static function filter( $filter, $data, array $options = [] ) { - if ( strpos( $data, ResourceLoader::FILTER_NOMIN ) !== false ) { + if ( strpos( $data, self::FILTER_NOMIN ) !== false ) { return $data; } @@ -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': @@ -1079,7 +1101,7 @@ MESSAGE; // mw.loader.implement will use globalEval if scripts is a string. // Minify manually here, because general response minification is // not effective due it being a string literal, not a function. - if ( !ResourceLoader::inDebugMode() ) { + if ( !self::inDebugMode() ) { $scripts = self::filter( 'minify-js', $scripts ); // T107377 } } else { @@ -1139,7 +1161,7 @@ MESSAGE; } else { if ( count( $states ) ) { $this->errors[] = 'Problematic modules: ' . - FormatJson::encode( $states, ResourceLoader::inDebugMode() ); + FormatJson::encode( $states, self::inDebugMode() ); } } @@ -1214,7 +1236,7 @@ MESSAGE; ]; self::trimArray( $module ); - return Xml::encodeJsCall( 'mw.loader.implement', $module, ResourceLoader::inDebugMode() ); + return Xml::encodeJsCall( 'mw.loader.implement', $module, self::inDebugMode() ); } /** @@ -1228,7 +1250,7 @@ MESSAGE; return Xml::encodeJsCall( 'mw.messages.set', [ (object)$messages ], - ResourceLoader::inDebugMode() + self::inDebugMode() ); } @@ -1285,13 +1307,13 @@ MESSAGE; return Xml::encodeJsCall( 'mw.loader.state', [ $name ], - ResourceLoader::inDebugMode() + self::inDebugMode() ); } else { return Xml::encodeJsCall( 'mw.loader.state', [ $name, $state ], - ResourceLoader::inDebugMode() + self::inDebugMode() ); } } @@ -1317,7 +1339,7 @@ MESSAGE; return Xml::encodeJsCall( "( function ( name, version, dependencies, group, source ) {\n\t$script\n} )", [ $name, $version, $dependencies, $group, $source ], - ResourceLoader::inDebugMode() + self::inDebugMode() ); } @@ -1409,7 +1431,7 @@ MESSAGE; return Xml::encodeJsCall( 'mw.loader.register', [ $name ], - ResourceLoader::inDebugMode() + self::inDebugMode() ); } else { $registration = [ $name, $version, $dependencies, $group, $source, $skip ]; @@ -1417,7 +1439,7 @@ MESSAGE; return Xml::encodeJsCall( 'mw.loader.register', $registration, - ResourceLoader::inDebugMode() + self::inDebugMode() ); } } @@ -1441,13 +1463,13 @@ MESSAGE; return Xml::encodeJsCall( 'mw.loader.addSource', [ $id ], - ResourceLoader::inDebugMode() + self::inDebugMode() ); } else { return Xml::encodeJsCall( 'mw.loader.addSource', [ $id, $loadUrl ], - ResourceLoader::inDebugMode() + self::inDebugMode() ); } } @@ -1494,7 +1516,7 @@ MESSAGE; return Xml::encodeJsCall( 'mw.config.set', [ $configuration ], - ResourceLoader::inDebugMode() + self::inDebugMode() ); } diff --git a/includes/resourceloader/ResourceLoaderClientHtml.php b/includes/resourceloader/ResourceLoaderClientHtml.php index 197ac511d1..06f9841d44 100644 --- a/includes/resourceloader/ResourceLoaderClientHtml.php +++ b/includes/resourceloader/ResourceLoaderClientHtml.php @@ -149,9 +149,7 @@ class ResourceLoaderClientHtml { continue; } - $group = $module->getGroup(); - - if ( $group === 'private' ) { + if ( $module->shouldEmbedModule( $this->context ) ) { // Embed via mw.loader.implement per T36907. $data['embed']['general'][] = $name; // Avoid duplicate request from mw.loader @@ -186,7 +184,7 @@ class ResourceLoaderClientHtml { // Avoid needless request for empty module $data['states'][$name] = 'ready'; } else { - if ( $group === 'private' ) { + if ( $module->shouldEmbedModule( $this->context ) ) { // Embed via style element $data['embed']['styles'][] = $name; // Avoid duplicate request from mw.loader @@ -392,62 +390,75 @@ class ResourceLoaderClientHtml { foreach ( $sortedModules as $source => $groups ) { foreach ( $groups as $group => $grpModules ) { $context = self::makeContext( $mainContext, $group, $only, $extraQuery ); - $context->setModules( array_keys( $grpModules ) ); - - if ( $group === 'private' ) { - // Decide whether to use style or script element - if ( $only == ResourceLoaderModule::TYPE_STYLES ) { - $chunks[] = Html::inlineStyle( - $rl->makeModuleResponse( $context, $grpModules ) - ); - } else { - $chunks[] = ResourceLoader::makeInlineScript( - $rl->makeModuleResponse( $context, $grpModules ) - ); - } - continue; - } - - // See if we have one or more raw modules - $isRaw = false; - foreach ( $grpModules as $key => $module ) { - $isRaw |= $module->isRaw(); - } - // Special handling for the user group; because users might change their stuff - // on-wiki like user pages, or user preferences; we need to find the highest - // timestamp of these user-changeable modules so we can ensure cache misses on change - // This should NOT be done for the site group (T29564) because anons get that too - // and we shouldn't be putting timestamps in CDN-cached HTML - if ( $group === 'user' ) { - // Must setModules() before makeVersionQuery() - $context->setVersion( $rl->makeVersionQuery( $context ) ); + // Separate sets of linked and embedded modules while preserving order + $moduleSets = []; + $idx = -1; + foreach ( $grpModules as $name => $module ) { + $shouldEmbed = $module->shouldEmbedModule( $context ); + if ( !$moduleSets || $moduleSets[$idx][0] !== $shouldEmbed ) { + $moduleSets[++$idx] = [ $shouldEmbed, [] ]; + } + $moduleSets[$idx][1][$name] = $module; } - $url = $rl->createLoaderURL( $source, $context, $extraQuery ); - - // Decide whether to use 'style' or 'script' element - if ( $only === ResourceLoaderModule::TYPE_STYLES ) { - $chunk = Html::linkedStyle( $url ); - } else { - if ( $context->getRaw() || $isRaw ) { - $chunk = Html::element( 'script', [ - // In SpecialJavaScriptTest, QUnit must load synchronous - 'async' => !isset( $extraQuery['sync'] ), - 'src' => $url - ] ); + // Link/embed each set + foreach ( $moduleSets as list( $embed, $moduleSet ) ) { + $context->setModules( array_keys( $moduleSet ) ); + if ( $embed ) { + // Decide whether to use style or script element + if ( $only == ResourceLoaderModule::TYPE_STYLES ) { + $chunks[] = Html::inlineStyle( + $rl->makeModuleResponse( $context, $moduleSet ) + ); + } else { + $chunks[] = ResourceLoader::makeInlineScript( + $rl->makeModuleResponse( $context, $moduleSet ) + ); + } } else { - $chunk = ResourceLoader::makeInlineScript( - Xml::encodeJsCall( 'mw.loader.load', [ $url ] ) - ); + // See if we have one or more raw modules + $isRaw = false; + foreach ( $moduleSet as $key => $module ) { + $isRaw |= $module->isRaw(); + } + + // Special handling for the user group; because users might change their stuff + // on-wiki like user pages, or user preferences; we need to find the highest + // timestamp of these user-changeable modules so we can ensure cache misses on change + // This should NOT be done for the site group (T29564) because anons get that too + // and we shouldn't be putting timestamps in CDN-cached HTML + if ( $group === 'user' ) { + // Must setModules() before makeVersionQuery() + $context->setVersion( $rl->makeVersionQuery( $context ) ); + } + + $url = $rl->createLoaderURL( $source, $context, $extraQuery ); + + // Decide whether to use 'style' or 'script' element + if ( $only === ResourceLoaderModule::TYPE_STYLES ) { + $chunk = Html::linkedStyle( $url ); + } else { + if ( $context->getRaw() || $isRaw ) { + $chunk = Html::element( 'script', [ + // In SpecialJavaScriptTest, QUnit must load synchronous + 'async' => !isset( $extraQuery['sync'] ), + 'src' => $url + ] ); + } else { + $chunk = ResourceLoader::makeInlineScript( + Xml::encodeJsCall( 'mw.loader.load', [ $url ] ) + ); + } + } + + if ( $group == 'noscript' ) { + $chunks[] = Html::rawElement( 'noscript', [], $chunk ); + } else { + $chunks[] = $chunk; + } } } - - if ( $group == 'noscript' ) { - $chunks[] = Html::rawElement( 'noscript', [], $chunk ); - } else { - $chunks[] = $chunk; - } } } 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/ResourceLoaderFileModule.php b/includes/resourceloader/ResourceLoaderFileModule.php index 79b8e79d08..4675191884 100644 --- a/includes/resourceloader/ResourceLoaderFileModule.php +++ b/includes/resourceloader/ResourceLoaderFileModule.php @@ -580,6 +580,12 @@ class ResourceLoaderFileModule extends ResourceLoaderModule { 'fileHashes' => $this->getFileHashes( $context ), 'messageBlob' => $this->getMessageBlob( $context ), ]; + + $lessVars = $this->getLessVars( $context ); + if ( $lessVars ) { + $summary[] = [ 'lessVars' => $lessVars ]; + } + return $summary; } diff --git a/includes/resourceloader/ResourceLoaderImageModule.php b/includes/resourceloader/ResourceLoaderImageModule.php index d26c96181c..8b5495958c 100644 --- a/includes/resourceloader/ResourceLoaderImageModule.php +++ b/includes/resourceloader/ResourceLoaderImageModule.php @@ -381,11 +381,13 @@ class ResourceLoaderImageModule extends ResourceLoaderModule { * @return string[] CSS declarations to use given URIs as background-image */ protected function getCssDeclarations( $primary, $fallback ) { + $primaryUrl = CSSMin::buildUrlValue( $primary ); + $fallbackUrl = CSSMin::buildUrlValue( $fallback ); return [ - "background-image: url($fallback);", - "background-image: linear-gradient(transparent, transparent), url($primary);", + "background-image: $fallbackUrl;", + "background-image: linear-gradient(transparent, transparent), $primaryUrl;", // Do not serve SVG to Opera 12, bad rendering with border-radius or background-size (T87504) - "background-image: -o-linear-gradient(transparent, transparent), url($fallback);", + "background-image: -o-linear-gradient(transparent, transparent), $fallbackUrl;", ]; } @@ -427,6 +429,8 @@ class ResourceLoaderImageModule extends ResourceLoaderModule { /** * Helper method for getDefinitionSummary. + * @param ResourceLoaderContext $context + * @return array */ protected function getFileHashes( ResourceLoaderContext $context ) { $this->loadFromDefinition(); 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 new file mode 100644 index 0000000000..d16a4ff763 --- /dev/null +++ b/includes/resourceloader/ResourceLoaderMediaWikiUtilModule.php @@ -0,0 +1,53 @@ + $this->getConfig()->get( 'FragmentMode' ) ] + ) + . "\n" + . parent::getScript( $context ); + } + + /** + * @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 1c767fa5b8..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 ); @@ -918,6 +998,20 @@ abstract class ResourceLoaderModule implements LoggerAwareInterface { return false; } + /** + * Check whether this module should be embeded rather than linked + * + * Modules returning true here will be embedded rather than loaded by + * ResourceLoaderClientHtml. + * + * @since 1.30 + * @param ResourceLoaderContext $context + * @return bool + */ + public function shouldEmbedModule( ResourceLoaderContext $context ) { + return $this->getGroup() === 'private'; + } + /** @var JSParser Lazy-initialized; use self::javaScriptParser() */ private static $jsParser; private static $parseCacheVersion = 1; diff --git a/includes/resourceloader/ResourceLoaderSiteModule.php b/includes/resourceloader/ResourceLoaderSiteModule.php index 08641b0c30..236112ea2f 100644 --- a/includes/resourceloader/ResourceLoaderSiteModule.php +++ b/includes/resourceloader/ResourceLoaderSiteModule.php @@ -43,6 +43,7 @@ class ResourceLoaderSiteModule extends ResourceLoaderWikiModule { } /** + * @param ResourceLoaderContext|null $context * @return array */ public function getDependencies( ResourceLoaderContext $context = null ) { diff --git a/includes/resourceloader/ResourceLoaderStartUpModule.php b/includes/resourceloader/ResourceLoaderStartUpModule.php index 8973fe31c3..8b9feeb8f0 100644 --- a/includes/resourceloader/ResourceLoaderStartUpModule.php +++ b/includes/resourceloader/ResourceLoaderStartUpModule.php @@ -296,6 +296,17 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule { return true; } + /** + * @param ResourceLoaderContext $context + * @return array + */ + public function getPreloadLinks( ResourceLoaderContext $context ) { + $url = self::getStartupModulesUrl( $context ); + return [ + $url => [ 'as' => 'script' ] + ]; + } + /** * Base modules required for the base environment of ResourceLoader * @@ -359,6 +370,7 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule { }, [ '$VARS.wgLegacyJavaScriptGlobals' => $this->getConfig()->get( 'LegacyJavaScriptGlobals' ), '$VARS.configuration' => $this->getConfigSettings( $context ), + // This url may be preloaded. See getPreloadLinks(). '$VARS.baseModulesUri' => self::getStartupModulesUrl( $context ), ] ); $pairs['$CODE.registrations()'] = str_replace( diff --git a/includes/resourceloader/ResourceLoaderUploadDialogModule.php b/includes/resourceloader/ResourceLoaderUploadDialogModule.php index 9377ed6e26..1a390cf1d6 100644 --- a/includes/resourceloader/ResourceLoaderUploadDialogModule.php +++ b/includes/resourceloader/ResourceLoaderUploadDialogModule.php @@ -30,6 +30,7 @@ class ResourceLoaderUploadDialogModule extends ResourceLoaderModule { protected $targets = [ 'desktop', 'mobile' ]; /** + * @param ResourceLoaderContext $context * @return string JavaScript code */ public function getScript( ResourceLoaderContext $context ) { diff --git a/includes/resourceloader/ResourceLoaderUserModule.php b/includes/resourceloader/ResourceLoaderUserModule.php index 8f58040a8c..8e213819f6 100644 --- a/includes/resourceloader/ResourceLoaderUserModule.php +++ b/includes/resourceloader/ResourceLoaderUserModule.php @@ -78,6 +78,7 @@ class ResourceLoaderUserModule extends ResourceLoaderWikiModule { } /** + * @param ResourceLoaderContext|null $context * @return array */ public function getDependencies( ResourceLoaderContext $context = null ) { diff --git a/includes/revisiondelete/RevDelArchivedFileItem.php b/includes/revisiondelete/RevDelArchivedFileItem.php index 32d48918d2..b098422425 100644 --- a/includes/revisiondelete/RevDelArchivedFileItem.php +++ b/includes/revisiondelete/RevDelArchivedFileItem.php @@ -23,8 +23,8 @@ * Item class for a filearchive table row */ class RevDelArchivedFileItem extends RevDelFileItem { - /** @var $list RevDelArchivedFileList */ - /** @var $file ArchivedFile */ + /** @var RevDelArchivedFileList $list */ + /** @var ArchivedFile $file */ /** @var LocalFile */ protected $lockFile; diff --git a/includes/revisiondelete/RevDelItem.php b/includes/revisiondelete/RevDelItem.php index b114c7520c..bf97bd4100 100644 --- a/includes/revisiondelete/RevDelItem.php +++ b/includes/revisiondelete/RevDelItem.php @@ -37,7 +37,7 @@ abstract class RevDelItem extends RevisionItemBase { /** * Get the current deletion bitfield value * - * @return integer + * @return int */ abstract public function getBits(); diff --git a/includes/revisiondelete/RevDelList.php b/includes/revisiondelete/RevDelList.php index 64a6aec806..011c7b09db 100644 --- a/includes/revisiondelete/RevDelList.php +++ b/includes/revisiondelete/RevDelList.php @@ -83,7 +83,7 @@ abstract class RevDelList extends RevisionListBase { public function areAnySuppressed() { $bit = $this->getSuppressBit(); - /** @var $item RevDelItem */ + /** @var RevDelItem $item */ foreach ( $this as $item ) { if ( $item->getBits() & $bit ) { return true; @@ -151,7 +151,7 @@ abstract class RevDelList extends RevisionListBase { // passed to doPostCommitUpdates(). $visibilityChangeMap = []; - /** @var $item RevDelItem */ + /** @var RevDelItem $item */ foreach ( $this as $item ) { unset( $missing[$item->getId()] ); @@ -294,7 +294,7 @@ abstract class RevDelList extends RevisionListBase { final protected function acquireItemLocks() { $status = Status::newGood(); - /** @var $item RevDelItem */ + /** @var RevDelItem $item */ foreach ( $this as $item ) { $status->merge( $item->lock() ); } @@ -304,7 +304,7 @@ abstract class RevDelList extends RevisionListBase { final protected function releaseItemLocks() { $status = Status::newGood(); - /** @var $item RevDelItem */ + /** @var RevDelItem $item */ foreach ( $this as $item ) { $status->merge( $item->unlock() ); } @@ -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..728deb8e09 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::newKey( '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/ParserOutputSearchDataExtractor.php b/includes/search/ParserOutputSearchDataExtractor.php index df653f1240..4b60a0c533 100644 --- a/includes/search/ParserOutputSearchDataExtractor.php +++ b/includes/search/ParserOutputSearchDataExtractor.php @@ -31,6 +31,7 @@ class ParserOutputSearchDataExtractor { /** * Get a list of categories, as an array with title text strings. * + * @param ParserOutput $parserOutput * @return string[] */ public function getCategories( ParserOutput $parserOutput ) { @@ -46,6 +47,7 @@ class ParserOutputSearchDataExtractor { /** * Get a list of external links from ParserOutput, as an array of strings. * + * @param ParserOutput $parserOutput * @return string[] */ public function getExternalLinks( ParserOutput $parserOutput ) { @@ -56,6 +58,7 @@ class ParserOutputSearchDataExtractor { * Get a list of outgoing wiki links (including interwiki links), as * an array of prefixed title strings. * + * @param ParserOutput $parserOutput * @return string[] */ public function getOutgoingLinks( ParserOutput $parserOutput ) { @@ -74,6 +77,7 @@ class ParserOutputSearchDataExtractor { /** * Get a list of templates used in the ParserOutput content, as prefixed title strings * + * @param ParserOutput $parserOutput * @return string[] */ public function getTemplates( ParserOutput $parserOutput ) { diff --git a/includes/search/SearchDatabase.php b/includes/search/SearchDatabase.php index 1d7a4a338e..643c2c1364 100644 --- a/includes/search/SearchDatabase.php +++ b/includes/search/SearchDatabase.php @@ -35,7 +35,6 @@ class SearchDatabase extends SearchEngine { protected $db; /** - * Constructor * @param IDatabase $db The database to search from */ public function __construct( IDatabase $db = null ) { diff --git a/includes/search/SearchEngine.php b/includes/search/SearchEngine.php index 70117db76c..3c8fe608b4 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; @@ -269,7 +269,7 @@ abstract class SearchEngine { * might support more. The default in all implementations should be 'relevance.' * * @since 1.25 - * @return array(string) the valid sort directions for setSort + * @return string[] the valid sort directions for setSort */ public function getValidSorts() { return [ 'relevance' ]; @@ -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/SearchNearMatcher.php b/includes/search/SearchNearMatcher.php index 8e8686542c..27046f3156 100644 --- a/includes/search/SearchNearMatcher.php +++ b/includes/search/SearchNearMatcher.php @@ -6,8 +6,7 @@ */ class SearchNearMatcher { /** - * Configuration object. - * @param Config $config + * @var Config */ protected $config; 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/SearchResultSet.php b/includes/search/SearchResultSet.php index 978db2707f..f25c7283eb 100644 --- a/includes/search/SearchResultSet.php +++ b/includes/search/SearchResultSet.php @@ -152,6 +152,7 @@ class SearchResultSet { /** * Return a result set of hits on other (multiple) wikis associated with this one * + * @param int $type * @return SearchResultSet[] */ function getInterwikiResults( $type = self::SECONDARY_RESULTS ) { @@ -161,6 +162,7 @@ class SearchResultSet { /** * Check if there are results on other wikis * + * @param int $type * @return bool */ function hasInterwikiResults( $type = self::SECONDARY_RESULTS ) { @@ -264,4 +266,14 @@ class SearchResultSet { $result->setExtensionData( $this->extraData[$id] ); return $this->extraData[$id]; } + + /** + * @return int|null The offset the current page starts at. Typically + * this should be null to allow the UI to decide on its own, but in + * special cases like interleaved AB tests specifying explicitly is + * necessary. + */ + public function getOffset() { + return null; + } } 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/search/SearchSuggestionSet.php b/includes/search/SearchSuggestionSet.php index 6d54dada4e..aced5e18af 100644 --- a/includes/search/SearchSuggestionSet.php +++ b/includes/search/SearchSuggestionSet.php @@ -106,6 +106,7 @@ class SearchSuggestionSet { /** * Move the suggestion at index $key to the first position + * @param string $key */ public function rescore( $key ) { $removed = array_splice( $this->suggestions, $key, 1 ); 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/BotPasswordSessionProvider.php b/includes/session/BotPasswordSessionProvider.php index 5831b098fa..a588aeea53 100644 --- a/includes/session/BotPasswordSessionProvider.php +++ b/includes/session/BotPasswordSessionProvider.php @@ -167,6 +167,7 @@ class BotPasswordSessionProvider extends ImmutableSessionProviderWithCookie { /** * @codeCoverageIgnore + * @inheritDoc */ public function preventSessionsForUser( $username ) { BotPassword::removeAllPasswordsForUser( $username ); 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/Session.php b/includes/session/Session.php index 12f16b662e..23d9ab3838 100644 --- a/includes/session/Session.php +++ b/includes/session/Session.php @@ -654,6 +654,7 @@ final class Session implements \Countable, \Iterator, \ArrayAccess { /** * @note Despite the name, this seems to be intended to implement isset() * rather than array_key_exists(). So do that. + * @inheritDoc */ public function offsetExists( $offset ) { $data = &$this->backend->getData(); @@ -666,6 +667,7 @@ final class Session implements \Countable, \Iterator, \ArrayAccess { * data to detect such changes. * @note Accessing a nonexistent key via this mechanism causes that key to * be created with a null value, and does not raise a PHP warning. + * @inheritDoc */ public function &offsetGet( $offset ) { $data = &$this->backend->getData(); 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/shell/Command.php b/includes/shell/Command.php new file mode 100644 index 0000000000..864e69a115 --- /dev/null +++ b/includes/shell/Command.php @@ -0,0 +1,377 @@ +everExecuted ) { + $message = __CLASS__ . " was instantiated, but execute() was never called."; + if ( $this->method ) { + $message .= " Calling method: {$this->method}."; + } + $message .= " Command: {$this->command}"; + trigger_error( $message, E_USER_NOTICE ); + } + } + + /** + * Adds parameters to the command. All parameters are sanitized via Shell::escape(). + * + * @param string|string[] $args,... + * @return $this + */ + public function params( /* ... */ ) { + $args = func_get_args(); + if ( count( $args ) === 1 && is_array( reset( $args ) ) ) { + // If only one argument has been passed, and that argument is an array, + // treat it as a list of arguments + $args = reset( $args ); + } + $this->command .= ' ' . Shell::escape( $args ); + + return $this; + } + + /** + * Adds unsafe parameters to the command. These parameters are NOT sanitized in any way. + * + * @param string|string[] $args,... + * @return $this + */ + public function unsafeParams( /* ... */ ) { + $args = func_get_args(); + if ( count( $args ) === 1 && is_array( reset( $args ) ) ) { + // If only one argument has been passed, and that argument is an array, + // treat it as a list of arguments + $args = reset( $args ); + } + $this->command .= implode( ' ', $args ); + + return $this; + } + + /** + * Sets execution limits + * + * @param array $limits Optional array with limits(filesize, memory, time, walltime). + * This overrides the global wgMaxShell* limits. + * @return $this + */ + public function limits( array $limits ) { + $this->limits = $limits; + + return $this; + } + + /** + * Sets environment variables which should be added to the executed command environment + * + * @param string[] $env array of variable name => value + * @return $this + */ + public function environment( array $env ) { + $this->env = $env; + + return $this; + } + + /** + * Sets calling function for profiler. By default, the caller for execute() will be used. + * + * @param string $method + * @return $this + */ + public function profileMethod( $method ) { + $this->method = $method; + + return $this; + } + + /** + * Controls whether stderr should be included in stdout, including errors from limit.sh. + * Default: don't include. + * + * @param bool $yesno + * @return $this + */ + public function includeStderr( $yesno = true ) { + $this->useStderr = $yesno; + + return $this; + } + + /** + * Executes command. Afterwards, getExitCode() and getOutput() can be used to access execution + * results. + * + * @return Result + * @throws Exception + * @throws ProcOpenError + * @throws ShellDisabledError + */ + public function execute() { + global $IP, $wgMaxShellMemory, $wgMaxShellFileSize, $wgMaxShellTime, + $wgMaxShellWallClockTime, $wgShellCgroup; + + $this->everExecuted = true; + + $profileMethod = $this->method ?: wfGetCaller(); + + $envcmd = ''; + foreach ( $this->env as $k => $v ) { + if ( wfIsWindows() ) { + /* Surrounding a set in quotes (method used by wfEscapeShellArg) makes the quotes themselves + * appear in the environment variable, so we must use carat escaping as documented in + * https://technet.microsoft.com/en-us/library/cc723564.aspx + * Note however that the quote isn't listed there, but is needed, and the parentheses + * are listed there but doesn't appear to need it. + */ + $envcmd .= "set $k=" . preg_replace( '/([&|()<>^"])/', '^\\1', $v ) . '&& '; + } else { + /* Assume this is a POSIX shell, thus required to accept variable assignments before the command + * http://www.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_09_01 + */ + $envcmd .= "$k=" . escapeshellarg( $v ) . ' '; + } + } + + $cmd = $envcmd . trim( $this->command ); + + $useLogPipe = false; + if ( is_executable( '/bin/bash' ) ) { + $time = intval( isset( $this->limits['time'] ) ? $this->limits['time'] : $wgMaxShellTime ); + if ( isset( $this->limits['walltime'] ) ) { + $wallTime = intval( $this->limits['walltime'] ); + } elseif ( isset( $this->limits['time'] ) ) { + $wallTime = $time; + } else { + $wallTime = intval( $wgMaxShellWallClockTime ); + } + $mem = intval( isset( $this->limits['memory'] ) ? $this->limits['memory'] : $wgMaxShellMemory ); + $filesize = intval( isset( $this->limits['filesize'] ) + ? $this->limits['filesize'] + : $wgMaxShellFileSize ); + + if ( $time > 0 || $mem > 0 || $filesize > 0 || $wallTime > 0 ) { + $cmd = '/bin/bash ' . escapeshellarg( "$IP/includes/limit.sh" ) . ' ' . + escapeshellarg( $cmd ) . ' ' . + escapeshellarg( + "MW_INCLUDE_STDERR=" . ( $this->useStderr ? '1' : '' ) . ';' . + "MW_CPU_LIMIT=$time; " . + 'MW_CGROUP=' . escapeshellarg( $wgShellCgroup ) . '; ' . + "MW_MEM_LIMIT=$mem; " . + "MW_FILE_SIZE_LIMIT=$filesize; " . + "MW_WALL_CLOCK_LIMIT=$wallTime; " . + "MW_USE_LOG_PIPE=yes" + ); + $useLogPipe = true; + } elseif ( $this->useStderr ) { + $cmd .= ' 2>&1'; + } + } elseif ( $this->useStderr ) { + $cmd .= ' 2>&1'; + } + wfDebug( __METHOD__ . ": $cmd\n" ); + + // Don't try to execute commands that exceed Linux's MAX_ARG_STRLEN. + // Other platforms may be more accomodating, but we don't want to be + // accomodating, because very long commands probably include user + // input. See T129506. + if ( strlen( $cmd ) > SHELL_MAX_ARG_STRLEN ) { + throw new Exception( __METHOD__ . + '(): total length of $cmd must not exceed SHELL_MAX_ARG_STRLEN' ); + } + + $desc = [ + 0 => [ 'file', 'php://stdin', 'r' ], + 1 => [ 'pipe', 'w' ], + 2 => [ 'file', 'php://stderr', 'w' ], + ]; + if ( $useLogPipe ) { + $desc[3] = [ 'pipe', 'w' ]; + } + $pipes = null; + $scoped = Profiler::instance()->scopedProfileIn( __FUNCTION__ . '-' . $profileMethod ); + $proc = proc_open( $cmd, $desc, $pipes ); + if ( !$proc ) { + wfDebugLog( 'exec', "proc_open() failed: $cmd" ); + throw new ProcOpenError(); + } + $outBuffer = $logBuffer = ''; + $emptyArray = []; + $status = false; + $logMsg = false; + + /* According to the documentation, it is possible for stream_select() + * to fail due to EINTR. I haven't managed to induce this in testing + * despite sending various signals. If it did happen, the error + * message would take the form: + * + * stream_select(): unable to select [4]: Interrupted system call (max_fd=5) + * + * where [4] is the value of the macro EINTR and "Interrupted system + * call" is string which according to the Linux manual is "possibly" + * localised according to LC_MESSAGES. + */ + $eintr = defined( 'SOCKET_EINTR' ) ? SOCKET_EINTR : 4; + $eintrMessage = "stream_select(): unable to select [$eintr]"; + + $running = true; + $timeout = null; + $numReadyPipes = 0; + + while ( $running === true || $numReadyPipes !== 0 ) { + if ( $running ) { + $status = proc_get_status( $proc ); + // If the process has terminated, switch to nonblocking selects + // for getting any data still waiting to be read. + if ( !$status['running'] ) { + $running = false; + $timeout = 0; + } + } + + $readyPipes = $pipes; + + // Clear last error + // @codingStandardsIgnoreStart Generic.PHP.NoSilencedErrors.Discouraged + @trigger_error( '' ); + $numReadyPipes = @stream_select( $readyPipes, $emptyArray, $emptyArray, $timeout ); + if ( $numReadyPipes === false ) { + // @codingStandardsIgnoreEnd + $error = error_get_last(); + if ( strncmp( $error['message'], $eintrMessage, strlen( $eintrMessage ) ) == 0 ) { + continue; + } else { + trigger_error( $error['message'], E_USER_WARNING ); + $logMsg = $error['message']; + break; + } + } + foreach ( $readyPipes as $fd => $pipe ) { + $block = fread( $pipe, 65536 ); + if ( $block === '' ) { + // End of file + fclose( $pipes[$fd] ); + unset( $pipes[$fd] ); + if ( !$pipes ) { + break 2; + } + } elseif ( $block === false ) { + // Read error + $logMsg = "Error reading from pipe"; + break 2; + } elseif ( $fd == 1 ) { + // From stdout + $outBuffer .= $block; + } elseif ( $fd == 3 ) { + // From log FD + $logBuffer .= $block; + if ( strpos( $block, "\n" ) !== false ) { + $lines = explode( "\n", $logBuffer ); + $logBuffer = array_pop( $lines ); + foreach ( $lines as $line ) { + wfDebugLog( 'exec', $line ); + } + } + } + } + } + + foreach ( $pipes as $pipe ) { + fclose( $pipe ); + } + + // Use the status previously collected if possible, since proc_get_status() + // just calls waitpid() which will not return anything useful the second time. + if ( $running ) { + $status = proc_get_status( $proc ); + } + + if ( $logMsg !== false ) { + // Read/select error + $retval = -1; + proc_close( $proc ); + } elseif ( $status['signaled'] ) { + $logMsg = "Exited with signal {$status['termsig']}"; + $retval = 128 + $status['termsig']; + proc_close( $proc ); + } else { + if ( $status['running'] ) { + $retval = proc_close( $proc ); + } else { + $retval = $status['exitcode']; + proc_close( $proc ); + } + if ( $retval == 127 ) { + $logMsg = "Possibly missing executable file"; + } elseif ( $retval >= 129 && $retval <= 192 ) { + $logMsg = "Probably exited with signal " . ( $retval - 128 ); + } + } + + if ( $logMsg !== false ) { + wfDebugLog( 'exec', "$logMsg: $cmd" ); + } + + return new Result( $retval, $outBuffer ); + } +} diff --git a/includes/shell/Result.php b/includes/shell/Result.php new file mode 100644 index 0000000000..c1429dfca2 --- /dev/null +++ b/includes/shell/Result.php @@ -0,0 +1,61 @@ +exitCode = $exitCode; + $this->stdout = $stdout; + } + + /** + * Returns exit code of the process + * + * @return int + */ + public function getExitCode() { + return $this->exitCode; + } + + /** + * Returns stdout of the process + * + * @return string + */ + public function getStdout() { + return $this->stdout; + } +} diff --git a/includes/shell/Shell.php b/includes/shell/Shell.php new file mode 100644 index 0000000000..c293ff2110 --- /dev/null +++ b/includes/shell/Shell.php @@ -0,0 +1,149 @@ +environment( [ 'ENVIRONMENT_VARIABLE' => 'VALUE' ] ) + * ->limits( [ 'time' => 300 ] ) + * ->execute(); + * + * ... = $result->getExitCode(); + * ... = $result->getStdout(); + */ +class Shell { + + /** + * Returns a new instance of this class + * + * @param string|string[] $command If string, a properly shell-escaped command line, + * or an array of unescaped arguments, in which case each value will be escaped + * Example: [ 'convert', '-font', 'font name' ] would produce "'convert' '-font' 'font name'" + * @return Command + */ + public static function command( $command ) { + $args = func_get_args(); + if ( count( $args ) === 1 && is_array( reset( $args ) ) ) { + // If only one argument has been passed, and that argument is an array, + // treat it as a list of arguments + $args = reset( $args ); + } + $command = new Command(); + return $command->params( $args ); + } + + /** + * Check if this class is effectively disabled via php.ini config + * + * @return bool + */ + public static function isDisabled() { + static $disabled = null; + + if ( is_null( $disabled ) ) { + if ( !function_exists( 'proc_open' ) ) { + wfDebug( "proc_open() is disabled\n" ); + $disabled = true; + } else { + $disabled = false; + } + } + + return $disabled; + } + + /** + * Version of escapeshellarg() that works better on Windows. + * + * Originally, this fixed the incorrect use of single quotes on Windows + * (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 $args,... strings to escape and glue together, or a single array of + * strings parameter + * @return string + */ + public static function escape( /* ... */ ) { + $args = func_get_args(); + if ( count( $args ) === 1 && is_array( reset( $args ) ) ) { + // If only one argument has been passed, and that argument is an array, + // treat it as a list of arguments + $args = reset( $args ); + } + + $first = true; + $retVal = ''; + foreach ( $args as $arg ) { + if ( !$first ) { + $retVal .= ' '; + } else { + $first = false; + } + + if ( wfIsWindows() ) { + // Escaping for an MSVC-style command line parser and CMD.EXE + // @codingStandardsIgnoreStart For long URLs + // Refs: + // * https://web.archive.org/web/20020708081031/http://mailman.lyra.org/pipermail/scite-interest/2002-March/000436.html + // * https://technet.microsoft.com/en-us/library/cc723564.aspx + // * T15518 + // * CR r63214 + // Double the backslashes before any double quotes. Escape the double quotes. + // @codingStandardsIgnoreEnd + $tokens = preg_split( '/(\\\\*")/', $arg, -1, PREG_SPLIT_DELIM_CAPTURE ); + $arg = ''; + $iteration = 0; + foreach ( $tokens as $token ) { + if ( $iteration % 2 == 1 ) { + // Delimiter, a double quote preceded by zero or more slashes + $arg .= str_replace( '\\', '\\\\', substr( $token, 0, -1 ) ) . '\\"'; + } elseif ( $iteration % 4 == 2 ) { + // ^ in $token will be outside quotes, need to be escaped + $arg .= str_replace( '^', '^^', $token ); + } else { // $iteration % 4 == 0 + // ^ in $token will appear inside double quotes, so leave as is + $arg .= $token; + } + $iteration++; + } + // Double the backslashes before the end of the string, because + // we will soon add a quote + $m = []; + if ( preg_match( '/^(.*?)(\\\\+)$/', $arg, $m ) ) { + $arg = $m[1] . str_replace( '\\', '\\\\', $m[2] ); + } + + // Add surrounding quotes + $retVal .= '"' . $arg . '"'; + } else { + $retVal .= escapeshellarg( $arg ); + } + } + return $retVal; + } +} diff --git a/includes/site/DBSiteStore.php b/includes/site/DBSiteStore.php index e106f37ecc..7fcfbe59e9 100644 --- a/includes/site/DBSiteStore.php +++ b/includes/site/DBSiteStore.php @@ -214,8 +214,6 @@ class DBSiteStore implements SiteStore { 'sites', $fields, [ 'site_id' => $rowId ], __METHOD__ ) && $success; } else { - $rowId = $dbw->nextSequenceValue( 'sites_site_id_seq' ); - $fields['site_id'] = $rowId; $success = $dbw->insert( 'sites', $fields, __METHOD__ ) && $success; $rowId = $dbw->insertId(); } diff --git a/includes/site/HashSiteStore.php b/includes/site/HashSiteStore.php index 2c7965c902..6d98e72530 100644 --- a/includes/site/HashSiteStore.php +++ b/includes/site/HashSiteStore.php @@ -113,6 +113,7 @@ class HashSiteStore implements SiteStore { /** * Deletes all sites from the database. After calling clear(), getSites() will return an empty * list and getSite() will return null until saveSite() or saveSites() is called. + * @return bool */ public function clear() { $this->sites = []; 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 0b7fc2f5d3..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; @@ -678,7 +678,7 @@ abstract class BaseTemplate extends QuickTemplate { } foreach ( $validFooterIcons as $blockName => $footerIcons ) { $html .= Html::openElement( 'div', [ - 'id' => 'f-' . Sanitizer::escapeId( $blockName ) . 'ico', + 'id' => Sanitizer::escapeIdForAttribute( "f-{$blockName}ico" ), 'class' => 'footer-icons' ] ); foreach ( $footerIcons as $icon ) { @@ -691,7 +691,7 @@ abstract class BaseTemplate extends QuickTemplate { foreach ( $validFooterLinks as $aLink ) { $html .= Html::rawElement( 'li', - [ 'id' => Sanitizer::escapeId( $aLink ) ], + [ 'id' => Sanitizer::escapeIdForAttribute( $aLink ) ], $this->get( $aLink ) ); } @@ -734,7 +734,7 @@ abstract class BaseTemplate extends QuickTemplate { $out .= Html::rawElement( 'div', [ - 'id' => Sanitizer::escapeId( "mw-indicator-$id" ), + 'id' => Sanitizer::escapeIdForAttribute( "mw-indicator-$id" ), 'class' => 'mw-indicator', ], $content 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 a8f9d0cbcb..8fb0d1c091 100644 --- a/includes/skins/Skin.php +++ b/includes/skins/Skin.php @@ -95,7 +95,7 @@ abstract class Skin extends ContextSource { static function normalizeKey( $key ) { global $wgDefaultSkin, $wgFallbackSkin; - $skinNames = Skin::getSkinNames(); + $skinNames = self::getSkinNames(); // Make keys lowercase for case-insensitive matching. $skinNames = array_change_key_case( $skinNames, CASE_LOWER ); @@ -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 @@ -1057,10 +1057,10 @@ abstract class Skin extends ContextSource { $targetUser = User::newFromId( $id ); } - # The sending user must have a confirmed email address and the target - # user must have a confirmed email address and allow emails from users. - return $this->getUser()->canSendEmail() && - $targetUser->canReceiveEmail(); + # The sending user must have a confirmed email address and the receiving + # user must accept emails from the sender. + return $this->getUser()->canSendEmail() + && SpecialEmailUser::validateTarget( $targetUser, $this->getUser() ) === ''; } /** @@ -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 ) { @@ -1251,11 +1251,10 @@ abstract class Skin extends ContextSource { function buildSidebar() { global $wgEnableSidebarCache, $wgSidebarCacheExpiry; - $that = $this; - $callback = function () use ( $that ) { + $callback = function () { $bar = []; - $that->addToSidebar( $bar, 'sidebar' ); - Hooks::run( 'SkinBuildSidebar', [ $that, &$bar ] ); + $this->addToSidebar( $bar, 'sidebar' ); + Hooks::run( 'SkinBuildSidebar', [ $this, &$bar ] ); return $bar; }; @@ -1286,7 +1285,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 +1295,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 */ @@ -1375,8 +1374,8 @@ abstract class Skin extends ContextSource { $bar[$heading][] = array_merge( [ 'text' => $text, 'href' => $href, - 'id' => 'n-' . Sanitizer::escapeId( strtr( $line[1], ' ', '-' ), 'noninitial' ), - 'active' => false + 'id' => Sanitizer::escapeIdForAttribute( 'n-' . strtr( $line[1], ' ', '-' ) ), + 'active' => false, ], $extraAttribs ); } else { continue; @@ -1579,8 +1578,6 @@ abstract class Skin extends ContextSource { $attribs = []; if ( !is_null( $tooltip ) ) { - # T27462: undo double-escaping. - $tooltip = Sanitizer::decodeCharReferences( $tooltip ); $attribs['title'] = wfMessage( 'editsectionhint' )->rawParams( $tooltip ) ->inLanguage( $lang )->text(); } @@ -1612,7 +1609,7 @@ abstract class Skin extends ContextSource { $result .= implode( '' - . wfMessage( 'pipe-separator' )->inLanguage( $lang )->text() + . wfMessage( 'pipe-separator' )->inLanguage( $lang )->escaped() . '', $linksHtml ); diff --git a/includes/skins/SkinTemplate.php b/includes/skins/SkinTemplate.php index f49d46c2fd..0690f035c0 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() ); @@ -729,7 +729,7 @@ class SkinTemplate extends Skin { } } - Hooks::run( 'PersonalUrls', [ &$personal_urls, &$title, $this ] ); + Hooks::runWithoutAbort( 'PersonalUrls', [ &$personal_urls, &$title, $this ] ); return $personal_urls; } @@ -811,6 +811,9 @@ class SkinTemplate extends Skin { /** * @todo is this even used? + * @param string $name + * @param string $urlaction + * @return array */ function makeArticleUrlDetails( $name, $urlaction = '' ) { $title = Title::newFromText( $name ); @@ -1080,14 +1083,22 @@ 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', + ], ]; } } // Avoid PHP 7.1 warning of passing $this by reference $skinTemplate = $this; - Hooks::run( 'SkinTemplateNavigation', [ &$skinTemplate, &$content_navigation ] ); + Hooks::runWithoutAbort( + 'SkinTemplateNavigation', + [ &$skinTemplate, &$content_navigation ] + ); if ( $userCanRead && !$wgDisableLangConversion ) { $pageLang = $title->getPageLanguage(); @@ -1131,14 +1142,15 @@ class SkinTemplate extends Skin { // Avoid PHP 7.1 warning of passing $this by reference $skinTemplate = $this; - Hooks::run( 'SkinTemplateNavigation::SpecialPage', + Hooks::runWithoutAbort( 'SkinTemplateNavigation::SpecialPage', [ &$skinTemplate, &$content_navigation ] ); } // Avoid PHP 7.1 warning of passing $this by reference $skinTemplate = $this; // Equiv to SkinTemplateContentActions - Hooks::run( 'SkinTemplateNavigation::Universal', [ &$skinTemplate, &$content_navigation ] ); + Hooks::runWithoutAbort( 'SkinTemplateNavigation::Universal', + [ &$skinTemplate, &$content_navigation ] ); // Setup xml ids and tooltip info foreach ( $content_navigation as $section => &$links ) { diff --git a/includes/specialpage/AuthManagerSpecialPage.php b/includes/specialpage/AuthManagerSpecialPage.php index fbc3022a43..0cdc55f060 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; @@ -688,7 +688,7 @@ abstract class AuthManagerSpecialPage extends SpecialPage { if ( isset( $singleFieldInfo['options'] ) ) { $descriptor['options'] = array_flip( array_map( function ( $message ) { - /** @var $message Message */ + /** @var Message $message */ return $message->parse(); }, $singleFieldInfo['options'] ) ); } @@ -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 8c4cc11834..d7519d3c17 100644 --- a/includes/specialpage/ChangesListSpecialPage.php +++ b/includes/specialpage/ChangesListSpecialPage.php @@ -22,6 +22,7 @@ */ use MediaWiki\Logger\LoggerFactory; use Wikimedia\Rdbms\ResultWrapper; +use Wikimedia\Rdbms\FakeResultWrapper; use Wikimedia\Rdbms\IDatabase; /** @@ -31,6 +32,12 @@ use Wikimedia\Rdbms\IDatabase; * @ingroup SpecialPage */ abstract class ChangesListSpecialPage extends SpecialPage { + /** + * Preference name for saved queries. Subclasses that use saved queries should override this. + * @var string + */ + protected static $savedQueriesPreferenceName; + /** @var string */ protected $rcSubpage; @@ -77,6 +84,9 @@ abstract class ChangesListSpecialPage extends SpecialPage { public function __construct( $name, $restriction ) { parent::__construct( $name, $restriction ); + $nonRevisionTypes = [ RC_LOG ]; + Hooks::run( 'SpecialWatchlistGetNonRevisionTypes', [ &$nonRevisionTypes ] ); + $this->filterGroupDefinitions = [ [ 'name' => 'registration', @@ -85,8 +95,6 @@ abstract class ChangesListSpecialPage extends SpecialPage { 'filters' => [ [ 'name' => 'hideliu', - 'label' => 'rcfilters-filter-registered-label', - 'description' => 'rcfilters-filter-registered-description', // rcshowhideliu-show, rcshowhideliu-hide, // wlshowhideliu 'showHideSuffix' => 'showhideliu', @@ -96,16 +104,11 @@ abstract class ChangesListSpecialPage extends SpecialPage { ) { $conds[] = 'rc_user = 0'; }, - 'cssClassSuffix' => 'liu', - 'isRowApplicableCallable' => function ( $ctx, $rc ) { - return $rc->getAttribute( 'rc_user' ); - }, + 'isReplacedInStructuredUi' => true, ], [ 'name' => 'hideanons', - 'label' => 'rcfilters-filter-unregistered-label', - 'description' => 'rcfilters-filter-unregistered-description', // rcshowhideanons-show, rcshowhideanons-hide, // wlshowhideanons 'showHideSuffix' => 'showhideanons', @@ -115,10 +118,7 @@ abstract class ChangesListSpecialPage extends SpecialPage { ) { $conds[] = 'rc_user != 0'; }, - 'cssClassSuffix' => 'anon', - 'isRowApplicableCallable' => function ( $ctx, $rc ) { - return !$rc->getAttribute( 'rc_user' ); - }, + 'isReplacedInStructuredUi' => true, ] ], ], @@ -127,9 +127,26 @@ abstract class ChangesListSpecialPage extends SpecialPage { 'name' => 'userExpLevel', 'title' => 'rcfilters-filtergroup-userExpLevel', 'class' => ChangesListStringOptionsFilterGroup::class, - // Excludes unregistered users - 'isFullCoverage' => false, + 'isFullCoverage' => true, 'filters' => [ + [ + 'name' => 'unregistered', + 'label' => 'rcfilters-filter-user-experience-level-unregistered-label', + 'description' => 'rcfilters-filter-user-experience-level-unregistered-description', + 'cssClassSuffix' => 'user-unregistered', + 'isRowApplicableCallable' => function ( $ctx, $rc ) { + return !$rc->getAttribute( 'rc_user' ); + } + ], + [ + 'name' => 'registered', + 'label' => 'rcfilters-filter-user-experience-level-registered-label', + 'description' => 'rcfilters-filter-user-experience-level-registered-description', + 'cssClassSuffix' => 'user-registered', + 'isRowApplicableCallable' => function ( $ctx, $rc ) { + return $rc->getAttribute( 'rc_user' ); + } + ], [ 'name' => 'newcomer', 'label' => 'rcfilters-filter-user-experience-level-newcomer-label', @@ -308,8 +325,14 @@ abstract class ChangesListSpecialPage extends SpecialPage { 'description' => 'rcfilters-filter-lastrevision-description', 'default' => false, 'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds, - &$query_options, &$join_conds ) { - $conds[] = 'rc_this_oldid <> page_latest'; + &$query_options, &$join_conds ) use ( $nonRevisionTypes ) { + $conds[] = $dbr->makeList( + [ + 'rc_this_oldid <> page_latest', + 'rc_type' => $nonRevisionTypes, + ], + LIST_OR + ); }, 'cssClassSuffix' => 'last', 'isRowApplicableCallable' => function ( $ctx, $rc ) { @@ -322,8 +345,14 @@ abstract class ChangesListSpecialPage extends SpecialPage { 'description' => 'rcfilters-filter-previousrevision-description', 'default' => false, 'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds, - &$query_options, &$join_conds ) { - $conds[] = 'rc_this_oldid = page_latest'; + &$query_options, &$join_conds ) use ( $nonRevisionTypes ) { + $conds[] = $dbr->makeList( + [ + 'rc_this_oldid = page_latest', + 'rc_type' => $nonRevisionTypes, + ], + LIST_OR + ); }, 'cssClassSuffix' => 'previous', 'isRowApplicableCallable' => function ( $ctx, $rc ) { @@ -511,19 +540,22 @@ abstract class ChangesListSpecialPage extends SpecialPage { public function execute( $subpage ) { $this->rcSubpage = $subpage; - $this->setHeaders(); - $this->outputHeader(); - $this->addModules(); - $rows = $this->getRows(); $opts = $this->getOptions(); if ( $rows === false ) { - if ( !$this->including() ) { - $this->doHeader( $opts, 0 ); - $this->outputNoResults(); - $this->getOutput()->setStatusCode( 404 ); - } + $rows = new FakeResultWrapper( [] ); + } + // Used by Structured UI app to get results without MW chrome + if ( $this->getRequest()->getVal( 'action' ) === 'render' ) { + $this->getOutput()->setArticleBodyOnly( true ); + } + + // Used by "live update" and "view newest" to check + // if there's new changes with minimal data transfer + if ( $this->getRequest()->getBool( 'peek' ) ) { + $code = $rows->numRows() > 0 ? 200 : 204; + $this->getOutput()->setStatusCode( $code ); return; } @@ -540,6 +572,10 @@ abstract class ChangesListSpecialPage extends SpecialPage { } } $batch->execute(); + + $this->setHeaders(); + $this->outputHeader(); + $this->addModules(); $this->webOutput( $rows, $opts ); $rows->free(); @@ -551,6 +587,123 @@ 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. + * + * If it is disabled, add a class marking that + */ + protected function includeRcFiltersApp() { + $out = $this->getOutput(); + if ( $this->isStructuredFilterUiEnabled() ) { + $jsData = $this->getStructuredFilterJsData(); + + $messages = []; + foreach ( $jsData['messageKeys'] as $key ) { + $messages[$key] = $this->msg( $key )->plain(); + } + + $out->addBodyClasses( 'mw-rcfilters-enabled' ); + + $out->addHTML( + ResourceLoader::makeInlineScript( + ResourceLoader::makeMessageSetScript( $messages ) + ) + ); + + $out->addJsConfigVars( 'wgStructuredChangeFilters', $jsData['groups'] ); + + $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(), + ] + ); + + $out->addJsConfigVars( + 'StructuredChangeFiltersLiveUpdatePollingRate', + $this->getConfig()->get( 'StructuredChangeFiltersLiveUpdatePollingRate' ) + ); + + if ( static::$savedQueriesPreferenceName ) { + $savedQueries = FormatJson::decode( + $this->getUser()->getOption( static::$savedQueriesPreferenceName ) + ); + if ( $savedQueries && isset( $savedQueries->default ) ) { + // If there is a default saved query, show a loading spinner, + // since the frontend is going to reload the results + $out->addBodyClasses( 'mw-rcfilters-ui-loading' ); + } + $out->addJsConfigVars( + 'wgStructuredChangeFiltersSavedQueriesPreferenceName', + static::$savedQueriesPreferenceName + ); + } + } else { + $out->addBodyClasses( 'mw-rcfilters-disabled' ); + } + } + + /** + * 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; } /** @@ -637,19 +790,10 @@ abstract class ChangesListSpecialPage extends SpecialPage { $this->registerFiltersFromDefinitions( [ $unstructuredGroupDefinition ] ); $userExperienceLevel = $this->getFilterGroup( 'userExpLevel' ); - - $registration = $this->getFilterGroup( 'registration' ); - $anons = $registration->getFilter( 'hideanons' ); - - // This means there is a conflict between any item in user experience level - // being checked and only anons being *shown* (hideliu=1&hideanons=0 in the - // URL, or equivalent). - $userExperienceLevel->conflictsWith( - $anons, - 'rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global', - 'rcfilters-filtergroup-user-experience-level-conflicts-unregistered', - 'rcfilters-filter-unregistered-conflicts-user-experience-level' - ); + $registered = $userExperienceLevel->getFilter( 'registered' ); + $registered->setAsSupersetOf( $userExperienceLevel->getFilter( 'newcomer' ) ); + $registered->setAsSupersetOf( $userExperienceLevel->getFilter( 'learner' ) ); + $registered->setAsSupersetOf( $userExperienceLevel->getFilter( 'experienced' ) ); $categoryFilter = $changeTypeGroup->getFilter( 'hidecategorization' ); $logactionsFilter = $changeTypeGroup->getFilter( 'hidelog' ); @@ -701,6 +845,7 @@ abstract class ChangesListSpecialPage extends SpecialPage { * ChangesListFilterGroup constructors. * * There is light processing to simplify core maintenance. + * @param array $definition */ protected function registerFiltersFromDefinitions( array $definition ) { $autoFillPriority = -1; @@ -786,19 +931,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 ); } @@ -809,6 +955,7 @@ abstract class ChangesListSpecialPage extends SpecialPage { $opts->add( 'invert', false ); $opts->add( 'associated', false ); $opts->add( 'urlversion', 1 ); + $opts->add( 'tagfilter', '' ); return $opts; } @@ -864,8 +1011,6 @@ abstract class ChangesListSpecialPage extends SpecialPage { 'messageKeys' => [], ]; - $context = $this->getContext(); - usort( $this->filterGroups, function ( $a, $b ) { return $b->getPriority() - $a->getPriority(); } ); @@ -1062,9 +1207,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'. @@ -1073,7 +1217,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 ); } @@ -1286,12 +1430,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 . @@ -1312,6 +1455,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() { @@ -1342,15 +1490,35 @@ abstract class ChangesListSpecialPage extends SpecialPage { $wgLearnerMemberSince, $wgExperiencedUserMemberSince; - $LEVEL_COUNT = 3; + $LEVEL_COUNT = 5; - // If all levels are selected, all logged-in users are included (but no - // anons), so we can short-circuit. + // If all levels are selected, don't filter if ( count( $selectedExpLevels ) === $LEVEL_COUNT ) { + return; + } + + // both 'registered' and 'unregistered', experience levels, if any, are included in 'registered' + if ( + in_array( 'registered', $selectedExpLevels ) && + in_array( 'unregistered', $selectedExpLevels ) + ) { + return; + } + + // 'registered' but not 'unregistered', experience levels, if any, are included in 'registered' + if ( + in_array( 'registered', $selectedExpLevels ) && + !in_array( 'unregistered', $selectedExpLevels ) + ) { $conds[] = 'rc_user != 0'; return; } + if ( $selectedExpLevels === [ 'unregistered' ] ) { + $conds[] = 'rc_user = 0'; + return; + } + $tables[] = 'user'; $join_conds['user'] = [ 'LEFT JOIN', 'rc_user = user_id' ]; @@ -1378,24 +1546,81 @@ abstract class ChangesListSpecialPage extends SpecialPage { IDatabase::LIST_AND ); + $conditions = []; + + if ( in_array( 'unregistered', $selectedExpLevels ) ) { + $selectedExpLevels = array_diff( $selectedExpLevels, [ 'unregistered' ] ); + $conditions[] = 'rc_user = 0'; + } + if ( $selectedExpLevels === [ 'newcomer' ] ) { - $conds[] = "NOT ( $aboveNewcomer )"; + $conditions[] = "NOT ( $aboveNewcomer )"; } elseif ( $selectedExpLevels === [ 'learner' ] ) { - $conds[] = $dbr->makeList( + $conditions[] = $dbr->makeList( [ $aboveNewcomer, "NOT ( $aboveLearner )" ], IDatabase::LIST_AND ); } elseif ( $selectedExpLevels === [ 'experienced' ] ) { - $conds[] = $aboveLearner; + $conditions[] = $aboveLearner; } elseif ( $selectedExpLevels === [ 'learner', 'newcomer' ] ) { - $conds[] = "NOT ( $aboveLearner )"; + $conditions[] = "NOT ( $aboveLearner )"; } elseif ( $selectedExpLevels === [ 'experienced', 'newcomer' ] ) { - $conds[] = $dbr->makeList( + $conditions[] = $dbr->makeList( [ "NOT ( $aboveNewcomer )", $aboveLearner ], IDatabase::LIST_OR ); } elseif ( $selectedExpLevels === [ 'experienced', 'learner' ] ) { - $conds[] = $aboveNewcomer; + $conditions[] = $aboveNewcomer; + } elseif ( $selectedExpLevels === [ 'experienced', 'learner', 'newcomer' ] ) { + $conditions[] = 'rc_user != 0'; + } + + if ( count( $conditions ) > 1 ) { + $conds[] = $dbr->makeList( $conditions, IDatabase::LIST_OR ); + } elseif ( count( $conditions ) === 1 ) { + $conds[] = reset( $conditions ); + } + } + + /** + * Check whether the structured filter UI is enabled + * + * @return bool + */ + public function isStructuredFilterUiEnabled() { + if ( $this->getRequest()->getBool( 'rcfilters' ) ) { + return true; + } + + if ( $this->getConfig()->get( 'StructuredChangeFiltersShowPreference' ) ) { + return !$this->getUser()->getOption( 'rcenhancedfilters-disable' ); + } else { + return $this->getUser()->getOption( 'rcenhancedfilters' ); + } + } + + /** + * Check whether the structured filter UI is enabled by default (regardless of + * this particular user's setting) + * + * @return bool + */ + public function isStructuredFilterUiEnabledByDefault() { + if ( $this->getConfig()->get( 'StructuredChangeFiltersShowPreference' ) ) { + return !$this->getUser()->getDefaultOption( 'rcenhancedfilters-disable' ); + } else { + return $this->getUser()->getDefaultOption( 'rcenhancedfilters' ); } } + + abstract function getDefaultLimit(); + + /** + * Get the default value of the number of days to display when loading + * the result set. + * Supports fractional values, and should be cast to a float. + * + * @return float + */ + abstract function getDefaultDays(); } diff --git a/includes/specialpage/LoginSignupSpecialPage.php b/includes/specialpage/LoginSignupSpecialPage.php index 5c048a2078..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(); @@ -761,7 +772,7 @@ abstract class LoginSignupSpecialPage extends AuthManagerSpecialPage { if ( $this->showCreateAccountLink() ) { # Pass any language selection on to the mode switch link if ( $this->mLanguage ) { - $linkq .= '&uselang=' . $this->mLanguage; + $linkq .= '&uselang=' . urlencode( $this->mLanguage ); } // Supply URL, login template creates the button. $template->set( 'createOrLoginHref', $titleObj->getLocalURL( $linkq ) ); @@ -1145,11 +1156,11 @@ 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 ) { - $linkq .= '&uselang=' . $this->mLanguage; + $linkq .= '&uselang=' . urlencode( $this->mLanguage ); } $loggedIn = $this->getUser()->isLoggedIn(); @@ -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..8d39c996af 100644 --- a/includes/specialpage/RedirectSpecialPage.php +++ b/includes/specialpage/RedirectSpecialPage.php @@ -35,6 +35,7 @@ abstract class RedirectSpecialPage extends UnlistedSpecialPage { /** * @param string|null $subpage + * @return Title|bool */ public function execute( $subpage ) { $redirect = $this->getRedirect( $subpage ); @@ -52,8 +53,7 @@ abstract class RedirectSpecialPage extends UnlistedSpecialPage { return $redirect; } else { - $class = static::class; - throw new MWException( "RedirectSpecialPage $class doesn't redirect!" ); + $this->showNoRedirectPage(); } } @@ -106,6 +106,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/SpecialPage.php b/includes/specialpage/SpecialPage.php index 67c14d81e2..4c3ca54b32 100644 --- a/includes/specialpage/SpecialPage.php +++ b/includes/specialpage/SpecialPage.php @@ -383,7 +383,7 @@ class SpecialPage implements MessageLocalizer { return true; } elseif ( $securityStatus === AuthManager::SEC_REAUTH ) { $request = $this->getRequest(); - $title = SpecialPage::getTitleFor( 'Userlogin' ); + $title = self::getTitleFor( 'Userlogin' ); $query = [ 'returnto' => $this->getFullTitle()->getPrefixedDBkey(), 'returntoquery' => wfArrayToCgi( array_diff_key( $request->getQueryValues(), 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/specialpage/WantedQueryPage.php b/includes/specialpage/WantedQueryPage.php index 5318895f04..8b60387efa 100644 --- a/includes/specialpage/WantedQueryPage.php +++ b/includes/specialpage/WantedQueryPage.php @@ -102,6 +102,7 @@ abstract class WantedQueryPage extends QueryPage { * @note This will only be run if the page is cached (ie $wgMiserMode = true) * unless forceExistenceCheck() is true. * @since 1.24 + * @param Title $title * @return bool */ protected function existenceCheck( Title $title ) { diff --git a/includes/specials/SpecialActiveusers.php b/includes/specials/SpecialActiveusers.php index e7c9423c7f..902878781c 100644 --- a/includes/specials/SpecialActiveusers.php +++ b/includes/specials/SpecialActiveusers.php @@ -28,9 +28,6 @@ */ class SpecialActiveUsers extends SpecialPage { - /** - * Constructor - */ public function __construct() { parent::__construct( 'Activeusers' ); } diff --git a/includes/specials/SpecialAllMessages.php b/includes/specials/SpecialAllMessages.php index 405670921b..9e66447fe3 100644 --- a/includes/specials/SpecialAllMessages.php +++ b/includes/specials/SpecialAllMessages.php @@ -33,9 +33,6 @@ class SpecialAllMessages extends SpecialPage { */ protected $table; - /** - * Constructor - */ public function __construct() { parent::__construct( 'Allmessages' ); } diff --git a/includes/specials/SpecialAllPages.php b/includes/specials/SpecialAllPages.php index 17f6cca4ac..f9c917d35e 100644 --- a/includes/specials/SpecialAllPages.php +++ b/includes/specials/SpecialAllPages.php @@ -44,8 +44,6 @@ class SpecialAllPages extends IncludableSpecialPage { protected $nsfromMsg = 'allpagesfrom'; /** - * Constructor - * * @param string $name Name of the special page, as seen in links and URLs (default: 'Allpages') */ function __construct( $name = 'Allpages' ) { @@ -343,7 +341,7 @@ class SpecialAllPages extends IncludableSpecialPage { /** * @param int $ns The namespace of the article * @param string $text The name of the article - * @return array( int namespace, string dbkey, string pagename ) or null on error + * @return array|null [ int namespace, string dbkey, string pagename ] or null on error */ protected function getNamespaceKeyAndText( $ns, $text ) { if ( $text == '' ) { diff --git a/includes/specials/SpecialBlock.php b/includes/specials/SpecialBlock.php index 04c04b239c..cd3c0289c8 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) */ @@ -484,7 +484,7 @@ class SpecialBlock extends FormSpecialPage { * @param string $par Subpage parameter passed to setup, or data value from * the HTMLForm * @param WebRequest $request Optionally try and get data from a request too - * @return array( User|string|null, Block::TYPE_ constant|null ) + * @return array [ User|string|null, Block::TYPE_ constant|null ] */ public static function getTargetAndType( $par, WebRequest $request = null ) { $i = 0; @@ -618,7 +618,7 @@ class SpecialBlock extends FormSpecialPage { * @return bool|string */ public static function processForm( array $data, IContextSource $context ) { - global $wgBlockAllowsUTEdit, $wgHideUserContribLimit, $wgContLang; + global $wgBlockAllowsUTEdit, $wgHideUserContribLimit; $performer = $context->getUser(); @@ -720,8 +720,7 @@ class SpecialBlock extends FormSpecialPage { $block = new Block(); $block->setTarget( $target ); $block->setBlocker( $performer ); - # Truncate reason for whole multibyte characters - $block->mReason = $wgContLang->truncate( $data['Reason'][0], 255 ); + $block->mReason = $data['Reason'][0]; $block->mExpiry = $expiryTime; $block->prevents( 'createaccount', $data['CreateAccount'] ); $block->prevents( 'editownusertalk', ( !$wgBlockAllowsUTEdit || $data['DisableUTEdit'] ) ); diff --git a/includes/specials/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/SpecialChangeContentModel.php b/includes/specials/SpecialChangeContentModel.php index bee6a39832..87c899f4e0 100644 --- a/includes/specials/SpecialChangeContentModel.php +++ b/includes/specials/SpecialChangeContentModel.php @@ -154,8 +154,6 @@ class SpecialChangeContentModel extends FormSpecialPage { } public function onSubmit( array $data ) { - global $wgContLang; - if ( $data['pagetitle'] === '' ) { // Initial form view of special page, pass return false; @@ -240,8 +238,6 @@ class SpecialChangeContentModel extends FormSpecialPage { if ( $data['reason'] !== '' ) { $reason .= $this->msg( 'colon-separator' )->inContentLanguage()->text() . $data['reason']; } - # Truncate for whole multibyte characters. - $reason = $wgContLang->truncate( $reason, 255 ); // Run edit filters $derivativeContext = new DerivativeContext( $this->getContext() ); diff --git a/includes/specials/SpecialContributions.php b/includes/specials/SpecialContributions.php index 3845649314..5a5f005baf 100644 --- a/includes/specials/SpecialContributions.php +++ b/includes/specials/SpecialContributions.php @@ -103,7 +103,12 @@ class SpecialContributions extends IncludableSpecialPage { 'pagetitle', $this->msg( 'contributions-title', $target )->plain() )->inContentLanguage() ); - $this->getSkin()->setRelevantUser( $userObj ); + + # For IP ranges, we want the contributionsSub, but not the skin-dependent + # links under 'Tools', which may include irrelevant links like 'Logs'. + if ( !IP::isValidRange( $target ) ) { + $this->getSkin()->setRelevantUser( $userObj ); + } } else { $out->addSubtitle( $this->msg( 'sp-contributions-newbies-sub' ) ); $out->setHTMLTitle( $this->msg( @@ -131,17 +136,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' ); @@ -209,7 +211,12 @@ class SpecialContributions extends IncludableSpecialPage { 'associated' => $this->opts['associated'], ] ); - if ( !$pager->getNumRows() ) { + if ( IP::isValidRange( $target ) && !$pager->isQueryableRange( $target ) ) { + // Valid range, but outside CIDR limit. + $limits = $this->getConfig()->get( 'RangeContributionsCIDRLimit' ); + $limit = $limits[ IP::isIPv4( $target ) ? 'IPv4' : 'IPv6' ]; + $out->addWikiMsg( 'sp-contributions-outofrange', $limit ); + } elseif ( !$pager->getNumRows() ) { $out->addWikiMsg( 'nocontribs', $target ); } else { # Show a message about replica DB lag, if applicable @@ -226,11 +233,14 @@ class SpecialContributions extends IncludableSpecialPage { } $out->addHTML( $output ); } + $out->preventClickjacking( $pager->getPreventClickjacking() ); # Show the appropriate "footer" message - WHOIS tools, etc. if ( $this->opts['contribs'] == 'newbie' ) { $message = 'sp-contributions-footer-newbies'; + } elseif ( IP::isValidRange( $target ) ) { + $message = 'sp-contributions-footer-anon-range'; } elseif ( IP::isIPAddress( $target ) ) { $message = 'sp-contributions-footer-anon'; } elseif ( $userObj->isAnon() ) { @@ -261,8 +271,11 @@ class SpecialContributions extends IncludableSpecialPage { */ protected function contributionsSub( $userObj ) { if ( $userObj->isAnon() ) { - // Show a warning message that the user being searched for doesn't exists - if ( !User::isIP( $userObj->getName() ) ) { + // Show a warning message that the user being searched for doesn't exists. + // User::isIP returns true for IP address and usemod IPs like '123.123.123.xxx', + // but returns false for IP ranges. We don't want to suggest either of these are + // valid usernames which we would with the 'contributions-userdoesnotexist' message. + if ( !User::isIP( $userObj->getName() ) && !$userObj->isIPRange() ) { $this->getOutput()->wrapWikiMsg( "
    \n\$1\n
    ", [ @@ -289,7 +302,13 @@ class SpecialContributions extends IncludableSpecialPage { // Do not expose the autoblocks, since that may lead to a leak of accounts' IPs, // and also this will display a totally irrelevant log entry as a current block. if ( !$this->including() ) { - $block = Block::newFromTarget( $userObj, $userObj ); + // For IP ranges you must give Block::newFromTarget the CIDR string and not a user object. + if ( $userObj->isIPRange() ) { + $block = Block::newFromTarget( $userObj->getName(), $userObj->getName() ); + } else { + $block = Block::newFromTarget( $userObj, $userObj ); + } + if ( !is_null( $block ) && $block->getType() != Block::TYPE_AUTO ) { if ( $block->getType() == Block::TYPE_RANGE ) { $nt = MWNamespace::getCanonicalName( NS_USER ) . ':' . $block->getTarget(); @@ -335,10 +354,14 @@ class SpecialContributions extends IncludableSpecialPage { $talkpage = $target->getTalkPage(); $linkRenderer = $sp->getLinkRenderer(); - $tools['user-talk'] = $linkRenderer->makeLink( - $talkpage, - $sp->msg( 'sp-contributions-talk' )->text() - ); + + # No talk pages for IP ranges. + if ( !IP::isValidRange( $username ) ) { + $tools['user-talk'] = $linkRenderer->makeLink( + $talkpage, + $sp->msg( 'sp-contributions-talk' )->text() + ); + } if ( ( $id !== null ) || ( $id === null && IP::isIPAddress( $username ) ) ) { if ( $sp->getUser()->isAllowed( 'block' ) ) { # Block / Change block / Unblock links @@ -377,24 +400,28 @@ class SpecialContributions extends IncludableSpecialPage { ); } } - # Uploads - $tools['uploads'] = $linkRenderer->makeKnownLink( - SpecialPage::getTitleFor( 'Listfiles', $username ), - $sp->msg( 'sp-contributions-uploads' )->text() - ); - # Other logs link - $tools['logs'] = $linkRenderer->makeKnownLink( - SpecialPage::getTitleFor( 'Log', $username ), - $sp->msg( 'sp-contributions-logs' )->text() - ); + # Don't show some links for IP ranges + if ( !IP::isValidRange( $username ) ) { + # Uploads + $tools['uploads'] = $linkRenderer->makeKnownLink( + SpecialPage::getTitleFor( 'Listfiles', $username ), + $sp->msg( 'sp-contributions-uploads' )->text() + ); - # Add link to deleted user contributions for priviledged users - if ( $sp->getUser()->isAllowed( 'deletedhistory' ) ) { - $tools['deletedcontribs'] = $linkRenderer->makeKnownLink( - SpecialPage::getTitleFor( 'DeletedContributions', $username ), - $sp->msg( 'sp-contributions-deleted', $username )->text() + # Other logs link + $tools['logs'] = $linkRenderer->makeKnownLink( + SpecialPage::getTitleFor( 'Log', $username ), + $sp->msg( 'sp-contributions-logs' )->text() ); + + # Add link to deleted user contributions for priviledged users + if ( $sp->getUser()->isAllowed( 'deletedhistory' ) ) { + $tools['deletedcontribs'] = $linkRenderer->makeKnownLink( + SpecialPage::getTitleFor( 'DeletedContributions', $username ), + $sp->msg( 'sp-contributions-deleted', $username )->text() + ); + } } # Add a link to change user rights for privileged users diff --git a/includes/specials/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/SpecialEditWatchlist.php b/includes/specials/SpecialEditWatchlist.php index e1ecfe8cd5..d2940e4a02 100644 --- a/includes/specials/SpecialEditWatchlist.php +++ b/includes/specials/SpecialEditWatchlist.php @@ -770,38 +770,3 @@ class SpecialEditWatchlist extends UnlistedSpecialPage { ); } } - -/** - * Extend HTMLForm purely so we can have a more sane way of getting the section headers - */ -class EditWatchlistNormalHTMLForm extends HTMLForm { - public function getLegend( $namespace ) { - $namespace = substr( $namespace, 2 ); - - return $namespace == NS_MAIN - ? $this->msg( 'blanknamespace' )->escaped() - : htmlspecialchars( $this->getContext()->getLanguage()->getFormattedNsText( $namespace ) ); - } - - public function getBody() { - return $this->displaySection( $this->mFieldTree, '', 'editwatchlist-' ); - } -} - -class EditWatchlistCheckboxSeriesField extends HTMLMultiSelectField { - /** - * HTMLMultiSelectField throws validation errors if we get input data - * that doesn't match the data set in the form setup. This causes - * problems if something gets removed from the watchlist while the - * form is open (T34126), but we know that invalid items will - * be harmless so we can override it here. - * - * @param string $value The value the field was submitted with - * @param array $alldata The data collected from the form - * @return bool|string Bool true on success, or String error to display. - */ - function validate( $value, $alldata ) { - // Need to call into grandparent to be a good citizen. :) - return HTMLFormField::validate( $value, $alldata ); - } -} diff --git a/includes/specials/SpecialEmailuser.php b/includes/specials/SpecialEmailuser.php index 830b43817f..249be7f17f 100644 --- a/includes/specials/SpecialEmailuser.php +++ b/includes/specials/SpecialEmailuser.php @@ -44,7 +44,7 @@ class SpecialEmailUser extends UnlistedSpecialPage { } public function getDescription() { - $target = self::getTarget( $this->mTarget ); + $target = self::getTarget( $this->mTarget, $this->getUser() ); if ( !$target instanceof User ) { return $this->msg( 'emailuser-title-notarget' )->text(); } @@ -142,7 +142,7 @@ class SpecialEmailUser extends UnlistedSpecialPage { throw new ErrorPageError( $title, $msg, $params ); } // Got a valid target user name? Else ask for one. - $ret = self::getTarget( $this->mTarget ); + $ret = self::getTarget( $this->mTarget, $this->getUser() ); if ( !$ret instanceof User ) { if ( $this->mTarget != '' ) { // Messages used here: notargettext, noemailtext, nowikiemailtext @@ -187,9 +187,14 @@ class SpecialEmailUser extends UnlistedSpecialPage { * Validate target User * * @param string $target Target user name - * @return User User object on success or a string on error + * @param User|null $sender User sending the email + * @return User|string User object on success or a string on error */ - public static function getTarget( $target ) { + public static function getTarget( $target, User $sender = null ) { + if ( $sender === null ) { + wfDeprecated( __METHOD__ . ' without specifying the sending user', '1.30' ); + } + if ( $target == '' ) { wfDebug( "Target is empty.\n" ); @@ -197,21 +202,50 @@ class SpecialEmailUser extends UnlistedSpecialPage { } $nu = User::newFromName( $target ); - if ( !$nu instanceof User || !$nu->getId() ) { + $error = self::validateTarget( $nu, $sender ); + + return $error ? $error : $nu; + } + + /** + * Validate target User + * + * @param User $target Target user + * @param User|null $sender User sending the email + * @return string Error message or empty string if valid. + * @since 1.30 + */ + public static function validateTarget( $target, User $sender = null ) { + if ( $sender === null ) { + wfDeprecated( __METHOD__ . ' without specifying the sending user', '1.30' ); + } + + if ( !$target instanceof User || !$target->getId() ) { wfDebug( "Target is invalid user.\n" ); return 'notarget'; - } elseif ( !$nu->isEmailConfirmed() ) { + } elseif ( !$target->isEmailConfirmed() ) { wfDebug( "User has no valid email.\n" ); return 'noemail'; - } elseif ( !$nu->canReceiveEmail() ) { + } elseif ( !$target->canReceiveEmail() ) { wfDebug( "User does not allow user emails.\n" ); return 'nowikiemail'; + } elseif ( $sender !== null ) { + $blacklist = $target->getOption( 'email-blacklist', [] ); + if ( $blacklist ) { + $lookup = CentralIdLookup::factory(); + $senderId = $lookup->centralIdFromLocalUser( $sender ); + if ( $senderId !== 0 && in_array( $senderId, $blacklist ) ) { + wfDebug( "User does not allow user emails from this user.\n" ); + + return 'nowikiemail'; + } + } } - return $nu; + return ''; } /** @@ -326,7 +360,7 @@ class SpecialEmailUser extends UnlistedSpecialPage { public static function submit( array $data, IContextSource $context ) { $config = $context->getConfig(); - $target = self::getTarget( $data['Target'] ); + $target = self::getTarget( $data['Target'], $context->getUser() ); if ( !$target instanceof User ) { // Messages used here: notargettext, noemailtext, nowikiemailtext return Status::newFatal( $target . 'text' ); 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 a2930fcebe..9ce52ef013 100644 --- a/includes/specials/SpecialImport.php +++ b/includes/specials/SpecialImport.php @@ -24,8 +24,6 @@ * @ingroup SpecialPage */ -use MediaWiki\MediaWikiServices; - /** * MediaWiki page data importer * @@ -46,9 +44,6 @@ class SpecialImport extends SpecialPage { private $pageLinkDepth; private $importSources; - /** - * Constructor - */ public function __construct() { parent::__construct( 'Import', 'import' ); } @@ -176,10 +171,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 ) ) { @@ -529,172 +522,3 @@ class SpecialImport extends SpecialPage { return 'pagetools'; } } - -/** - * Reporting callback - * @ingroup SpecialPage - */ -class ImportReporter extends ContextSource { - private $reason = false; - private $logTags = []; - private $mOriginalLogCallback = null; - private $mOriginalPageOutCallback = null; - private $mLogItemCount = 0; - - /** - * @param WikiImporter $importer - * @param bool $upload - * @param string $interwiki - * @param string|bool $reason - */ - function __construct( $importer, $upload, $interwiki, $reason = false ) { - $this->mOriginalPageOutCallback = - $importer->setPageOutCallback( [ $this, 'reportPage' ] ); - $this->mOriginalLogCallback = - $importer->setLogItemCallback( [ $this, 'reportLogItem' ] ); - $importer->setNoticeCallback( [ $this, 'reportNotice' ] ); - $this->mPageCount = 0; - $this->mIsUpload = $upload; - $this->mInterwiki = $interwiki; - $this->reason = $reason; - } - - /** - * Sets change tags to apply to the import log entry and null revision. - * - * @param array $tags - * @since 1.29 - */ - public function setChangeTags( array $tags ) { - $this->logTags = $tags; - } - - function open() { - $this->getOutput()->addHTML( "
      \n" ); - } - - function reportNotice( $msg, array $params ) { - $this->getOutput()->addHTML( - Html::element( 'li', [], $this->msg( $msg, $params )->text() ) - ); - } - - function reportLogItem( /* ... */ ) { - $this->mLogItemCount++; - if ( is_callable( $this->mOriginalLogCallback ) ) { - call_user_func_array( $this->mOriginalLogCallback, func_get_args() ); - } - } - - /** - * @param Title $title - * @param ForeignTitle $foreignTitle - * @param int $revisionCount - * @param int $successCount - * @param array $pageInfo - * @return void - */ - public function reportPage( $title, $foreignTitle, $revisionCount, - $successCount, $pageInfo ) { - $args = func_get_args(); - call_user_func_array( $this->mOriginalPageOutCallback, $args ); - - if ( $title === null ) { - # Invalid or non-importable title; a notice is already displayed - return; - } - - $this->mPageCount++; - $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); - if ( $successCount > 0 ) { - // prevents jumbling of the versions count - // in RTL wikis in case the page title is LTR - $this->getOutput()->addHTML( - "
    • " . $linkRenderer->makeLink( $title ) . " " . - "" . - $this->msg( 'import-revision-count' )->numParams( $successCount )->escaped() . - "" . - "
    • \n" - ); - - $logParams = [ '4:number:count' => $successCount ]; - if ( $this->mIsUpload ) { - $detail = $this->msg( 'import-logentry-upload-detail' )->numParams( - $successCount )->inContentLanguage()->text(); - $action = 'upload'; - } else { - $pageTitle = $foreignTitle->getFullText(); - $fullInterwikiPrefix = $this->mInterwiki; - Hooks::run( 'ImportLogInterwikiLink', [ &$fullInterwikiPrefix, &$pageTitle ] ); - - $interwikiTitleStr = $fullInterwikiPrefix . ':' . $pageTitle; - $interwiki = '[[:' . $interwikiTitleStr . ']]'; - $detail = $this->msg( 'import-logentry-interwiki-detail' )->numParams( - $successCount )->params( $interwiki )->inContentLanguage()->text(); - $action = 'interwiki'; - $logParams['5:title-link:interwiki'] = $interwikiTitleStr; - } - if ( $this->reason ) { - $detail .= $this->msg( 'colon-separator' )->inContentLanguage()->text() - . $this->reason; - } - - $comment = $detail; // quick - $dbw = wfGetDB( DB_MASTER ); - $latest = $title->getLatestRevID(); - $nullRevision = Revision::newNullRevision( - $dbw, - $title->getArticleID(), - $comment, - true, - $this->getUser() - ); - - $nullRevId = null; - if ( !is_null( $nullRevision ) ) { - $nullRevId = $nullRevision->insertOn( $dbw ); - $page = WikiPage::factory( $title ); - # Update page record - $page->updateRevisionOn( $dbw, $nullRevision ); - Hooks::run( - 'NewRevisionFromEditComplete', - [ $page, $nullRevision, $latest, $this->getUser() ] - ); - } - - // Create the import log entry - $logEntry = new ManualLogEntry( 'import', $action ); - $logEntry->setTarget( $title ); - $logEntry->setComment( $this->reason ); - $logEntry->setPerformer( $this->getUser() ); - $logEntry->setParameters( $logParams ); - $logid = $logEntry->insert(); - if ( count( $this->logTags ) ) { - $logEntry->setTags( $this->logTags ); - } - // Make sure the null revision will be tagged as well - $logEntry->setAssociatedRevId( $nullRevId ); - - $logEntry->publish( $logid ); - - } else { - $this->getOutput()->addHTML( "
    • " . $linkRenderer->makeKnownLink( $title ) . " " . - $this->msg( 'import-nonewrevisions' )->escaped() . "
    • \n" ); - } - } - - function close() { - $out = $this->getOutput(); - if ( $this->mLogItemCount > 0 ) { - $msg = $this->msg( 'imported-log-entries' )->numParams( $this->mLogItemCount )->parse(); - $out->addHTML( Xml::tags( 'li', null, $msg ) ); - } elseif ( $this->mPageCount == 0 && $this->mLogItemCount == 0 ) { - $out->addHTML( "
    \n" ); - - return Status::newFatal( 'importnopages' ); - } - $out->addHTML( "\n" ); - - return Status::newGood( $this->mPageCount ); - } -} diff --git a/includes/specials/SpecialLinkSearch.php b/includes/specials/SpecialLinkSearch.php index dae60744dc..cda0854d4b 100644 --- a/includes/specials/SpecialLinkSearch.php +++ b/includes/specials/SpecialLinkSearch.php @@ -266,6 +266,7 @@ class LinkSearchPage extends QueryPage { * * @see T130058 * @todo FIXME This special page should not use LIMIT for paging + * @return int */ protected function getMaxResults() { return max( parent::getMaxResults(), 60000 ); diff --git a/includes/specials/SpecialListgrants.php b/includes/specials/SpecialListgrants.php index 2c92410cbc..1a04eec473 100644 --- a/includes/specials/SpecialListgrants.php +++ b/includes/specials/SpecialListgrants.php @@ -69,7 +69,7 @@ class SpecialListGrants extends SpecialPage { $grantCellHtml = '
    • ' . implode( "
    • \n
    • ", $descs ) . '
    '; } - $id = \Sanitizer::escapeId( $grant ); + $id = Sanitizer::escapeIdForAttribute( $grant ); $out->addHTML( \Html::rawElement( 'tr', [ 'id' => $id ], "" . $this->msg( diff --git a/includes/specials/SpecialListgrouprights.php b/includes/specials/SpecialListgrouprights.php index 7a25e55d58..2315887aa5 100644 --- a/includes/specials/SpecialListgrouprights.php +++ b/includes/specials/SpecialListgrouprights.php @@ -126,7 +126,7 @@ class SpecialListGroupRights extends SpecialPage { ? $groupsRemoveFromSelf[$group] : []; - $id = $group == '*' ? false : Sanitizer::escapeId( $group ); + $id = $group == '*' ? false : Sanitizer::escapeIdForAttribute( $group ); $out->addHTML( Html::rawElement( 'tr', [ 'id' => $id ], " $grouppage$grouplink " . 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/SpecialListusers.php b/includes/specials/SpecialListusers.php index 1a8dccf4de..dee2968d05 100644 --- a/includes/specials/SpecialListusers.php +++ b/includes/specials/SpecialListusers.php @@ -29,9 +29,7 @@ * @ingroup SpecialPage */ class SpecialListUsers extends IncludableSpecialPage { - /** - * Constructor - */ + public function __construct() { parent::__construct( 'Listusers' ); } 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/SpecialNewimages.php b/includes/specials/SpecialNewimages.php index 0a653e7370..693b8aa90e 100644 --- a/includes/specials/SpecialNewimages.php +++ b/includes/specials/SpecialNewimages.php @@ -155,7 +155,6 @@ class SpecialNewFiles extends IncludableSpecialPage { 'mediatype' => [ 'type' => 'multiselect', - 'dropdown' => true, 'flatlist' => true, 'name' => 'mediatype', 'label-message' => 'newimages-mediatype', diff --git a/includes/specials/SpecialNewpages.php b/includes/specials/SpecialNewpages.php index 83482f6f2f..671ab6fb55 100644 --- a/includes/specials/SpecialNewpages.php +++ b/includes/specials/SpecialNewpages.php @@ -278,19 +278,27 @@ class SpecialNewpages extends IncludableSpecialPage { } ); $htmlForm->setMethod( 'get' ); - - $out->addHTML( Xml::fieldset( $this->msg( 'newpages' )->text() ) ); - + $htmlForm->setWrapperLegend( true ); + $htmlForm->setWrapperLegendMsg( 'newpages' ); + $htmlForm->addFooterText( Html::rawElement( + 'div', + null, + $this->filterLinks() + ) ); $htmlForm->show(); + } - $out->addHTML( - Html::rawElement( - 'div', - null, - $this->filterLinks() - ) . - Xml::closeElement( 'fieldset' ) - ); + /** + * @param stdClass $result 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, + ] ); } /** @@ -303,14 +311,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 +385,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 +406,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 +490,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/SpecialPagesWithProp.php b/includes/specials/SpecialPagesWithProp.php index 5878e1ffb1..34fcc78c7e 100644 --- a/includes/specials/SpecialPagesWithProp.php +++ b/includes/specials/SpecialPagesWithProp.php @@ -28,9 +28,27 @@ * @since 1.21 */ class SpecialPagesWithProp extends QueryPage { + + /** + * @var string|null + */ private $propName = null; + + /** + * @var string[]|null + */ private $existingPropNames = null; + /** + * @var bool + */ + private $reverse = false; + + /** + * @var bool + */ + private $sortByValue = false; + function __construct( $name = 'PagesWithProp' ) { parent::__construct( $name ); } @@ -46,6 +64,8 @@ class SpecialPagesWithProp extends QueryPage { $request = $this->getRequest(); $propname = $request->getVal( 'propname', $par ); + $this->reverse = $request->getBool( 'reverse' ); + $this->sortByValue = $request->getBool( 'sortbyvalue' ); $propnames = $this->getExistingPropNames(); @@ -58,6 +78,20 @@ class SpecialPagesWithProp extends QueryPage { 'label-message' => 'pageswithprop-prop', 'required' => true, ], + 'reverse' => [ + 'type' => 'check', + 'name' => 'reverse', + 'default' => $this->reverse, + 'label-message' => 'pageswithprop-reverse', + 'required' => false, + ], + 'sortbyvalue' => [ + 'type' => 'check', + 'name' => 'sortbyvalue', + 'default' => $this->sortByValue, + 'label-message' => 'pageswithprop-sortbyvalue', + 'required' => false, + ] ], $this->getContext() ); $form->setMethod( 'get' ); $form->setSubmitCallback( [ $this, 'onSubmit' ] ); @@ -122,7 +156,18 @@ class SpecialPagesWithProp extends QueryPage { } function getOrderFields() { - return [ 'page_id' ]; + $sort = [ 'page_id' ]; + if ( $this->sortByValue ) { + array_unshift( $sort, 'pp_sortkey' ); + } + return $sort; + } + + /** + * @return bool + */ + public function sortDescending() { + return !$this->reverse; } /** 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 15bbffdb1f..34a7714de2 100644 --- a/includes/specials/SpecialRecentchanges.php +++ b/includes/specials/SpecialRecentchanges.php @@ -32,6 +32,8 @@ use Wikimedia\Rdbms\FakeResultWrapper; */ class SpecialRecentChanges extends ChangesListSpecialPage { + protected static $savedQueriesPreferenceName = 'rcfilters-saved-queries'; + private $watchlistFilterGroupDefinition; // @codingStandardsIgnoreStart Needed "useless" override to change parameters. @@ -164,96 +166,12 @@ 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( - 'wgStructuredChangeFiltersEnableSaving', - $this->getConfig()->get( 'StructuredChangeFiltersEnableSaving' ) - ); - $out->addJsConfigVars( - 'wgStructuredChangeFiltersEnableExperimentalViews', - $experimentalStructuredChangeFilters - ); - $out->addJsConfigVars( - 'wgStructuredChangeFiltersEnableLiveUpdate', - $this->getConfig()->get( 'StructuredChangeFiltersEnableLiveUpdate' ) - ); - if ( $experimentalStructuredChangeFilters ) { - $out->addJsConfigVars( - 'wgRCFiltersChangeTags', - $this->buildChangeTagList() - ); - } - } - } - - /** - * 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, - ]; - } + $out->addJsConfigVars( 'wgStructuredChangeFiltersLiveUpdateSupported', true ); } - - // 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'] ) ) { @@ -264,7 +182,7 @@ class SpecialRecentChanges extends ChangesListSpecialPage { } /** - * @inheritdoc + * @inheritDoc */ protected function registerFilters() { parent::registerFilters(); @@ -313,15 +231,13 @@ class SpecialRecentChanges extends ChangesListSpecialPage { */ public function getDefaultOptions() { $opts = parent::getDefaultOptions(); - $user = $this->getUser(); - $opts->add( 'days', $user->getIntOption( 'rcdays' ) ); - $opts->add( 'limit', $user->getIntOption( 'rclimit' ) ); + $opts->add( 'days', $this->getDefaultDays(), FormOptions::FLOAT ); + $opts->add( 'limit', $this->getDefaultLimit() ); $opts->add( 'from', '' ); $opts->add( 'categories', '' ); $opts->add( 'categories_any', false ); - $opts->add( 'tagfilter', '' ); return $opts; } @@ -359,7 +275,7 @@ class SpecialRecentChanges extends ChangesListSpecialPage { if ( preg_match( '/^limit=(\d+)$/', $bit, $m ) ) { $opts['limit'] = $m[1]; } - if ( preg_match( '/^days=(\d+)$/', $bit, $m ) ) { + if ( preg_match( '/^days=(\d+(?:\.\d+)?)$/', $bit, $m ) ) { $opts['days'] = $m[1]; } if ( preg_match( '/^namespace=(.*)$/', $bit, $m ) ) { @@ -373,11 +289,12 @@ class SpecialRecentChanges extends ChangesListSpecialPage { public function validateOptions( FormOptions $opts ) { $opts->validateIntBounds( 'limit', 0, 5000 ); + $opts->validateBounds( 'days', 0, $this->getConfig()->get( 'RCMaxAge' ) / ( 3600 * 24 ) ); parent::validateOptions( $opts ); } /** - * @inheritdoc + * @inheritDoc */ protected function buildQuery( &$tables, &$fields, &$conds, &$query_options, &$join_conds, FormOptions $opts @@ -387,8 +304,7 @@ class SpecialRecentChanges extends ChangesListSpecialPage { $query_options, $join_conds, $opts ); // Calculate cutoff - $cutoff_unixtime = time() - ( $opts['days'] * 86400 ); - $cutoff_unixtime = $cutoff_unixtime - ( $cutoff_unixtime % 86400 ); + $cutoff_unixtime = time() - $opts['days'] * 3600 * 24; $cutoff = $dbr->timestamp( $cutoff_unixtime ); $fromValid = preg_match( '/^[0-9]{14}$/', $opts['from'] ); @@ -402,7 +318,7 @@ class SpecialRecentChanges extends ChangesListSpecialPage { } /** - * @inheritdoc + * @inheritDoc */ protected function doMainQuery( $tables, $fields, $conds, $query_options, $join_conds, FormOptions $opts @@ -430,13 +346,14 @@ class SpecialRecentChanges extends ChangesListSpecialPage { $fields[] = 'page_latest'; $join_conds['page'] = [ 'LEFT JOIN', 'rc_cur_id=page_id' ]; + $tagFilter = $opts['tagfilter'] ? explode( '|', $opts['tagfilter'] ) : []; ChangeTags::modifyDisplayQuery( $tables, $fields, $conds, $join_conds, $query_options, - $opts['tagfilter'] + $tagFilter ); if ( !$this->runMainQueryHook( $tables, $fields, $conds, $query_options, $join_conds, @@ -449,13 +366,24 @@ class SpecialRecentChanges extends ChangesListSpecialPage { 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); prior to // MediaWiki 1.26 this used to use the plus operator instead, which meant // that extensions weren't able to change these conditions - $query_options = array_merge( [ - 'ORDER BY' => 'rc_timestamp DESC', - 'LIMIT' => $opts['limit'] ], $query_options ); + $query_options = array_merge( $orderByAndLimit, $query_options ); $rows = $dbr->select( $tables, $fields, @@ -526,8 +454,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 ); @@ -622,7 +548,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', @@ -659,16 +585,25 @@ 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' ] ); + $loadingContainer = Html::rawElement( + 'div', + [ 'class' => 'rcfilters-spinner' ], + Html::element( + 'div', + [ 'class' => 'rcfilters-spinner-bounce' ] + ) + ); + // Wrap both with rcfilters-head $this->getOutput()->addHTML( Html::rawElement( @@ -677,6 +612,9 @@ class SpecialRecentChanges extends ChangesListSpecialPage { $rcfilterContainer . $rcoptions ) ); + + // Add spinner + $this->getOutput()->addHTML( $loadingContainer ); } else { $this->getOutput()->addHTML( $rcoptions ); } @@ -694,17 +632,59 @@ class SpecialRecentChanges extends ChangesListSpecialPage { $message = $this->msg( 'recentchangestext' )->inContentLanguage(); if ( !$message->isDisabled() ) { - $this->getOutput()->addWikiText( - Html::rawElement( 'div', - [ - 'class' => 'mw-recentchanges-toplinks', - 'lang' => $wgContLang->getHtmlCode(), - 'dir' => $wgContLang->getDir() - ], - "\n" . $message->plain() . "\n" - ), - /* $lineStart */ true, - /* $interface */ false + // 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(), + 'dir' => $wgContLang->getDir(), + ]; + + $topLinksAttributes = [ 'class' => 'mw-recentchanges-toplinks' ]; + + if ( $this->isStructuredFilterUiEnabled() ) { + // Check whether the widget is already collapsed or expanded + $collapsedState = $this->getRequest()->getCookie( 'rcfilters-toplinks-collapsed-state' ); + $collapsedClass = $collapsedState === 'collapsed' ? 'mw-rcfilters-toplinks-collapsed' : ''; + + $contentTitle = Html::rawElement( 'div', + [ 'class' => 'mw-recentchanges-toplinks-title ' . $collapsedClass ], + $this->msg( 'rcfilters-other-review-tools' )->parse() + ); + $contentWrapper = Html::rawElement( 'div', + array_merge( + [ + 'class' => 'mw-recentchanges-toplinks-content mw-collapsible-content ' . + $collapsedClass + ], + $langAttributes + ), + $content + ); + $content = $contentTitle . $contentWrapper; + } else { + // Language direction should be on the top div only + // if the title is not there. If it is there, it's + // interface direction, and the language/dir attributes + // should be on the content itself + $topLinksAttributes = array_merge( $topLinksAttributes, $langAttributes ); + } + + $this->getOutput()->addHTML( + Html::rawElement( 'div', $topLinksAttributes, $content ) ); } } @@ -741,17 +721,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. */ @@ -759,10 +728,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' ); - } } /** @@ -824,7 +789,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 ) { @@ -931,15 +896,20 @@ class SpecialRecentChanges extends ChangesListSpecialPage { $resetLink = $this->makeOptionsLink( $this->msg( 'rclistfromreset' ), [ 'from' => '' ], $nondefaults ); - $note .= $this->msg( 'rcnotefrom' ) + $noteFromMsg = $this->msg( 'rcnotefrom' ) ->numParams( $options['limit'] ) ->params( $lang->userTimeAndDate( $options['from'], $user ), $lang->userDate( $options['from'], $user ), $lang->userTime( $options['from'], $user ) ) - ->numParams( $numRows ) - ->parse() . ' ' . + ->numParams( $numRows ); + $note .= Html::rawElement( + 'span', + [ 'class' => 'rcnotefrom' ], + $noteFromMsg->parse() + ) . + ' ' . Html::rawElement( 'span', [ 'class' => 'rcoptions-listfromreset' ], @@ -981,7 +951,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 ) { @@ -998,7 +967,7 @@ class SpecialRecentChanges extends ChangesListSpecialPage { [ $key => 1 - $options[$key] ], $nondefaults ); $attribs = [ - 'class' => "$msg rcshowhideoption", + 'class' => "$msg rcshowhideoption clshowhideoption", 'data-filter-name' => $filter->getName(), ]; @@ -1042,4 +1011,12 @@ class SpecialRecentChanges extends ChangesListSpecialPage { protected function getCacheTTL() { return 60 * 5; } + + function getDefaultLimit() { + return $this->getUser()->getIntOption( 'rclimit' ); + } + + function getDefaultDays() { + return floatval( $this->getUser()->getOption( 'rcdays' ) ); + } } diff --git a/includes/specials/SpecialRecentchangeslinked.php b/includes/specials/SpecialRecentchangeslinked.php index b3b9210380..a13af55de5 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 @@ -98,20 +98,38 @@ class SpecialRecentChangesLinked extends SpecialRecentChanges { 'wl_namespace=rc_namespace' ] ]; } - if ( $this->getUser()->isAllowed( 'rollback' ) ) { - $tables[] = 'page'; - $join_conds['page'] = [ 'LEFT JOIN', 'rc_cur_id=page_id' ]; - $select[] = 'page_latest'; - } + + // JOIN on page, used for 'last revision' filter highlight + $tables[] = 'page'; + $join_conds['page'] = [ 'LEFT JOIN', 'rc_cur_id=page_id' ]; + $select[] = 'page_latest'; + + $tagFilter = $opts['tagfilter'] ? explode( '|', $opts['tagfilter'] ) : []; ChangeTags::modifyDisplayQuery( $tables, $select, $conds, $join_conds, $query_options, - $opts['tagfilter'] + $tagFilter ); + if ( $dbr->unionSupportsOrderAndLimit() ) { + if ( count( $tagFilter ) > 1 ) { + // ChangeTags::modifyDisplayQuery() will have added DISTINCT. + // To prevent this from causing query performance problems, we need to add + // a GROUP BY, and add rc_id to the ORDER BY. + $order = [ + 'GROUP BY' => 'rc_timestamp, rc_id', + 'ORDER BY' => 'rc_timestamp DESC, rc_id DESC' + ]; + } else { + $order = [ 'ORDER BY' => 'rc_timestamp DESC' ]; + } + } else { + $order = []; + } + if ( !$this->runMainQueryHook( $tables, $select, $conds, $query_options, $join_conds, $opts ) ) { @@ -181,12 +199,6 @@ class SpecialRecentChangesLinked extends SpecialRecentChanges { } } - if ( $dbr->unionSupportsOrderAndLimit() ) { - $order = [ 'ORDER BY' => 'rc_timestamp DESC' ]; - } else { - $order = []; - } - $query = $dbr->selectSQLText( array_merge( $tables, [ $link_table ] ), $select, diff --git a/includes/specials/SpecialRedirect.php b/includes/specials/SpecialRedirect.php index 1d1df6a043..3273046f57 100644 --- a/includes/specials/SpecialRedirect.php +++ b/includes/specials/SpecialRedirect.php @@ -33,16 +33,18 @@ class SpecialRedirect extends FormSpecialPage { /** * The type of the redirect (user/file/revision) * + * Example value: `'user'` + * * @var string $mType - * @example 'user' */ protected $mType; /** * The identifier/value for the redirect (which id, which file) * + * Example value: `'42'` + * * @var string $mValue - * @example '42' */ protected $mValue; 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 e5adeb53b4..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 ); @@ -435,9 +435,17 @@ class SpecialSearch extends SpecialPage { // prev/next links if ( $totalRes > $this->limit || $this->offset ) { + // Allow matches to define the correct offset, as interleaved + // AB testing may require a different next page offset. + if ( $textMatches && $textMatches->getOffset() !== null ) { + $offset = $textMatches->getOffset(); + } else { + $offset = $this->offset; + } + $prevnext = $this->getLanguage()->viewPrevNext( $this->getPageTitle(), - $this->offset, + $offset, $this->limit, $this->powerSearchOptions() + [ 'search' => $term ], $this->limit + $this->offset >= $totalRes @@ -547,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/SpecialShortpages.php b/includes/specials/SpecialShortpages.php index f980e7112c..e9c15e7bed 100644 --- a/includes/specials/SpecialShortpages.php +++ b/includes/specials/SpecialShortpages.php @@ -41,9 +41,11 @@ class ShortPagesPage extends QueryPage { } public function getQueryInfo() { + $config = $this->getConfig(); + $blacklist = $config->get( 'ShortPagesNamespaceBlacklist' ); $tables = [ 'page' ]; $conds = [ - 'page_namespace' => MWNamespace::getContentNamespaces(), + 'page_namespace' => array_diff( MWNamespace::getContentNamespaces(), $blacklist ), 'page_is_redirect' => 0 ]; $joinConds = []; diff --git a/includes/specials/SpecialSpecialpages.php b/includes/specials/SpecialSpecialpages.php index 451669ce61..4f29082227 100644 --- a/includes/specials/SpecialSpecialpages.php +++ b/includes/specials/SpecialSpecialpages.php @@ -130,9 +130,29 @@ class SpecialSpecialpages extends UnlistedSpecialPage { ); } - if ( $includesRestrictedPages || $includesCachedPages ) { - $out->wrapWikiMsg( "

    $1

    ", 'specialpages-note-top' ); - $out->wrapWikiMsg( "
    \n$1\n
    ", 'specialpages-note' ); + // add legend + $notes = []; + if ( $includesRestrictedPages ) { + $restricedMsg = $this->msg( 'specialpages-note-restricted' ); + if ( !$restricedMsg->isDisabled() ) { + $notes[] = $restricedMsg->plain(); + } + } + if ( $includesCachedPages ) { + $cachedMsg = $this->msg( 'specialpages-note-cached' ); + if ( !$cachedMsg->isDisabled() ) { + $notes[] = $cachedMsg->plain(); + } + } + if ( $notes !== [] ) { + $out->wrapWikiMsg( + "

    $1

    ", 'specialpages-note-top' + ); + $out->addWikiText( + "
    \n" . + implode( "\n", $notes ) . + "\n
    " + ); } } } 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/SpecialUndelete.php b/includes/specials/SpecialUndelete.php index 810f8fb158..740207d6b9 100644 --- a/includes/specials/SpecialUndelete.php +++ b/includes/specials/SpecialUndelete.php @@ -235,7 +235,7 @@ class SpecialUndelete extends SpecialPage { function showSearchForm() { $out = $this->getOutput(); $out->setPageTitle( $this->msg( 'undelete-search-title' ) ); - $fuzzySearch = $this->getRequest()->getVal( 'fuzzy', false ); + $fuzzySearch = $this->getRequest()->getVal( 'fuzzy', true ); $out->enableOOUI(); @@ -277,7 +277,7 @@ class SpecialUndelete extends SpecialPage { $fieldset, new OOUI\HtmlSnippet( Html::hidden( 'title', $this->getPageTitle()->getPrefixedDBkey() ) . - Html::hidden( 'fuzzy', $this->getRequest()->getVal( 'fuzzy' ) ) + Html::hidden( 'fuzzy', $fuzzySearch ) ) ); @@ -669,13 +669,7 @@ class SpecialUndelete extends SpecialPage { $archive = new PageArchive( $this->mTargetObj, $this->getConfig() ); Hooks::run( 'UndeleteForm::showHistory', [ &$archive, $this->mTargetObj ] ); - /* - $text = $archive->getLastRevisionText(); - if( is_null( $text ) ) { - $out->addWikiMsg( 'nohistory' ); - return; - } - */ + $out->addHTML( '
    ' ); if ( $this->mAllowed ) { $out->addWikiMsg( 'undeletehistory' ); @@ -858,11 +852,12 @@ class SpecialUndelete extends SpecialPage { $misc = Html::hidden( 'target', $this->mTarget ); $misc .= Html::hidden( 'wpEditToken', $this->getUser()->getEditToken() ); $history .= $misc; - } - - $form->appendContent( new OOUI\HtmlSnippet( $history ) ); - $out->addHTML( $form ); + $form->appendContent( new OOUI\HtmlSnippet( $history ) ); + $out->addHTML( $form ); + } else { + $out->addHTML( $history ); + } return true; } diff --git a/includes/specials/SpecialUnlinkAccounts.php b/includes/specials/SpecialUnlinkAccounts.php index 86bc7ed30f..b159fff1bd 100644 --- a/includes/specials/SpecialUnlinkAccounts.php +++ b/includes/specials/SpecialUnlinkAccounts.php @@ -21,6 +21,7 @@ class SpecialUnlinkAccounts extends AuthManagerSpecialPage { /** * Under which header this special page is listed in Special:SpecialPages. + * @return string */ protected function getGroupName() { return 'users'; diff --git a/includes/specials/SpecialUpload.php b/includes/specials/SpecialUpload.php index 073e58df15..024034a628 100644 --- a/includes/specials/SpecialUpload.php +++ b/includes/specials/SpecialUpload.php @@ -22,7 +22,6 @@ * @ingroup Upload */ -use MediaWiki\Linker\LinkRenderer; use MediaWiki\MediaWikiServices; /** @@ -33,7 +32,6 @@ use MediaWiki\MediaWikiServices; */ class SpecialUpload extends SpecialPage { /** - * Constructor : initialise object * Get data POSTed through the form and assign them to the object * @param WebRequest $request Data posted. */ @@ -346,15 +344,16 @@ class SpecialUpload extends SpecialPage { $stashStatus = $this->mUpload->tryStashFile( $this->getUser() ); if ( $stashStatus->isGood() ) { $sessionKey = $stashStatus->getValue()->getFileKey(); + $uploadWarning = 'upload-tryagain'; } else { $sessionKey = null; - // TODO Add a warning message about the failure to stash here? + $uploadWarning = 'upload-tryagain-nostash'; } $message = '

    ' . $this->msg( 'uploaderror' )->escaped() . "

    \n" . '
    ' . $message . "
    \n"; $form = $this->getUploadForm( $message, $sessionKey ); - $form->setSubmitText( $this->msg( 'upload-tryagain' )->escaped() ); + $form->setSubmitText( $this->msg( $uploadWarning )->escaped() ); $this->showUploadForm( $form ); } @@ -381,9 +380,10 @@ class SpecialUpload extends SpecialPage { $stashStatus = $this->mUpload->tryStashFile( $this->getUser() ); if ( $stashStatus->isGood() ) { $sessionKey = $stashStatus->getValue()->getFileKey(); + $uploadWarning = 'uploadwarning-text'; } else { $sessionKey = null; - // TODO Add a warning message about the failure to stash here? + $uploadWarning = 'uploadwarning-text-nostash'; } // Add styles for the warning, reused from the live preview @@ -445,7 +445,7 @@ class SpecialUpload extends SpecialPage { $warningHtml .= $msg; } $warningHtml .= "
    \n"; - $warningHtml .= $this->msg( 'uploadwarning-text' )->parseAsBlock(); + $warningHtml .= $this->msg( $uploadWarning )->parseAsBlock(); $form = $this->getUploadForm( $warningHtml, $sessionKey, /* $hideIgnoreWarning */ true ); $form->setSubmitText( $this->msg( 'upload-tryagain' )->text() ); @@ -840,483 +840,10 @@ class SpecialUpload extends SpecialPage { * This controls js: mw.config.get( 'wgFileCanRotate' ) * * @todo What about non-BitmapHandler handled files? + * @return bool */ public static function rotationEnabled() { $bitmapHandler = new BitmapHandler(); return $bitmapHandler->autoRotateEnabled(); } } - -/** - * Sub class of HTMLForm that provides the form section of SpecialUpload - */ -class UploadForm extends HTMLForm { - protected $mWatch; - protected $mForReUpload; - protected $mSessionKey; - protected $mHideIgnoreWarning; - protected $mDestWarningAck; - protected $mDestFile; - - protected $mComment; - protected $mTextTop; - protected $mTextAfterSummary; - - protected $mSourceIds; - - protected $mMaxFileSize = []; - - protected $mMaxUploadSize = []; - - public function __construct( array $options = [], IContextSource $context = null, - LinkRenderer $linkRenderer = null - ) { - if ( $context instanceof IContextSource ) { - $this->setContext( $context ); - } - - if ( !$linkRenderer ) { - $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); - } - - $this->mWatch = !empty( $options['watch'] ); - $this->mForReUpload = !empty( $options['forreupload'] ); - $this->mSessionKey = isset( $options['sessionkey'] ) ? $options['sessionkey'] : ''; - $this->mHideIgnoreWarning = !empty( $options['hideignorewarning'] ); - $this->mDestWarningAck = !empty( $options['destwarningack'] ); - $this->mDestFile = isset( $options['destfile'] ) ? $options['destfile'] : ''; - - $this->mComment = isset( $options['description'] ) ? - $options['description'] : ''; - - $this->mTextTop = isset( $options['texttop'] ) - ? $options['texttop'] : ''; - - $this->mTextAfterSummary = isset( $options['textaftersummary'] ) - ? $options['textaftersummary'] : ''; - - $sourceDescriptor = $this->getSourceSection(); - $descriptor = $sourceDescriptor - + $this->getDescriptionSection() - + $this->getOptionsSection(); - - Hooks::run( 'UploadFormInitDescriptor', [ &$descriptor ] ); - parent::__construct( $descriptor, $context, 'upload' ); - - # Add a link to edit MediaWiki:Licenses - if ( $this->getUser()->isAllowed( 'editinterface' ) ) { - $this->getOutput()->addModuleStyles( 'mediawiki.special.upload.styles' ); - $licensesLink = $linkRenderer->makeKnownLink( - $this->msg( 'licenses' )->inContentLanguage()->getTitle(), - $this->msg( 'licenses-edit' )->text(), - [], - [ 'action' => 'edit' ] - ); - $editLicenses = '

    ' . $licensesLink . '

    '; - $this->addFooterText( $editLicenses, 'description' ); - } - - # Set some form properties - $this->setSubmitText( $this->msg( 'uploadbtn' )->text() ); - $this->setSubmitName( 'wpUpload' ); - # Used message keys: 'accesskey-upload', 'tooltip-upload' - $this->setSubmitTooltip( 'upload' ); - $this->setId( 'mw-upload-form' ); - - # Build a list of IDs for javascript insertion - $this->mSourceIds = []; - foreach ( $sourceDescriptor as $field ) { - if ( !empty( $field['id'] ) ) { - $this->mSourceIds[] = $field['id']; - } - } - } - - /** - * Get the descriptor of the fieldset that contains the file source - * selection. The section is 'source' - * - * @return array Descriptor array - */ - protected function getSourceSection() { - if ( $this->mSessionKey ) { - return [ - 'SessionKey' => [ - 'type' => 'hidden', - 'default' => $this->mSessionKey, - ], - 'SourceType' => [ - 'type' => 'hidden', - 'default' => 'Stash', - ], - ]; - } - - $canUploadByUrl = UploadFromUrl::isEnabled() - && ( UploadFromUrl::isAllowed( $this->getUser() ) === true ) - && $this->getConfig()->get( 'CopyUploadsFromSpecialUpload' ); - $radio = $canUploadByUrl; - $selectedSourceType = strtolower( $this->getRequest()->getText( 'wpSourceType', 'File' ) ); - - $descriptor = []; - if ( $this->mTextTop ) { - $descriptor['UploadFormTextTop'] = [ - 'type' => 'info', - 'section' => 'source', - 'default' => $this->mTextTop, - 'raw' => true, - ]; - } - - $this->mMaxUploadSize['file'] = min( - UploadBase::getMaxUploadSize( 'file' ), - UploadBase::getMaxPhpUploadSize() - ); - - $help = $this->msg( 'upload-maxfilesize', - $this->getContext()->getLanguage()->formatSize( $this->mMaxUploadSize['file'] ) - )->parse(); - - // If the user can also upload by URL, there are 2 different file size limits. - // This extra message helps stress which limit corresponds to what. - if ( $canUploadByUrl ) { - $help .= $this->msg( 'word-separator' )->escaped(); - $help .= $this->msg( 'upload_source_file' )->parse(); - } - - $descriptor['UploadFile'] = [ - 'class' => 'UploadSourceField', - 'section' => 'source', - 'type' => 'file', - 'id' => 'wpUploadFile', - 'radio-id' => 'wpSourceTypeFile', - 'label-message' => 'sourcefilename', - 'upload-type' => 'File', - 'radio' => &$radio, - 'help' => $help, - 'checked' => $selectedSourceType == 'file', - ]; - - if ( $canUploadByUrl ) { - $this->mMaxUploadSize['url'] = UploadBase::getMaxUploadSize( 'url' ); - $descriptor['UploadFileURL'] = [ - 'class' => 'UploadSourceField', - 'section' => 'source', - 'id' => 'wpUploadFileURL', - 'radio-id' => 'wpSourceTypeurl', - 'label-message' => 'sourceurl', - 'upload-type' => 'url', - 'radio' => &$radio, - 'help' => $this->msg( 'upload-maxfilesize', - $this->getContext()->getLanguage()->formatSize( $this->mMaxUploadSize['url'] ) - )->parse() . - $this->msg( 'word-separator' )->escaped() . - $this->msg( 'upload_source_url' )->parse(), - 'checked' => $selectedSourceType == 'url', - ]; - } - Hooks::run( 'UploadFormSourceDescriptors', [ &$descriptor, &$radio, $selectedSourceType ] ); - - $descriptor['Extensions'] = [ - 'type' => 'info', - 'section' => 'source', - 'default' => $this->getExtensionsMessage(), - 'raw' => true, - ]; - - return $descriptor; - } - - /** - * Get the messages indicating which extensions are preferred and prohibitted. - * - * @return string HTML string containing the message - */ - protected function getExtensionsMessage() { - # Print a list of allowed file extensions, if so configured. We ignore - # MIME type here, it's incomprehensible to most people and too long. - $config = $this->getConfig(); - - if ( $config->get( 'CheckFileExtensions' ) ) { - $fileExtensions = array_unique( $config->get( 'FileExtensions' ) ); - if ( $config->get( 'StrictFileExtensions' ) ) { - # Everything not permitted is banned - $extensionsList = - '
    ' . - $this->msg( 'upload-permitted' ) - ->params( $this->getLanguage()->commaList( $fileExtensions ) ) - ->numParams( count( $fileExtensions ) ) - ->parseAsBlock() . - "
    \n"; - } else { - # We have to list both preferred and prohibited - $fileBlacklist = array_unique( $config->get( 'FileBlacklist' ) ); - $extensionsList = - '
    ' . - $this->msg( 'upload-preferred' ) - ->params( $this->getLanguage()->commaList( $fileExtensions ) ) - ->numParams( count( $fileExtensions ) ) - ->parseAsBlock() . - "
    \n" . - '
    ' . - $this->msg( 'upload-prohibited' ) - ->params( $this->getLanguage()->commaList( $fileBlacklist ) ) - ->numParams( count( $fileBlacklist ) ) - ->parseAsBlock() . - "
    \n"; - } - } else { - # Everything is permitted. - $extensionsList = ''; - } - - return $extensionsList; - } - - /** - * Get the descriptor of the fieldset that contains the file description - * input. The section is 'description' - * - * @return array Descriptor array - */ - protected function getDescriptionSection() { - $config = $this->getConfig(); - if ( $this->mSessionKey ) { - $stash = RepoGroup::singleton()->getLocalRepo()->getUploadStash( $this->getUser() ); - try { - $file = $stash->getFile( $this->mSessionKey ); - } catch ( Exception $e ) { - $file = null; - } - if ( $file ) { - global $wgContLang; - - $mto = $file->transform( [ 'width' => 120 ] ); - if ( $mto ) { - $this->addHeaderText( - '
    ' . - Html::element( 'img', [ - 'src' => $mto->getUrl(), - 'class' => 'thumbimage', - ] ) . '
    ', 'description' ); - } - } - } - - $descriptor = [ - 'DestFile' => [ - 'type' => 'text', - 'section' => 'description', - 'id' => 'wpDestFile', - 'label-message' => 'destfilename', - 'size' => 60, - 'default' => $this->mDestFile, - # @todo FIXME: Hack to work around poor handling of the 'default' option in HTMLForm - 'nodata' => strval( $this->mDestFile ) !== '', - ], - 'UploadDescription' => [ - 'type' => 'textarea', - 'section' => 'description', - 'id' => 'wpUploadDescription', - 'label-message' => $this->mForReUpload - ? 'filereuploadsummary' - : 'fileuploadsummary', - 'default' => $this->mComment, - 'cols' => 80, - 'rows' => 8, - ] - ]; - if ( $this->mTextAfterSummary ) { - $descriptor['UploadFormTextAfterSummary'] = [ - 'type' => 'info', - 'section' => 'description', - 'default' => $this->mTextAfterSummary, - 'raw' => true, - ]; - } - - $descriptor += [ - 'EditTools' => [ - 'type' => 'edittools', - 'section' => 'description', - 'message' => 'edittools-upload', - ] - ]; - - if ( $this->mForReUpload ) { - $descriptor['DestFile']['readonly'] = true; - } else { - $descriptor['License'] = [ - 'type' => 'select', - 'class' => 'Licenses', - 'section' => 'description', - 'id' => 'wpLicense', - 'label-message' => 'license', - ]; - } - - if ( $config->get( 'UseCopyrightUpload' ) ) { - $descriptor['UploadCopyStatus'] = [ - 'type' => 'text', - 'section' => 'description', - 'id' => 'wpUploadCopyStatus', - 'label-message' => 'filestatus', - ]; - $descriptor['UploadSource'] = [ - 'type' => 'text', - 'section' => 'description', - 'id' => 'wpUploadSource', - 'label-message' => 'filesource', - ]; - } - - return $descriptor; - } - - /** - * Get the descriptor of the fieldset that contains the upload options, - * such as "watch this file". The section is 'options' - * - * @return array Descriptor array - */ - protected function getOptionsSection() { - $user = $this->getUser(); - if ( $user->isLoggedIn() ) { - $descriptor = [ - 'Watchthis' => [ - 'type' => 'check', - 'id' => 'wpWatchthis', - 'label-message' => 'watchthisupload', - 'section' => 'options', - 'default' => $this->mWatch, - ] - ]; - } - if ( !$this->mHideIgnoreWarning ) { - $descriptor['IgnoreWarning'] = [ - 'type' => 'check', - 'id' => 'wpIgnoreWarning', - 'label-message' => 'ignorewarnings', - 'section' => 'options', - ]; - } - - $descriptor['DestFileWarningAck'] = [ - 'type' => 'hidden', - 'id' => 'wpDestFileWarningAck', - 'default' => $this->mDestWarningAck ? '1' : '', - ]; - - if ( $this->mForReUpload ) { - $descriptor['ForReUpload'] = [ - 'type' => 'hidden', - 'id' => 'wpForReUpload', - 'default' => '1', - ]; - } - - return $descriptor; - } - - /** - * Add the upload JS and show the form. - */ - public function show() { - $this->addUploadJS(); - parent::show(); - } - - /** - * Add upload JS to the OutputPage - */ - protected function addUploadJS() { - $config = $this->getConfig(); - - $useAjaxDestCheck = $config->get( 'UseAjax' ) && $config->get( 'AjaxUploadDestCheck' ); - $useAjaxLicensePreview = $config->get( 'UseAjax' ) && - $config->get( 'AjaxLicensePreview' ) && $config->get( 'EnableAPI' ); - $this->mMaxUploadSize['*'] = UploadBase::getMaxUploadSize(); - - $scriptVars = [ - 'wgAjaxUploadDestCheck' => $useAjaxDestCheck, - 'wgAjaxLicensePreview' => $useAjaxLicensePreview, - 'wgUploadAutoFill' => !$this->mForReUpload && - // If we received mDestFile from the request, don't autofill - // the wpDestFile textbox - $this->mDestFile === '', - 'wgUploadSourceIds' => $this->mSourceIds, - 'wgCheckFileExtensions' => $config->get( 'CheckFileExtensions' ), - 'wgStrictFileExtensions' => $config->get( 'StrictFileExtensions' ), - 'wgFileExtensions' => array_values( array_unique( $config->get( 'FileExtensions' ) ) ), - 'wgCapitalizeUploads' => MWNamespace::isCapitalized( NS_FILE ), - 'wgMaxUploadSize' => $this->mMaxUploadSize, - 'wgFileCanRotate' => SpecialUpload::rotationEnabled(), - ]; - - $out = $this->getOutput(); - $out->addJsConfigVars( $scriptVars ); - - $out->addModules( [ - 'mediawiki.action.edit', // For support - 'mediawiki.special.upload', // Extras for thumbnail and license preview. - ] ); - } - - /** - * Empty function; submission is handled elsewhere. - * - * @return bool False - */ - function trySubmit() { - return false; - } -} - -/** - * A form field that contains a radio box in the label - */ -class UploadSourceField extends HTMLTextField { - - /** - * @param array $cellAttributes - * @return string - */ - function getLabelHtml( $cellAttributes = [] ) { - $id = $this->mParams['id']; - $label = Html::rawElement( 'label', [ 'for' => $id ], $this->mLabel ); - - if ( !empty( $this->mParams['radio'] ) ) { - if ( isset( $this->mParams['radio-id'] ) ) { - $radioId = $this->mParams['radio-id']; - } else { - // Old way. For the benefit of extensions that do not define - // the 'radio-id' key. - $radioId = 'wpSourceType' . $this->mParams['upload-type']; - } - - $attribs = [ - 'name' => 'wpSourceType', - 'type' => 'radio', - 'id' => $radioId, - 'value' => $this->mParams['upload-type'], - ]; - - if ( !empty( $this->mParams['checked'] ) ) { - $attribs['checked'] = 'checked'; - } - - $label .= Html::element( 'input', $attribs ); - } - - return Html::rawElement( 'td', [ 'class' => 'mw-label' ] + $cellAttributes, $label ); - } - - /** - * @return int - */ - function getSize() { - return isset( $this->mParams['size'] ) - ? $this->mParams['size'] - : 60; - } -} diff --git a/includes/specials/SpecialVersion.php b/includes/specials/SpecialVersion.php index 30c4a0be8f..f176b40755 100644 --- a/includes/specials/SpecialVersion.php +++ b/includes/specials/SpecialVersion.php @@ -203,6 +203,7 @@ class SpecialVersion extends SpecialPage { 'Roan Kattouw', 'Trevor Parscal', 'Bryan Tong Minh', 'Sam Reed', 'Victor Vasiliev', 'Rotem Liss', 'Platonides', 'Antoine Musso', 'Timo Tijhof', 'Daniel Kinzler', 'Jeroen De Dauw', 'Brad Jorsch', + 'Bartosz Dziewoński', 'Ed Sanders', 'Moriel Schottlender', $othersLink, $translatorsLink ]; @@ -840,7 +841,7 @@ class SpecialVersion extends SpecialPage { // Finally! Create the table $html = Html::openElement( 'tr', [ 'class' => 'mw-version-ext', - 'id' => Sanitizer::escapeId( 'mw-version-ext-' . $type . '-' . $extension['name'] ) + 'id' => Sanitizer::escapeIdForAttribute( 'mw-version-ext-' . $type . '-' . $extension['name'] ) ] ); diff --git a/includes/specials/SpecialWantedfiles.php b/includes/specials/SpecialWantedfiles.php index 6d481f8fdc..2ebbc2d86c 100644 --- a/includes/specials/SpecialWantedfiles.php +++ b/includes/specials/SpecialWantedfiles.php @@ -74,6 +74,7 @@ class WantedFilesPage extends WantedQueryPage { * In its own function to allow subclasses to override. * @see SpecialWantedFilesGUOverride in GlobalUsage extension. * @since 1.24 + * @return bool */ protected function likelyToHaveFalsePositives() { return RepoGroup::singleton()->hasForeignRepos(); @@ -99,6 +100,7 @@ class WantedFilesPage extends WantedQueryPage { * Use wfFindFile so we still think file namespace pages without * files are missing, but valid file redirects and foreign files are ok. * + * @param Title $title * @return bool */ protected function existenceCheck( Title $title ) { diff --git a/includes/specials/SpecialWatchlist.php b/includes/specials/SpecialWatchlist.php index 65131ec25f..4f4570e3f8 100644 --- a/includes/specials/SpecialWatchlist.php +++ b/includes/specials/SpecialWatchlist.php @@ -32,8 +32,14 @@ use Wikimedia\Rdbms\IDatabase; * @ingroup SpecialPage */ class SpecialWatchlist extends ChangesListSpecialPage { + protected static $savedQueriesPreferenceName = 'rcfilters-wl-saved-queries'; + + private $maxDays; + public function __construct( $page = 'Watchlist', $restriction = 'viewmywatchlist' ) { parent::__construct( $page, $restriction ); + + $this->maxDays = $this->getConfig()->get( 'RCMaxAge' ) / ( 3600 * 24 ); } public function doesWrites() { @@ -56,6 +62,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 ) { @@ -90,6 +97,28 @@ class SpecialWatchlist extends ChangesListSpecialPage { } parent::execute( $subpage ); + + if ( $this->isStructuredFilterUiEnabled() ) { + $output->addModuleStyles( [ 'mediawiki.rcfilters.highlightCircles.seenunseen.styles' ] ); + + $output->addJsConfigVars( 'wgStructuredChangeFiltersLiveUpdateSupported', false ); + $output->addJsConfigVars( + 'wgStructuredChangeFiltersEditWatchlistUrl', + SpecialPage::getTitleFor( 'EditWatchlist' )->getLocalURL() + ); + } + } + + public function isStructuredFilterUiEnabled() { + return $this->getRequest()->getBool( 'rcfilters' ) || ( + $this->getConfig()->get( 'StructuredChangeFiltersOnWatchlist' ) && + $this->getUser()->getOption( 'rcenhancedfilters' ) + ); + } + + public function isStructuredFilterUiEnabledByDefault() { + return $this->getConfig()->get( 'StructuredChangeFiltersOnWatchlist' ) && + $this->getUser()->getDefaultOption( 'rcenhancedfilters' ); } /** @@ -107,7 +136,7 @@ class SpecialWatchlist extends ChangesListSpecialPage { } /** - * @inheritdoc + * @inheritDoc */ protected function transformFilterDefinition( array $filterDefinition ) { if ( isset( $filterDefinition['showHideSuffix'] ) ) { @@ -118,11 +147,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' ); @@ -165,14 +275,19 @@ class SpecialWatchlist extends ChangesListSpecialPage { */ public function getDefaultOptions() { $opts = parent::getDefaultOptions(); - $user = $this->getUser(); - $opts->add( 'days', $user->getOption( 'watchlistdays' ), FormOptions::FLOAT ); - $opts->add( 'extended', $user->getBoolOption( 'extendwatchlist' ) ); + $opts->add( 'days', $this->getDefaultDays(), FormOptions::FLOAT ); + $opts->add( 'limit', $this->getDefaultLimit(), FormOptions::INT ); return $opts; } + public function validateOptions( FormOptions $opts ) { + $opts->validateBounds( 'days', 0, $this->maxDays ); + $opts->validateIntBounds( 'limit', 0, 5000 ); + parent::validateOptions( $opts ); + } + /** * Get all custom filters * @@ -225,8 +340,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; + } } } } @@ -243,7 +361,7 @@ class SpecialWatchlist extends ChangesListSpecialPage { } /** - * @inheritdoc + * @inheritDoc */ protected function buildQuery( &$tables, &$fields, &$conds, &$query_options, &$join_conds, FormOptions $opts @@ -255,12 +373,12 @@ class SpecialWatchlist extends ChangesListSpecialPage { // Calculate cutoff if ( $opts['days'] > 0 ) { $conds[] = 'rc_timestamp > ' . - $dbr->addQuotes( $dbr->timestamp( time() - intval( $opts['days'] * 86400 ) ) ); + $dbr->addQuotes( $dbr->timestamp( time() - $opts['days'] * 3600 * 24 ) ); } } /** - * @inheritdoc + * @inheritDoc */ protected function doMainQuery( $tables, $fields, $conds, $query_options, $join_conds, FormOptions $opts @@ -268,31 +386,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' => [ @@ -307,21 +403,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. @@ -339,17 +425,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, @@ -426,6 +534,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' ) @@ -435,6 +560,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 ) { @@ -495,23 +625,50 @@ 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::openElement( + 'fieldset', + [ 'id' => 'mw-watchlist-options', 'class' => 'cloptions' ] + ); + $form .= Xml::element( + 'legend', null, $this->msg( 'watchlist-options' )->text() + ); + + if ( !$this->isStructuredFilterUiEnabled() ) { + $form .= $this->makeLegend(); + } + $lang = $this->getLanguage(); if ( $opts['days'] > 0 ) { $days = $opts['days']; } else { - $days = $this->getConfig()->get( 'RCMaxAge' ) / ( 3600 * 24 ); + $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() ) { @@ -522,7 +679,8 @@ class SpecialWatchlist extends ChangesListSpecialPage { $nondefaults, $filter->getShowHide(), $filterName, - $opts[$filterName] + $opts[$filterName], + $filter->isFeatureAvailableOnStructuredUi( $this ) ); } } @@ -539,17 +697,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' => '', @@ -560,27 +720,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 ); } @@ -591,7 +790,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 @@ -599,7 +798,7 @@ class SpecialWatchlist extends ChangesListSpecialPage { $days[] = $userWatchlistOption; } - $maxDays = (string)( $this->getConfig()->get( 'RCMaxAge' ) / ( 3600 * 24 ) ); + $maxDays = (string)$this->maxDays; // add the maximum possible value, if it isn't available already if ( !in_array( $maxDays, $days ) ) { $days[] = $maxDays; @@ -632,28 +831,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', @@ -669,32 +876,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 + ) + ); } /** @@ -709,4 +911,12 @@ class SpecialWatchlist extends ChangesListSpecialPage { $count = $store->countWatchedItems( $this->getUser() ); return floor( $count / 2 ); } + + function getDefaultLimit() { + return $this->getUser()->getIntOption( 'wllimit' ); + } + + function getDefaultDays() { + return floatval( $this->getUser()->getOption( 'watchlistdays' ) ); + } } diff --git a/includes/specials/formfields/EditWatchlistCheckboxSeriesField.php b/includes/specials/formfields/EditWatchlistCheckboxSeriesField.php new file mode 100644 index 0000000000..cb93bb2cee --- /dev/null +++ b/includes/specials/formfields/EditWatchlistCheckboxSeriesField.php @@ -0,0 +1,37 @@ + + * @copyright Copyright © 2005, Ævar Arnfjörð Bjarmason + * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later + */ + +/** + * A License class for use on Special:Upload + */ +class Licenses extends HTMLFormField { + /** @var string */ + protected $msg; + + /** @var array */ + protected $licenses = []; + + /** @var string */ + protected $html; + /**#@-*/ + + /** + * @param array $params + */ + public function __construct( $params ) { + parent::__construct( $params ); + + $this->msg = empty( $params['licenses'] ) + ? wfMessage( 'licenses' )->inContentLanguage()->plain() + : $params['licenses']; + $this->selected = null; + + $this->makeLicenses(); + } + + /** + * @private + */ + protected function makeLicenses() { + $levels = []; + $lines = explode( "\n", $this->msg ); + + foreach ( $lines as $line ) { + if ( strpos( $line, '*' ) !== 0 ) { + continue; + } else { + list( $level, $line ) = $this->trimStars( $line ); + + if ( strpos( $line, '|' ) !== false ) { + $obj = new License( $line ); + $this->stackItem( $this->licenses, $levels, $obj ); + } else { + if ( $level < count( $levels ) ) { + $levels = array_slice( $levels, 0, $level ); + } + if ( $level == count( $levels ) ) { + $levels[$level - 1] = $line; + } elseif ( $level > count( $levels ) ) { + $levels[] = $line; + } + } + } + } + } + + /** + * @param string $str + * @return array + */ + protected function trimStars( $str ) { + $numStars = strspn( $str, '*' ); + return [ $numStars, ltrim( substr( $str, $numStars ), ' ' ) ]; + } + + /** + * @param array &$list + * @param array $path + * @param mixed $item + */ + protected function stackItem( &$list, $path, $item ) { + $position =& $list; + if ( $path ) { + foreach ( $path as $key ) { + $position =& $position[$key]; + } + } + $position[] = $item; + } + + /** + * @param array $tagset + * @param int $depth + */ + protected function makeHtml( $tagset, $depth = 0 ) { + foreach ( $tagset as $key => $val ) { + if ( is_array( $val ) ) { + $this->html .= $this->outputOption( + $key, '', + [ + 'disabled' => 'disabled', + 'style' => 'color: GrayText', // for MSIE + ], + $depth + ); + $this->makeHtml( $val, $depth + 1 ); + } else { + $this->html .= $this->outputOption( + $val->text, $val->template, + [ 'title' => '{{' . $val->template . '}}' ], + $depth + ); + } + } + } + + /** + * @param string $message + * @param string $value + * @param null|array $attribs + * @param int $depth + * @return string + */ + protected function outputOption( $message, $value, $attribs = null, $depth = 0 ) { + $msgObj = $this->msg( $message ); + $text = $msgObj->exists() ? $msgObj->text() : $message; + $attribs['value'] = $value; + if ( $value === $this->selected ) { + $attribs['selected'] = 'selected'; + } + + $val = str_repeat( /*   */ "\xc2\xa0", $depth * 2 ) . $text; + return str_repeat( "\t", $depth ) . Xml::element( 'option', $attribs, $val ) . "\n"; + } + + /**#@-*/ + + /** + * Accessor for $this->licenses + * + * @return array + */ + public function getLicenses() { + return $this->licenses; + } + + /** + * Accessor for $this->html + * + * @param bool $value + * + * @return string + */ + public function getInputHTML( $value ) { + $this->selected = $value; + + $this->html = $this->outputOption( wfMessage( 'nolicense' )->text(), '', + (bool)$this->selected ? null : [ 'selected' => 'selected' ] ); + $this->makeHtml( $this->getLicenses() ); + + $attribs = [ + 'name' => $this->mName, + 'id' => $this->mID + ]; + if ( !empty( $this->mParams['disabled'] ) ) { + $attibs['disabled'] = 'disabled'; + } + + return Html::rawElement( 'select', $attribs, $this->html ); + } +} diff --git a/includes/specials/formfields/UploadSourceField.php b/includes/specials/formfields/UploadSourceField.php new file mode 100644 index 0000000000..251a28667a --- /dev/null +++ b/includes/specials/formfields/UploadSourceField.php @@ -0,0 +1,68 @@ +mParams['id']; + $label = Html::rawElement( 'label', [ 'for' => $id ], $this->mLabel ); + + if ( !empty( $this->mParams['radio'] ) ) { + if ( isset( $this->mParams['radio-id'] ) ) { + $radioId = $this->mParams['radio-id']; + } else { + // Old way. For the benefit of extensions that do not define + // the 'radio-id' key. + $radioId = 'wpSourceType' . $this->mParams['upload-type']; + } + + $attribs = [ + 'name' => 'wpSourceType', + 'type' => 'radio', + 'id' => $radioId, + 'value' => $this->mParams['upload-type'], + ]; + + if ( !empty( $this->mParams['checked'] ) ) { + $attribs['checked'] = 'checked'; + } + + $label .= Html::element( 'input', $attribs ); + } + + return Html::rawElement( 'td', [ 'class' => 'mw-label' ] + $cellAttributes, $label ); + } + + /** + * @return int + */ + function getSize() { + return isset( $this->mParams['size'] ) + ? $this->mParams['size'] + : 60; + } +} diff --git a/includes/specials/forms/EditWatchlistNormalHTMLForm.php b/includes/specials/forms/EditWatchlistNormalHTMLForm.php new file mode 100644 index 0000000000..723093a772 --- /dev/null +++ b/includes/specials/forms/EditWatchlistNormalHTMLForm.php @@ -0,0 +1,36 @@ +msg( 'blanknamespace' )->escaped() + : htmlspecialchars( $this->getContext()->getLanguage()->getFormattedNsText( $namespace ) ); + } + + public function getBody() { + return $this->displaySection( $this->mFieldTree, '', 'editwatchlist-' ); + } +} diff --git a/includes/specials/forms/PreferencesForm.php b/includes/specials/forms/PreferencesForm.php new file mode 100644 index 0000000000..d4e5ef4fdd --- /dev/null +++ b/includes/specials/forms/PreferencesForm.php @@ -0,0 +1,143 @@ +modifiedUser = $user; + } + + /** + * @return User + */ + public function getModifiedUser() { + if ( $this->modifiedUser === null ) { + return $this->getUser(); + } else { + return $this->modifiedUser; + } + } + + /** + * Get extra parameters for the query string when redirecting after + * successful save. + * + * @return array + */ + public function getExtraSuccessRedirectParameters() { + return []; + } + + /** + * @param string $html + * @return string + */ + function wrapForm( $html ) { + $html = Xml::tags( 'div', [ 'id' => 'preferences' ], $html ); + + return parent::wrapForm( $html ); + } + + /** + * @return string + */ + function getButtons() { + $attrs = [ 'id' => 'mw-prefs-restoreprefs' ]; + + if ( !$this->getModifiedUser()->isAllowedAny( 'editmyprivateinfo', 'editmyoptions' ) ) { + return ''; + } + + $html = parent::getButtons(); + + if ( $this->getModifiedUser()->isAllowed( 'editmyoptions' ) ) { + $t = $this->getTitle()->getSubpage( 'reset' ); + + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); + $html .= "\n" . $linkRenderer->makeLink( $t, $this->msg( 'restoreprefs' )->text(), + Html::buttonAttributes( $attrs, [ 'mw-ui-quiet' ] ) ); + + $html = Xml::tags( 'div', [ 'class' => 'mw-prefs-buttons' ], $html ); + } + + return $html; + } + + /** + * Separate multi-option preferences into multiple preferences, since we + * have to store them separately + * @param array $data + * @return array + */ + function filterDataForSubmit( $data ) { + foreach ( $this->mFlatFields as $fieldname => $field ) { + if ( $field instanceof HTMLNestedFilterable ) { + $info = $field->mParams; + $prefix = isset( $info['prefix'] ) ? $info['prefix'] : $fieldname; + foreach ( $field->filterDataForSubmit( $data[$fieldname] ) as $key => $value ) { + $data["$prefix$key"] = $value; + } + unset( $data[$fieldname] ); + } + } + + return $data; + } + + /** + * Get the whole body of the form. + * @return string + */ + function getBody() { + return $this->displaySection( $this->mFieldTree, '', 'mw-prefsection-' ); + } + + /** + * Get the "" for a given section key. Normally this is the + * prefs-$key message but we'll allow extensions to override it. + * @param string $key + * @return string + */ + function getLegend( $key ) { + $legend = parent::getLegend( $key ); + Hooks::run( 'PreferencesGetLegend', [ $this, $key, &$legend ] ); + return $legend; + } + + /** + * Get the keys of each top level preference section. + * @return array of section keys + */ + function getPreferenceSections() { + return array_keys( array_filter( $this->mFieldTree, 'is_array' ) ); + } +} diff --git a/includes/specials/forms/UploadForm.php b/includes/specials/forms/UploadForm.php new file mode 100644 index 0000000000..44d91a8a26 --- /dev/null +++ b/includes/specials/forms/UploadForm.php @@ -0,0 +1,446 @@ +setContext( $context ); + } + + if ( !$linkRenderer ) { + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); + } + + $this->mWatch = !empty( $options['watch'] ); + $this->mForReUpload = !empty( $options['forreupload'] ); + $this->mSessionKey = isset( $options['sessionkey'] ) ? $options['sessionkey'] : ''; + $this->mHideIgnoreWarning = !empty( $options['hideignorewarning'] ); + $this->mDestWarningAck = !empty( $options['destwarningack'] ); + $this->mDestFile = isset( $options['destfile'] ) ? $options['destfile'] : ''; + + $this->mComment = isset( $options['description'] ) ? + $options['description'] : ''; + + $this->mTextTop = isset( $options['texttop'] ) + ? $options['texttop'] : ''; + + $this->mTextAfterSummary = isset( $options['textaftersummary'] ) + ? $options['textaftersummary'] : ''; + + $sourceDescriptor = $this->getSourceSection(); + $descriptor = $sourceDescriptor + + $this->getDescriptionSection() + + $this->getOptionsSection(); + + Hooks::run( 'UploadFormInitDescriptor', [ &$descriptor ] ); + parent::__construct( $descriptor, $context, 'upload' ); + + # Add a link to edit MediaWiki:Licenses + if ( $this->getUser()->isAllowed( 'editinterface' ) ) { + $this->getOutput()->addModuleStyles( 'mediawiki.special.upload.styles' ); + $licensesLink = $linkRenderer->makeKnownLink( + $this->msg( 'licenses' )->inContentLanguage()->getTitle(), + $this->msg( 'licenses-edit' )->text(), + [], + [ 'action' => 'edit' ] + ); + $editLicenses = '

    ' . $licensesLink . '

    '; + $this->addFooterText( $editLicenses, 'description' ); + } + + # Set some form properties + $this->setSubmitText( $this->msg( 'uploadbtn' )->text() ); + $this->setSubmitName( 'wpUpload' ); + # Used message keys: 'accesskey-upload', 'tooltip-upload' + $this->setSubmitTooltip( 'upload' ); + $this->setId( 'mw-upload-form' ); + + # Build a list of IDs for javascript insertion + $this->mSourceIds = []; + foreach ( $sourceDescriptor as $field ) { + if ( !empty( $field['id'] ) ) { + $this->mSourceIds[] = $field['id']; + } + } + } + + /** + * Get the descriptor of the fieldset that contains the file source + * selection. The section is 'source' + * + * @return array Descriptor array + */ + protected function getSourceSection() { + if ( $this->mSessionKey ) { + return [ + 'SessionKey' => [ + 'type' => 'hidden', + 'default' => $this->mSessionKey, + ], + 'SourceType' => [ + 'type' => 'hidden', + 'default' => 'Stash', + ], + ]; + } + + $canUploadByUrl = UploadFromUrl::isEnabled() + && ( UploadFromUrl::isAllowed( $this->getUser() ) === true ) + && $this->getConfig()->get( 'CopyUploadsFromSpecialUpload' ); + $radio = $canUploadByUrl; + $selectedSourceType = strtolower( $this->getRequest()->getText( 'wpSourceType', 'File' ) ); + + $descriptor = []; + if ( $this->mTextTop ) { + $descriptor['UploadFormTextTop'] = [ + 'type' => 'info', + 'section' => 'source', + 'default' => $this->mTextTop, + 'raw' => true, + ]; + } + + $this->mMaxUploadSize['file'] = min( + UploadBase::getMaxUploadSize( 'file' ), + UploadBase::getMaxPhpUploadSize() + ); + + $help = $this->msg( 'upload-maxfilesize', + $this->getContext()->getLanguage()->formatSize( $this->mMaxUploadSize['file'] ) + )->parse(); + + // If the user can also upload by URL, there are 2 different file size limits. + // This extra message helps stress which limit corresponds to what. + if ( $canUploadByUrl ) { + $help .= $this->msg( 'word-separator' )->escaped(); + $help .= $this->msg( 'upload_source_file' )->parse(); + } + + $descriptor['UploadFile'] = [ + 'class' => 'UploadSourceField', + 'section' => 'source', + 'type' => 'file', + 'id' => 'wpUploadFile', + 'radio-id' => 'wpSourceTypeFile', + 'label-message' => 'sourcefilename', + 'upload-type' => 'File', + 'radio' => &$radio, + 'help' => $help, + 'checked' => $selectedSourceType == 'file', + ]; + + if ( $canUploadByUrl ) { + $this->mMaxUploadSize['url'] = UploadBase::getMaxUploadSize( 'url' ); + $descriptor['UploadFileURL'] = [ + 'class' => 'UploadSourceField', + 'section' => 'source', + 'id' => 'wpUploadFileURL', + 'radio-id' => 'wpSourceTypeurl', + 'label-message' => 'sourceurl', + 'upload-type' => 'url', + 'radio' => &$radio, + 'help' => $this->msg( 'upload-maxfilesize', + $this->getContext()->getLanguage()->formatSize( $this->mMaxUploadSize['url'] ) + )->parse() . + $this->msg( 'word-separator' )->escaped() . + $this->msg( 'upload_source_url' )->parse(), + 'checked' => $selectedSourceType == 'url', + ]; + } + Hooks::run( 'UploadFormSourceDescriptors', [ &$descriptor, &$radio, $selectedSourceType ] ); + + $descriptor['Extensions'] = [ + 'type' => 'info', + 'section' => 'source', + 'default' => $this->getExtensionsMessage(), + 'raw' => true, + ]; + + return $descriptor; + } + + /** + * Get the messages indicating which extensions are preferred and prohibitted. + * + * @return string HTML string containing the message + */ + protected function getExtensionsMessage() { + # Print a list of allowed file extensions, if so configured. We ignore + # MIME type here, it's incomprehensible to most people and too long. + $config = $this->getConfig(); + + if ( $config->get( 'CheckFileExtensions' ) ) { + $fileExtensions = array_unique( $config->get( 'FileExtensions' ) ); + if ( $config->get( 'StrictFileExtensions' ) ) { + # Everything not permitted is banned + $extensionsList = + '
    ' . + $this->msg( 'upload-permitted' ) + ->params( $this->getLanguage()->commaList( $fileExtensions ) ) + ->numParams( count( $fileExtensions ) ) + ->parseAsBlock() . + "
    \n"; + } else { + # We have to list both preferred and prohibited + $fileBlacklist = array_unique( $config->get( 'FileBlacklist' ) ); + $extensionsList = + '
    ' . + $this->msg( 'upload-preferred' ) + ->params( $this->getLanguage()->commaList( $fileExtensions ) ) + ->numParams( count( $fileExtensions ) ) + ->parseAsBlock() . + "
    \n" . + '
    ' . + $this->msg( 'upload-prohibited' ) + ->params( $this->getLanguage()->commaList( $fileBlacklist ) ) + ->numParams( count( $fileBlacklist ) ) + ->parseAsBlock() . + "
    \n"; + } + } else { + # Everything is permitted. + $extensionsList = ''; + } + + return $extensionsList; + } + + /** + * Get the descriptor of the fieldset that contains the file description + * input. The section is 'description' + * + * @return array Descriptor array + */ + protected function getDescriptionSection() { + $config = $this->getConfig(); + if ( $this->mSessionKey ) { + $stash = RepoGroup::singleton()->getLocalRepo()->getUploadStash( $this->getUser() ); + try { + $file = $stash->getFile( $this->mSessionKey ); + } catch ( Exception $e ) { + $file = null; + } + if ( $file ) { + global $wgContLang; + + $mto = $file->transform( [ 'width' => 120 ] ); + if ( $mto ) { + $this->addHeaderText( + '
    ' . + Html::element( 'img', [ + 'src' => $mto->getUrl(), + 'class' => 'thumbimage', + ] ) . '
    ', 'description' ); + } + } + } + + $descriptor = [ + 'DestFile' => [ + 'type' => 'text', + 'section' => 'description', + 'id' => 'wpDestFile', + 'label-message' => 'destfilename', + 'size' => 60, + 'default' => $this->mDestFile, + # @todo FIXME: Hack to work around poor handling of the 'default' option in HTMLForm + 'nodata' => strval( $this->mDestFile ) !== '', + ], + 'UploadDescription' => [ + 'type' => 'textarea', + 'section' => 'description', + 'id' => 'wpUploadDescription', + 'label-message' => $this->mForReUpload + ? 'filereuploadsummary' + : 'fileuploadsummary', + 'default' => $this->mComment, + 'cols' => 80, + 'rows' => 8, + ] + ]; + if ( $this->mTextAfterSummary ) { + $descriptor['UploadFormTextAfterSummary'] = [ + 'type' => 'info', + 'section' => 'description', + 'default' => $this->mTextAfterSummary, + 'raw' => true, + ]; + } + + $descriptor += [ + 'EditTools' => [ + 'type' => 'edittools', + 'section' => 'description', + 'message' => 'edittools-upload', + ] + ]; + + if ( $this->mForReUpload ) { + $descriptor['DestFile']['readonly'] = true; + } else { + $descriptor['License'] = [ + 'type' => 'select', + 'class' => 'Licenses', + 'section' => 'description', + 'id' => 'wpLicense', + 'label-message' => 'license', + ]; + } + + if ( $config->get( 'UseCopyrightUpload' ) ) { + $descriptor['UploadCopyStatus'] = [ + 'type' => 'text', + 'section' => 'description', + 'id' => 'wpUploadCopyStatus', + 'label-message' => 'filestatus', + ]; + $descriptor['UploadSource'] = [ + 'type' => 'text', + 'section' => 'description', + 'id' => 'wpUploadSource', + 'label-message' => 'filesource', + ]; + } + + return $descriptor; + } + + /** + * Get the descriptor of the fieldset that contains the upload options, + * such as "watch this file". The section is 'options' + * + * @return array Descriptor array + */ + protected function getOptionsSection() { + $user = $this->getUser(); + if ( $user->isLoggedIn() ) { + $descriptor = [ + 'Watchthis' => [ + 'type' => 'check', + 'id' => 'wpWatchthis', + 'label-message' => 'watchthisupload', + 'section' => 'options', + 'default' => $this->mWatch, + ] + ]; + } + if ( !$this->mHideIgnoreWarning ) { + $descriptor['IgnoreWarning'] = [ + 'type' => 'check', + 'id' => 'wpIgnoreWarning', + 'label-message' => 'ignorewarnings', + 'section' => 'options', + ]; + } + + $descriptor['DestFileWarningAck'] = [ + 'type' => 'hidden', + 'id' => 'wpDestFileWarningAck', + 'default' => $this->mDestWarningAck ? '1' : '', + ]; + + if ( $this->mForReUpload ) { + $descriptor['ForReUpload'] = [ + 'type' => 'hidden', + 'id' => 'wpForReUpload', + 'default' => '1', + ]; + } + + return $descriptor; + } + + /** + * Add the upload JS and show the form. + */ + public function show() { + $this->addUploadJS(); + parent::show(); + } + + /** + * Add upload JS to the OutputPage + */ + protected function addUploadJS() { + $config = $this->getConfig(); + + $useAjaxDestCheck = $config->get( 'UseAjax' ) && $config->get( 'AjaxUploadDestCheck' ); + $useAjaxLicensePreview = $config->get( 'UseAjax' ) && + $config->get( 'AjaxLicensePreview' ) && $config->get( 'EnableAPI' ); + $this->mMaxUploadSize['*'] = UploadBase::getMaxUploadSize(); + + $scriptVars = [ + 'wgAjaxUploadDestCheck' => $useAjaxDestCheck, + 'wgAjaxLicensePreview' => $useAjaxLicensePreview, + 'wgUploadAutoFill' => !$this->mForReUpload && + // If we received mDestFile from the request, don't autofill + // the wpDestFile textbox + $this->mDestFile === '', + 'wgUploadSourceIds' => $this->mSourceIds, + 'wgCheckFileExtensions' => $config->get( 'CheckFileExtensions' ), + 'wgStrictFileExtensions' => $config->get( 'StrictFileExtensions' ), + 'wgFileExtensions' => array_values( array_unique( $config->get( 'FileExtensions' ) ) ), + 'wgCapitalizeUploads' => MWNamespace::isCapitalized( NS_FILE ), + 'wgMaxUploadSize' => $this->mMaxUploadSize, + 'wgFileCanRotate' => SpecialUpload::rotationEnabled(), + ]; + + $out = $this->getOutput(); + $out->addJsConfigVars( $scriptVars ); + + $out->addModules( [ + 'mediawiki.special.upload', // Extras for thumbnail and license preview. + ] ); + } + + /** + * Empty function; submission is handled elsewhere. + * + * @return bool False + */ + function trySubmit() { + return false; + } +} diff --git a/includes/specials/helpers/ImportReporter.php b/includes/specials/helpers/ImportReporter.php new file mode 100644 index 0000000000..63addb8772 --- /dev/null +++ b/includes/specials/helpers/ImportReporter.php @@ -0,0 +1,190 @@ +mOriginalPageOutCallback = + $importer->setPageOutCallback( [ $this, 'reportPage' ] ); + $this->mOriginalLogCallback = + $importer->setLogItemCallback( [ $this, 'reportLogItem' ] ); + $importer->setNoticeCallback( [ $this, 'reportNotice' ] ); + $this->mPageCount = 0; + $this->mIsUpload = $upload; + $this->mInterwiki = $interwiki; + $this->reason = $reason; + } + + /** + * Sets change tags to apply to the import log entry and null revision. + * + * @param array $tags + * @since 1.29 + */ + public function setChangeTags( array $tags ) { + $this->logTags = $tags; + } + + function open() { + $this->getOutput()->addHTML( "
      \n" ); + } + + function reportNotice( $msg, array $params ) { + $this->getOutput()->addHTML( + Html::element( 'li', [], $this->msg( $msg, $params )->text() ) + ); + } + + function reportLogItem( /* ... */ ) { + $this->mLogItemCount++; + if ( is_callable( $this->mOriginalLogCallback ) ) { + call_user_func_array( $this->mOriginalLogCallback, func_get_args() ); + } + } + + /** + * @param Title $title + * @param ForeignTitle $foreignTitle + * @param int $revisionCount + * @param int $successCount + * @param array $pageInfo + * @return void + */ + public function reportPage( $title, $foreignTitle, $revisionCount, + $successCount, $pageInfo ) { + $args = func_get_args(); + call_user_func_array( $this->mOriginalPageOutCallback, $args ); + + if ( $title === null ) { + # Invalid or non-importable title; a notice is already displayed + return; + } + + $this->mPageCount++; + $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer(); + if ( $successCount > 0 ) { + // prevents jumbling of the versions count + // in RTL wikis in case the page title is LTR + $this->getOutput()->addHTML( + "
    • " . $linkRenderer->makeLink( $title ) . " " . + "" . + $this->msg( 'import-revision-count' )->numParams( $successCount )->escaped() . + "" . + "
    • \n" + ); + + $logParams = [ '4:number:count' => $successCount ]; + if ( $this->mIsUpload ) { + $detail = $this->msg( 'import-logentry-upload-detail' )->numParams( + $successCount )->inContentLanguage()->text(); + $action = 'upload'; + } else { + $pageTitle = $foreignTitle->getFullText(); + $fullInterwikiPrefix = $this->mInterwiki; + Hooks::run( 'ImportLogInterwikiLink', [ &$fullInterwikiPrefix, &$pageTitle ] ); + + $interwikiTitleStr = $fullInterwikiPrefix . ':' . $pageTitle; + $interwiki = '[[:' . $interwikiTitleStr . ']]'; + $detail = $this->msg( 'import-logentry-interwiki-detail' )->numParams( + $successCount )->params( $interwiki )->inContentLanguage()->text(); + $action = 'interwiki'; + $logParams['5:title-link:interwiki'] = $interwikiTitleStr; + } + if ( $this->reason ) { + $detail .= $this->msg( 'colon-separator' )->inContentLanguage()->text() + . $this->reason; + } + + $comment = $detail; // quick + $dbw = wfGetDB( DB_MASTER ); + $latest = $title->getLatestRevID(); + $nullRevision = Revision::newNullRevision( + $dbw, + $title->getArticleID(), + $comment, + true, + $this->getUser() + ); + + $nullRevId = null; + if ( !is_null( $nullRevision ) ) { + $nullRevId = $nullRevision->insertOn( $dbw ); + $page = WikiPage::factory( $title ); + # Update page record + $page->updateRevisionOn( $dbw, $nullRevision ); + Hooks::run( + 'NewRevisionFromEditComplete', + [ $page, $nullRevision, $latest, $this->getUser() ] + ); + } + + // Create the import log entry + $logEntry = new ManualLogEntry( 'import', $action ); + $logEntry->setTarget( $title ); + $logEntry->setComment( $this->reason ); + $logEntry->setPerformer( $this->getUser() ); + $logEntry->setParameters( $logParams ); + $logid = $logEntry->insert(); + if ( count( $this->logTags ) ) { + $logEntry->setTags( $this->logTags ); + } + // Make sure the null revision will be tagged as well + $logEntry->setAssociatedRevId( $nullRevId ); + + $logEntry->publish( $logid ); + + } else { + $this->getOutput()->addHTML( "
    • " . $linkRenderer->makeKnownLink( $title ) . " " . + $this->msg( 'import-nonewrevisions' )->escaped() . "
    • \n" ); + } + } + + function close() { + $out = $this->getOutput(); + if ( $this->mLogItemCount > 0 ) { + $msg = $this->msg( 'imported-log-entries' )->numParams( $this->mLogItemCount )->parse(); + $out->addHTML( Xml::tags( 'li', null, $msg ) ); + } elseif ( $this->mPageCount == 0 && $this->mLogItemCount == 0 ) { + $out->addHTML( "
    \n" ); + + return Status::newFatal( 'importnopages' ); + } + $out->addHTML( "\n" ); + + return Status::newGood( $this->mPageCount ); + } +} diff --git a/includes/specials/helpers/License.php b/includes/specials/helpers/License.php new file mode 100644 index 0000000000..4f94b4d232 --- /dev/null +++ b/includes/specials/helpers/License.php @@ -0,0 +1,46 @@ + + * @copyright Copyright © 2005, Ævar Arnfjörð Bjarmason + * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later + */ + +/** + * A License class for use on Special:Upload (represents a single type of license). + */ +class License { + /** @var string */ + public $template; + + /** @var string */ + public $text; + + /** + * @param string $str License name?? + */ + function __construct( $str ) { + list( $text, $template ) = explode( '|', strrev( $str ), 2 ); + + $this->template = strrev( $template ); + $this->text = strrev( $text ); + } +} 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/ActiveUsersPager.php b/includes/specials/pagers/ActiveUsersPager.php index 0665e112ee..64af71a16a 100644 --- a/includes/specials/pagers/ActiveUsersPager.php +++ b/includes/specials/pagers/ActiveUsersPager.php @@ -118,16 +118,15 @@ class ActiveUsersPager extends UsersPager { ) . ')'; } - if ( $dbr->implicitGroupby() ) { - $options = [ 'GROUP BY' => [ 'qcc_title' ] ]; - } else { - $options = [ 'GROUP BY' => [ 'user_name', 'user_id', 'qcc_title' ] ]; - } - return [ 'tables' => $tables, - 'fields' => [ 'user_name', 'user_id', 'recentedits' => 'COUNT(*)', 'qcc_title' ], - 'options' => $options, + 'fields' => [ + 'qcc_title', + 'user_name' => 'qcc_title', + 'user_id' => 'MAX(user_id)', + 'recentedits' => 'COUNT(*)' + ], + 'options' => [ 'GROUP BY' => [ 'qcc_title' ] ], 'conds' => $conds ]; } diff --git a/includes/specials/pagers/AllMessagesTablePager.php b/includes/specials/pagers/AllMessagesTablePager.php index ca1b7dca9d..e6a0f0be51 100644 --- a/includes/specials/pagers/AllMessagesTablePager.php +++ b/includes/specials/pagers/AllMessagesTablePager.php @@ -375,7 +375,9 @@ class AllMessagesTablePager extends TablePager { } if ( !$isSecond ) { - $arr['id'] = Sanitizer::escapeId( 'msg_' . $this->getLanguage()->lcfirst( $row->am_title ) ); + $arr['id'] = Sanitizer::escapeIdForAttribute( + 'msg_' . $this->getLanguage()->lcfirst( $row->am_title ) + ); } return $arr; diff --git a/includes/specials/pagers/BlockListPager.php b/includes/specials/pagers/BlockListPager.php index 51e446d593..924fd06cf0 100644 --- a/includes/specials/pagers/BlockListPager.php +++ b/includes/specials/pagers/BlockListPager.php @@ -79,7 +79,7 @@ class BlockListPager extends TablePager { } } - /** @var $row object */ + /** @var object $row */ $row = $this->mCurrentRow; $language = $this->getLanguage(); @@ -173,6 +173,7 @@ class BlockListPager extends TablePager { break; case 'ipb_reason': + $value = CommentStore::newKey( 'ipb_reason' )->getComment( $row )->text; $formatted = Linker::formatComment( $value ); break; @@ -208,8 +209,10 @@ class BlockListPager extends TablePager { } function getQueryInfo() { + $commentQuery = CommentStore::newKey( 'ipb_reason' )->getJoin(); + $info = [ - 'tables' => [ 'ipblocks', 'user' ], + 'tables' => [ 'ipblocks', 'user' ] + $commentQuery['tables'], 'fields' => [ 'ipb_id', 'ipb_address', @@ -217,7 +220,6 @@ class BlockListPager extends TablePager { 'ipb_by', 'ipb_by_text', 'by_user_name' => 'user_name', - 'ipb_reason', 'ipb_timestamp', 'ipb_auto', 'ipb_anon_only', @@ -229,9 +231,9 @@ class BlockListPager extends TablePager { 'ipb_deleted', 'ipb_block_email', 'ipb_allow_usertalk', - ], + ] + $commentQuery['fields'], 'conds' => $this->conds, - 'join_conds' => [ 'user' => [ 'LEFT JOIN', 'user_id = ipb_by' ] ] + 'join_conds' => [ 'user' => [ 'LEFT JOIN', 'user_id = ipb_by' ] ] + $commentQuery['joins'] ]; # Filter out any expired blocks diff --git a/includes/specials/pagers/ContribsPager.php b/includes/specials/pagers/ContribsPager.php index 6bd7eb0e9f..979460cf8a 100644 --- a/includes/specials/pagers/ContribsPager.php +++ b/includes/specials/pagers/ContribsPager.php @@ -87,6 +87,10 @@ class ContribsPager extends RangeChronologicalPager { } $this->getDateRangeCond( $startTimestamp, $endTimestamp ); + // This property on IndexPager is set by $this->getIndexField() in parent::__construct(). + // We need to reassign it here so that it is used when the actual query is ran. + $this->mIndexField = $this->getIndexField(); + // Most of this code will use the 'contributions' group DB, which can map to replica DBs // with extra user based indexes or partioning by user. The additional metadata // queries should use a regular replica DB since the lookup pattern is not all by user. @@ -207,6 +211,12 @@ class ContribsPager extends RangeChronologicalPager { 'join_conds' => $join_cond ]; + // For IPv6, we use ipc_rev_timestamp on ip_changes as the index field, + // which will be referenced when parsing the results of a query. + if ( self::isQueryableRange( $this->target ) ) { + $queryInfo['fields'][] = 'ipc_rev_timestamp'; + } + ChangeTags::modifyDisplayQuery( $queryInfo['tables'], $queryInfo['fields'], @@ -257,8 +267,18 @@ class ContribsPager extends RangeChronologicalPager { $condition['rev_user'] = $uid; $index = 'user_timestamp'; } else { - $condition['rev_user_text'] = $this->target; - $index = 'usertext_timestamp'; + $ipRangeConds = $this->getIpRangeConds( $this->mDb, $this->target ); + + if ( $ipRangeConds ) { + $tables[] = 'ip_changes'; + $join_conds['ip_changes'] = [ + 'LEFT JOIN', [ 'ipc_rev_id = rev_id' ] + ]; + $condition[] = $ipRangeConds; + } else { + $condition['rev_user_text'] = $this->target; + $index = 'usertext_timestamp'; + } } } @@ -305,8 +325,57 @@ class ContribsPager extends RangeChronologicalPager { return []; } - function getIndexField() { - return 'rev_timestamp'; + /** + * Get SQL conditions for an IP range, if applicable + * @param IDatabase $db + * @param string $ip The IP address or CIDR + * @return string|false SQL for valid IP ranges, false if invalid + */ + private function getIpRangeConds( $db, $ip ) { + // First make sure it is a valid range and they are not outside the CIDR limit + if ( !$this->isQueryableRange( $ip ) ) { + return false; + } + + list( $start, $end ) = IP::parseRange( $ip ); + + return 'ipc_hex BETWEEN ' . $db->addQuotes( $start ) . ' AND ' . $db->addQuotes( $end ); + } + + /** + * Is the given IP a range and within the CIDR limit? + * + * @param string $ipRange + * @return bool True if it is valid + * @since 1.30 + */ + public function isQueryableRange( $ipRange ) { + $limits = $this->getConfig()->get( 'RangeContributionsCIDRLimit' ); + + $bits = IP::parseCIDR( $ipRange )[1]; + if ( + ( $bits === false ) || + ( IP::isIPv4( $ipRange ) && $bits < $limits['IPv4'] ) || + ( IP::isIPv6( $ipRange ) && $bits < $limits['IPv6'] ) + ) { + return false; + } + + return true; + } + + /** + * Override of getIndexField() in IndexPager. + * For IP ranges, it's faster to use the replicated ipc_rev_timestamp + * on the `ip_changes` table than the rev_timestamp on the `revision` table. + * @return string Name of field + */ + public function getIndexField() { + if ( $this->isQueryableRange( $this->target ) ) { + return 'ipc_rev_timestamp'; + } else { + return 'rev_timestamp'; + } } function doBatchLookups() { @@ -315,6 +384,7 @@ class ContribsPager extends RangeChronologicalPager { $parentRevIds = []; $this->mParentLens = []; $batch = new LinkBatch(); + $isIpRange = $this->isQueryableRange( $this->target ); # Give some pointers to make (last) links foreach ( $this->mResult as $row ) { if ( isset( $row->rev_parent_id ) && $row->rev_parent_id ) { @@ -325,6 +395,9 @@ class ContribsPager extends RangeChronologicalPager { if ( $this->contribs === 'newbie' ) { // multiple users $batch->add( NS_USER, $row->user_name ); $batch->add( NS_USER_TALK, $row->user_name ); + } elseif ( $isIpRange ) { + // If this is an IP range, batch the IP's talk page + $batch->add( NS_USER_TALK, $row->rev_user_text ); } $batch->add( $row->page_namespace, $row->page_title ); } @@ -400,6 +473,7 @@ class ContribsPager extends RangeChronologicalPager { # Mark current revisions $topmarktext = ''; $user = $this->getUser(); + if ( $row->rev_id === $row->page_latest ) { $topmarktext .= '' . $this->messages['uctop'] . ''; $classes[] = 'mw-contributions-current'; @@ -473,8 +547,10 @@ class ContribsPager extends RangeChronologicalPager { # Show user names for /newbies as there may be different users. # Note that only unprivileged users have rows with hidden user names excluded. + # When querying for an IP range, we want to always show user and user talk links. $userlink = ''; - if ( $this->contribs == 'newbie' && !$rev->isDeleted( Revision::DELETED_USER ) ) { + if ( ( $this->contribs == 'newbie' && !$rev->isDeleted( Revision::DELETED_USER ) ) + || $this->isQueryableRange( $this->target ) ) { $userlink = ' . . ' . $lang->getDirMark() . Linker::userLink( $rev->getUser(), $rev->getUserText() ); $userlink .= ' ' . $this->msg( 'parentheses' )->rawParams( @@ -583,10 +659,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..1c46f4c3c2 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'] ) ) { @@ -277,13 +286,8 @@ class ImageListPager extends TablePager { } unset( $field ); - $dbr = wfGetDB( DB_REPLICA ); - if ( $dbr->implicitGroupby() ) { - $options = [ 'GROUP BY' => 'img_name' ]; - } else { - $columnlist = preg_grep( '/^img/', array_keys( $this->getFieldNames() ) ); - $options = [ 'GROUP BY' => array_merge( [ 'img_user' ], $columnlist ) ]; - } + $columnlist = preg_grep( '/^img/', array_keys( $this->getFieldNames() ) ); + $options = [ 'GROUP BY' => array_merge( [ 'img_user' ], $columnlist ) ]; $join_conds = [ 'oldimage' => [ 'LEFT JOIN', 'oi_name = img_name' ] ]; } @@ -497,6 +501,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..1587abc0c7 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 @@ -120,7 +120,7 @@ class ProtectedPagesPager extends TablePager { * @throws MWException */ function formatValue( $field, $value ) { - /** @var $row object */ + /** @var object $row */ $row = $this->mCurrentRow; switch ( $field ) { @@ -236,6 +236,7 @@ class ProtectedPagesPager extends TablePager { LogPage::DELETED_COMMENT, $this->getUser() ) ) { + $value = CommentStore::newKey( 'log_comment' )->getComment( $row )->text; $formatted = Linker::formatComment( $value !== null ? $value : '' ); } else { $formatted = $this->msg( 'rev-deleted-comment' )->escaped(); @@ -284,8 +285,10 @@ class ProtectedPagesPager extends TablePager { $conds[] = 'page_namespace=' . $this->mDb->addQuotes( $this->namespace ); } + $commentQuery = CommentStore::newKey( 'log_comment' )->getJoin(); + return [ - 'tables' => [ 'page', 'page_restrictions', 'log_search', 'logging' ], + 'tables' => [ 'page', 'page_restrictions', 'log_search', 'logging' ] + $commentQuery['tables'], 'fields' => [ 'pr_id', 'page_namespace', @@ -297,9 +300,8 @@ class ProtectedPagesPager extends TablePager { 'pr_cascade', 'log_timestamp', 'log_user', - 'log_comment', 'log_deleted', - ], + ] + $commentQuery['fields'], 'conds' => $conds, 'join_conds' => [ 'log_search' => [ @@ -312,7 +314,7 @@ class ProtectedPagesPager extends TablePager { 'ls_log_id = log_id' ] ] - ] + ] + $commentQuery['joins'] ]; } diff --git a/includes/specials/pagers/UsersPager.php b/includes/specials/pagers/UsersPager.php index 7fa03bae34..a68fe66881 100644 --- a/includes/specials/pagers/UsersPager.php +++ b/includes/specials/pagers/UsersPager.php @@ -270,49 +270,50 @@ 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; } - $optionsDefault = []; - if ( $this->editsOnly ) { - $optionsDefault[] = 'editsOnly'; - } - if ( $this->creationSort ) { - $optionsDefault[] = 'creationSort'; - } - if ( $this->mDefaultDirection ) { - $optionsDefault[] = 'desc'; - } - $formDescriptor = [ 'user' => [ 'class' => 'HTMLUserTextField', 'label' => $this->msg( 'listusersfrom' )->text(), 'name' => 'username', - 'value' => $this->requestedUser, + 'default' => $this->requestedUser, ], 'dropdown' => [ - 'label' => $this->msg( 'group' ), + 'label' => $this->msg( 'group' )->text(), 'name' => 'group', - 'value' => $this->requestedGroup, + 'default' => $this->requestedGroup, 'class' => 'HTMLSelectField', 'options' => $groupOptions, ], - 'options' => [ - 'class' => 'HTMLMultiSelectField', - 'options' => [ - $this->msg( 'listusers-editsonly' )->text() => 'editsOnly', - $this->msg( 'listusers-creationsort' )->text() => 'creationSort', - $this->msg( 'listusers-desc' )->text() => 'desc' - ], - 'default' => $optionsDefault + 'editsOnly' => [ + 'type' => 'check', + 'label' => $this->msg( 'listusers-editsonly' )->text(), + 'name' => 'editsOnly', + 'id' => 'editsOnly', + 'default' => $this->editsOnly + ], + 'creationSort' => [ + 'type' => 'check', + 'label' => $this->msg( 'listusers-creationsort' )->text(), + 'name' => 'creationSort', + 'id' => 'creationSort', + 'default' => $this->creationSort + ], + 'desc' => [ + 'type' => 'check', + 'label' => $this->msg( 'listusers-desc' )->text(), + 'name' => 'desc', + 'id' => 'desc', + 'default' => $this->mDefaultDirection ], 'limithiddenfield' => [ 'class' => 'HTMLHiddenField', 'name' => 'limit', - 'value' => $this->mLimit + 'default' => $this->mLimit ] ]; @@ -346,6 +347,7 @@ class UsersPager extends AlphabeticPager { $htmlForm = HTMLForm::factory( 'ooui', $formDescriptor, $this->getContext() ); $htmlForm ->setMethod( 'get' ) + ->setAction( Title::newFromText( $self )->getLocalURL() ) ->setId( 'mw-listusers-form' ) ->setFormIdentifier( 'mw-listusers-form' ) ->suppressDefaultSubmit() 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 b0c12e4c20..fbe92702df 100644 --- a/includes/tidy/Balancer.php +++ b/includes/tidy/Balancer.php @@ -627,6 +627,7 @@ class BalanceElement { /** * Get a string key for the Noah's Ark algorithm + * @return string */ public function getNoahKey() { if ( $this->noahKey === null ) { @@ -710,6 +711,7 @@ class BalanceStack implements IteratorAggregate { /** * Insert a comment at the appropriate place for inserting a node. * @param string $value Content of the comment. + * @return string * @see https://html.spec.whatwg.org/multipage/syntax.html#insert-a-comment */ public function insertComment( $value ) { @@ -721,6 +723,7 @@ class BalanceStack implements IteratorAggregate { * Insert text at the appropriate place for inserting a node. * @param string $value * @param bool $isComment + * @return string * @see https://html.spec.whatwg.org/multipage/syntax.html#appropriate-place-for-inserting-a-node */ public function insertText( $value, $isComment = false ) { @@ -901,6 +904,8 @@ class BalanceStack implements IteratorAggregate { /** * Return the adjusted current node. + * @param string $fragmentContext + * @return string */ public function adjustedCurrentNode( $fragmentContext ) { return ( $fragmentContext && count( $this->elements ) === 1 ) ? @@ -1203,7 +1208,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 +1230,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 @@ -1513,6 +1518,8 @@ class BalanceActiveFormattingElements { * Find and return the last element with the specified tag between the * end of the list and the last marker on the list. * Used when parsing <a> "in body mode". + * @param string $tag + * @return null|Node */ public function findElementByTag( $tag ) { $elt = $this->tail; @@ -1528,7 +1535,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 +2123,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 @@ -2156,7 +2163,7 @@ class Balancer { if ( $this->allowComments && !( $this->inRCDATA || $this->inRAWTEXT ) && - preg_match( Balancer::VALID_COMMENT_REGEX, $x, $regs, PREG_OFFSET_CAPTURE ) && + preg_match( self::VALID_COMMENT_REGEX, $x, $regs, PREG_OFFSET_CAPTURE ) && // verify EOF condition where necessary ( $regs[4][1] < 0 || !$this->bitsIterator->valid() ) ) { @@ -2242,7 +2249,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 +2274,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 dbcf568c05..73bc5f8493 100644 --- a/includes/tidy/RemexCompatMunger.php +++ b/includes/tidy/RemexCompatMunger.php @@ -81,8 +81,6 @@ class RemexCompatMunger implements TreeHandler { ]; /** - * Constructor - * * @param Serializer $serializer */ public function __construct( Serializer $serializer ) { @@ -131,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 ) { @@ -222,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 @@ -315,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/tidy/TidyDriverBase.php b/includes/tidy/TidyDriverBase.php index 6e01894008..f88b673479 100644 --- a/includes/tidy/TidyDriverBase.php +++ b/includes/tidy/TidyDriverBase.php @@ -14,6 +14,7 @@ abstract class TidyDriverBase { /** * Return true if validate() can be used + * @return bool */ public function supportsValidate() { return false; diff --git a/includes/title/MediaWikiTitleCodec.php b/includes/title/MediaWikiTitleCodec.php index dd8b97546b..efc0fd4a71 100644 --- a/includes/title/MediaWikiTitleCodec.php +++ b/includes/title/MediaWikiTitleCodec.php @@ -328,7 +328,6 @@ class MediaWikiTitleCodec implements TitleFormatter, TitleParser { # Disallow Talk:File:x type titles... throw new MalformedTitleException( 'title-invalid-talk-namespace', $text ); } elseif ( $this->interwikiLookup->isValidInterwiki( $x[1] ) ) { - // TODO: get rid of global state! # Disallow Talk:Interwiki:x type titles... throw new MalformedTitleException( 'title-invalid-talk-namespace', $text ); } 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/upload/UploadStash.php b/includes/upload/UploadStash.php index 48477f8faa..755f9fdf7b 100644 --- a/includes/upload/UploadStash.php +++ b/includes/upload/UploadStash.php @@ -290,7 +290,6 @@ class UploadStash { } $this->fileMetadata[$key] = [ - 'us_id' => $dbw->nextSequenceValue( 'uploadstash_us_id_seq' ), 'us_user' => $this->userId, 'us_key' => $key, 'us_orig_path' => $path, diff --git a/includes/user/BotPassword.php b/includes/user/BotPassword.php index 9a955fb928..25625e72c8 100644 --- a/includes/user/BotPassword.php +++ b/includes/user/BotPassword.php @@ -411,7 +411,7 @@ class BotPassword implements IDBAccessObject { * @return array|false */ public static function canonicalizeLoginData( $username, $password ) { - $sep = BotPassword::getSeparator(); + $sep = self::getSeparator(); // the strlen check helps minimize the password information obtainable from timing if ( strlen( $password ) >= 32 && strpos( $username, $sep ) !== false ) { // the separator is not valid in new usernames but might appear in legacy ones diff --git a/includes/user/CentralIdLookup.php b/includes/user/CentralIdLookup.php index 2ced6e2516..618b7f07ed 100644 --- a/includes/user/CentralIdLookup.php +++ b/includes/user/CentralIdLookup.php @@ -157,6 +157,27 @@ abstract class CentralIdLookup implements IDBAccessObject { return $idToName[$id]; } + /** + * Given a an array of central user IDs, return the (local) user names. + * @param int[] $ids Central user IDs + * @param int|User $audience One of the audience constants, or a specific user + * @param int $flags IDBAccessObject read flags + * @return string[] User names + * @since 1.30 + */ + public function namesFromCentralIds( + array $ids, $audience = self::AUDIENCE_PUBLIC, $flags = self::READ_NORMAL + ) { + $idToName = array_fill_keys( $ids, false ); + $names = $this->lookupCentralIds( $idToName, $audience, $flags ); + $names = array_unique( $names ); + $names = array_filter( $names, function ( $name ) { + return $name !== false && $name !== ''; + } ); + + return array_values( $names ); + } + /** * Given a (local) user name, return the central ID * @note There's no requirement that the user name actually exists locally, @@ -174,6 +195,27 @@ abstract class CentralIdLookup implements IDBAccessObject { return $nameToId[$name]; } + /** + * Given an array of (local) user names, return the central IDs. + * @param string[] $names Canonicalized user names + * @param int|User $audience One of the audience constants, or a specific user + * @param int $flags IDBAccessObject read flags + * @return int[] User IDs + * @since 1.30 + */ + public function centralIdsFromNames( + array $names, $audience = self::AUDIENCE_PUBLIC, $flags = self::READ_NORMAL + ) { + $nameToId = array_fill_keys( $names, false ); + $ids = $this->lookupUserNames( $nameToId, $audience, $flags ); + $ids = array_unique( $ids ); + $ids = array_filter( $ids, function ( $id ) { + return $id !== false; + } ); + + return array_values( $ids ); + } + /** * Given a central user ID, return a local User object * @note Unlike nameFromCentralId(), this does guarantee that the local diff --git a/includes/user/User.php b/includes/user/User.php index a1119fafc4..1c894a0f34 100644 --- a/includes/user/User.php +++ b/includes/user/User.php @@ -302,15 +302,9 @@ 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; - /** @var string Indicates type of block (used for eventlogging) - * Permitted values: 'cookie-block', 'proxy-block', 'openproxy-block', 'xff-block', - * 'config-block' - */ - public $blockTrigger = false; - public static $idCacheByName = []; /** @@ -363,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; @@ -425,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 ) { @@ -456,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(); @@ -609,7 +603,7 @@ class User implements IDBAccessObject { ] ); - return $id ? User::newFromId( $id ) : null; + return $id ? self::newFromId( $id ) : null; } /** @@ -765,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 ) { @@ -833,6 +827,16 @@ class User implements IDBAccessObject { || IP::isIPv6( $name ); } + /** + * Is the user an IP range? + * + * @since 1.30 + * @return bool + */ + public function isIPRange() { + return IP::isValidRange( $this->mName ); + } + /** * Is the input a valid username? * @@ -848,7 +852,7 @@ class User implements IDBAccessObject { global $wgContLang, $wgMaxNameChars; if ( $name == '' - || User::isIP( $name ) + || self::isIP( $name ) || strpos( $name, '/' ) !== false || strlen( $name ) > $wgMaxNameChars || $name != $wgContLang->ucfirst( $name ) @@ -1115,17 +1119,17 @@ class User implements IDBAccessObject { case false: break; case 'valid': - if ( !User::isValidUserName( $name ) ) { + if ( !self::isValidUserName( $name ) ) { $name = false; } break; case 'usable': - if ( !User::isUsableName( $name ) ) { + if ( !self::isUsableName( $name ) ) { $name = false; } break; case 'creatable': - if ( !User::isCreatableName( $name ) ) { + if ( !self::isCreatableName( $name ) ) { $name = false; } break; @@ -1258,7 +1262,7 @@ class User implements IDBAccessObject { * Load user and user_group data from the database. * $this->mId must be set, this is how the user is identified. * - * @param integer $flags User::READ_* constant bitfield + * @param int $flags User::READ_* constant bitfield * @return bool True if the user exists, false if the user is anonymous */ public function loadFromDatabase( $flags = self::READ_LATEST ) { @@ -1458,15 +1462,17 @@ class User implements IDBAccessObject { } $oldGroups = $this->getGroups(); // previous groups + $oldUGMs = $this->getGroupMemberships(); foreach ( $toPromote as $group ) { $this->addGroup( $group ); } + $newGroups = array_merge( $oldGroups, $toPromote ); // all groups + $newUGMs = $this->getGroupMemberships(); + // update groups in external authentication database - Hooks::run( 'UserGroupsChanged', [ $this, $toPromote, [], false, false ] ); + Hooks::run( 'UserGroupsChanged', [ $this, $toPromote, [], false, false, $oldUGMs, $newUGMs ] ); AuthManager::callLegacyAuthPlugin( 'updateExternalDBGroups', [ $this, $toPromote ] ); - $newGroups = array_merge( $oldGroups, $toPromote ); // all groups - $logEntry = new ManualLogEntry( 'rights', 'autopromote' ); $logEntry->setPerformer( $this ); $logEntry->setTarget( $this->getUserPage() ); @@ -1597,7 +1603,7 @@ class User implements IDBAccessObject { // since extensions may change the set of searchable namespaces depending // on user groups/permissions. foreach ( $wgNamespacesToBeSearchedDefault as $nsnum => $val ) { - $defOpt['searchNs' . $nsnum] = (boolean)$val; + $defOpt['searchNs' . $nsnum] = (bool)$val; } $defOpt['skin'] = Skin::normalizeKey( $wgDefaultSkin ); @@ -1676,7 +1682,6 @@ class User implements IDBAccessObject { 'address' => $ip, 'systemBlock' => 'proxy', ] ); - $this->blockTrigger = 'proxy-block'; } elseif ( $this->isAnon() && $this->isDnsBlacklisted( $ip ) ) { $block = new Block( [ 'byText' => wfMessage( 'sorbs' )->text(), @@ -1684,7 +1689,6 @@ class User implements IDBAccessObject { 'address' => $ip, 'systemBlock' => 'dnsbl', ] ); - $this->blockTrigger = 'openproxy-block'; } } @@ -1703,7 +1707,6 @@ class User implements IDBAccessObject { # Mangle the reason to alert the user that the block # originated from matching the X-Forwarded-For header. $block->mReason = wfMessage( 'xffblockreason', $block->mReason )->text(); - $this->blockTrigger = 'xff-block'; } } @@ -1719,7 +1722,6 @@ class User implements IDBAccessObject { 'anonOnly' => true, 'systemBlock' => 'wgSoftBlockRanges', ] ); - $this->blockTrigger = 'config-block'; } if ( $block instanceof Block ) { @@ -1733,7 +1735,6 @@ class User implements IDBAccessObject { $this->mBlockedby = ''; $this->mHideName = 0; $this->mAllowUsertalk = false; - $this->blockTrigger = false; } // Avoid PHP 7.1 warning of passing $this by reference @@ -1766,7 +1767,6 @@ class User implements IDBAccessObject { $useBlockCookie = ( $config->get( 'CookieSetOnAutoblock' ) === true ); if ( $blockIsValid && $useBlockCookie ) { // Use the block. - $this->blockTrigger = 'cookie-block'; return $tmpBlock; } else { // If the block is not valid, remove the cookie. @@ -2224,7 +2224,7 @@ class User implements IDBAccessObject { * @return int The user's ID; 0 if the user is anonymous or nonexistent */ public function getId() { - if ( $this->mId === null && $this->mName !== null && User::isIP( $this->mName ) ) { + if ( $this->mId === null && $this->mName !== null && self::isIP( $this->mName ) ) { // Special case, we know the user is anonymous return 0; } elseif ( !$this->isItemLoaded( 'id' ) ) { @@ -3531,7 +3531,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() { @@ -3546,7 +3546,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() { @@ -3673,7 +3673,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 ) { @@ -4121,12 +4121,10 @@ class User implements IDBAccessObject { unset( $params['options'] ); } $dbw = wfGetDB( DB_MASTER ); - $seqVal = $dbw->nextSequenceValue( 'user_user_id_seq' ); $noPass = PasswordFactory::newInvalidPassword()->toString(); $fields = [ - 'user_id' => $seqVal, 'user_name' => $name, 'user_password' => $noPass, 'user_newpassword' => $noPass, @@ -4143,7 +4141,7 @@ class User implements IDBAccessObject { } $dbw->insert( 'user', $fields, __METHOD__, [ 'IGNORE' ] ); if ( $dbw->affectedRows() ) { - $newUser = User::newFromId( $dbw->insertId() ); + $newUser = self::newFromId( $dbw->insertId() ); } else { $newUser = null; } @@ -4191,10 +4189,8 @@ class User implements IDBAccessObject { $noPass = PasswordFactory::newInvalidPassword()->toString(); $dbw = wfGetDB( DB_MASTER ); - $seqVal = $dbw->nextSequenceValue( 'user_user_id_seq' ); $dbw->insert( 'user', [ - 'user_id' => $seqVal, 'user_name' => $this->mName, 'user_password' => $noPass, 'user_newpassword' => $noPass, @@ -5048,7 +5044,7 @@ class User implements IDBAccessObject { // Do nothing } elseif ( $wgGroupsAddToSelf[$group] === true ) { // No idea WHY this would be used, but it's there - $groups['add-self'] = User::getAllGroups(); + $groups['add-self'] = self::getAllGroups(); } elseif ( is_array( $wgGroupsAddToSelf[$group] ) ) { $groups['add-self'] = $wgGroupsAddToSelf[$group]; } @@ -5056,7 +5052,7 @@ class User implements IDBAccessObject { if ( empty( $wgGroupsRemoveFromSelf[$group] ) ) { // Do nothing } elseif ( $wgGroupsRemoveFromSelf[$group] === true ) { - $groups['remove-self'] = User::getAllGroups(); + $groups['remove-self'] = self::getAllGroups(); } elseif ( is_array( $wgGroupsRemoveFromSelf[$group] ) ) { $groups['remove-self'] = $wgGroupsRemoveFromSelf[$group]; } @@ -5077,7 +5073,7 @@ class User implements IDBAccessObject { // compatibility with old "userrights lets you change // everything") // Using array_merge to make the groups reindexed - $all = array_merge( User::getAllGroups() ); + $all = array_merge( self::getAllGroups() ); return [ 'add' => $all, 'remove' => $all, @@ -5323,6 +5319,13 @@ class User implements IDBAccessObject { $data[$row->up_property] = $row->up_value; } } + + // Convert the email blacklist from a new line delimited string + // to an array of ids. + if ( isset( $data['email-blacklist'] ) && $data['email-blacklist'] ) { + $data['email-blacklist'] = array_map( 'intval', explode( "\n", $data['email-blacklist'] ) ); + } + foreach ( $data as $property => $value ) { $this->mOptionOverrides[$property] = $value; $this->mOptions[$property] = $value; @@ -5345,6 +5348,26 @@ class User implements IDBAccessObject { // Not using getOptions(), to keep hidden preferences in database $saveOptions = $this->mOptions; + // Convert usernames to ids. + if ( isset( $this->mOptions['email-blacklist'] ) ) { + if ( $this->mOptions['email-blacklist'] ) { + $value = $this->mOptions['email-blacklist']; + // Email Blacklist may be an array of ids or a string of new line + // delimnated user names. + if ( is_array( $value ) ) { + $ids = array_filter( $value, 'is_numeric' ); + } else { + $lookup = CentralIdLookup::factory(); + $ids = $lookup->centralIdsFromNames( explode( "\n", $value ), $this ); + } + $this->mOptions['email-blacklist'] = $ids; + $saveOptions['email-blacklist'] = implode( "\n", $this->mOptions['email-blacklist'] ); + } else { + // If the blacklist is empty, set it to null rather than an empty string. + $this->mOptions['email-blacklist'] = null; + } + } + // Allow hooks to abort, for instance to save to a global profile. // Reset options to default state before saving. if ( !Hooks::run( 'UserSaveOptions', [ $this, &$saveOptions ] ) ) { @@ -5503,7 +5526,7 @@ class User implements IDBAccessObject { global $wgLang; $groups = []; - foreach ( User::getGroupsWithPermission( $permission ) as $group ) { + foreach ( self::getGroupsWithPermission( $permission ) as $group ) { $groups[] = UserGroupMembership::getLink( $group, RequestContext::getMain(), 'wiki' ); } diff --git a/includes/utils/AutoloadGenerator.php b/includes/utils/AutoloadGenerator.php index 8931e3ca17..4f639c13fb 100644 --- a/includes/utils/AutoloadGenerator.php +++ b/includes/utils/AutoloadGenerator.php @@ -321,7 +321,7 @@ class ClassCollector { protected $alias; /** - * @var string $code PHP code (including 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 47d3717b28..773c291dfc 100644 --- a/includes/widget/SearchInputWidget.php +++ b/includes/widget/SearchInputWidget.php @@ -10,17 +10,19 @@ namespace MediaWiki\Widget; /** * Search input widget. */ -class SearchInputWidget extends \OOUI\TextInputWidget { +class SearchInputWidget extends TitleInputWidget { protected $pushPending = false; protected $performSearchOnClick = true; + protected $validateTitle = false; + protected $highlightFirst = false; protected $dataLocation = 'header'; /** * @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 @@ -28,6 +30,7 @@ class SearchInputWidget extends \OOUI\TextInputWidget { */ public function __construct( array $config = [] ) { $config = array_merge( [ + 'maxLength' => null, 'icon' => 'search', ], $config ); 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/BasicSearchResultSetWidget.php b/includes/widget/search/BasicSearchResultSetWidget.php index 07094afca6..bf59fe9e48 100644 --- a/includes/widget/search/BasicSearchResultSetWidget.php +++ b/includes/widget/search/BasicSearchResultSetWidget.php @@ -79,9 +79,9 @@ class BasicSearchResultSetWidget { continue; } $out .= - "

    " . + "

    " . $this->specialPage->msg( "search-interwiki-results-{$interwiki}" )->parse() . - "

    "; + "

    "; $out .= $this->renderResultSet( $results, $offset ); } } 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/jsduck.json b/jsduck.json index f7771d1a74..7e59432c0e 100644 --- a/jsduck.json +++ b/jsduck.json @@ -16,6 +16,7 @@ "resources/src/mediawiki.action", "resources/src/mediawiki.language", "resources/src/mediawiki.messagePoster", + "resources/src/mediawiki.rcfilters", "resources/src/mediawiki.special", "resources/src/mediawiki.toolbar", "resources/src/mediawiki.widgets", @@ -36,7 +37,12 @@ "resources/src/jquery/jquery.suggestions.js", "resources/src/jquery/jquery.tabIndex.js", "resources/lib/jquery.client/jquery.client.js", - "resources/lib/oojs", - "resources/lib/oojs-ui" + "resources/lib/oojs/oojs.jquery.js", + "resources/lib/oojs-ui/oojs-ui-core.js", + "resources/lib/oojs-ui/oojs-ui-widgets.js", + "resources/lib/oojs-ui/oojs-ui-toolbars.js", + "resources/lib/oojs-ui/oojs-ui-windows.js", + "resources/lib/oojs-ui/oojs-ui-wikimediaui.js", + "resources/lib/oojs-ui/oojs-ui-apex.js" ] } diff --git a/languages/ConverterRule.php b/languages/ConverterRule.php index e51a8edbdb..8dfe00f88c 100644 --- a/languages/ConverterRule.php +++ b/languages/ConverterRule.php @@ -38,8 +38,6 @@ class ConverterRule { public $mUnidtable = [];// array of the translation in each variant /** - * Constructor - * * @param string $text The text between -{ and }- * @param LanguageConverter $converter */ diff --git a/languages/Language.php b/languages/Language.php index 83dff65aba..c514cdc595 100644 --- a/languages/Language.php +++ b/languages/Language.php @@ -203,16 +203,16 @@ 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 */ protected static function newFromCode( $code, $fallback = false ) { - if ( !Language::isValidCode( $code ) ) { + if ( !self::isValidCode( $code ) ) { throw new MWException( "Invalid language code \"$code\"" ); } - if ( !Language::isValidBuiltInCode( $code ) ) { + if ( !self::isValidBuiltInCode( $code ) ) { // It's not possible to customise this code with class files, so // just return a Language object. This is to support uselang= hacks. $lang = new Language; @@ -228,9 +228,9 @@ class Language { } // Keep trying the fallback list until we find an existing class - $fallbacks = Language::getFallbacksFor( $code ); + $fallbacks = self::getFallbacksFor( $code ); foreach ( $fallbacks as $fallbackCode ) { - if ( !Language::isValidBuiltInCode( $fallbackCode ) ) { + if ( !self::isValidBuiltInCode( $fallbackCode ) ) { throw new MWException( "Invalid fallback '$fallbackCode' in fallback sequence for '$code'" ); } @@ -829,7 +829,7 @@ class Language { global $wgExtraLanguageNames, $wgUsePigLatinVariant; // If passed an invalid language code to use, fallback to en - if ( $inLanguage !== null && !Language::isValidCode( $inLanguage ) ) { + if ( $inLanguage !== null && !self::isValidCode( $inLanguage ) ) { $inLanguage = 'en'; } @@ -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? * @@ -1192,7 +1192,7 @@ class Language { case 'D': $usedDay = true; $s .= $this->getWeekdayAbbreviation( - Language::dateTimeObjFormat( $dateTimeObj, $ts, $zone, 'w' ) + 1 + self::dateTimeObjFormat( $dateTimeObj, $ts, $zone, 'w' ) + 1 ); break; case 'j': @@ -1223,7 +1223,7 @@ class Language { case 'l': $usedDay = true; $s .= $this->getWeekdayName( - Language::dateTimeObjFormat( $dateTimeObj, $ts, $zone, 'w' ) + 1 + self::dateTimeObjFormat( $dateTimeObj, $ts, $zone, 'w' ) + 1 ); break; case 'F': @@ -1404,36 +1404,36 @@ class Language { case 'O': case 'P': case 'T': - $s .= Language::dateTimeObjFormat( $dateTimeObj, $ts, $zone, $code ); + $s .= self::dateTimeObjFormat( $dateTimeObj, $ts, $zone, $code ); break; case 'w': case 'N': case 'z': $usedDay = true; - $num = Language::dateTimeObjFormat( $dateTimeObj, $ts, $zone, $code ); + $num = self::dateTimeObjFormat( $dateTimeObj, $ts, $zone, $code ); break; case 'W': $usedWeek = true; - $num = Language::dateTimeObjFormat( $dateTimeObj, $ts, $zone, $code ); + $num = self::dateTimeObjFormat( $dateTimeObj, $ts, $zone, $code ); break; case 't': $usedMonth = true; - $num = Language::dateTimeObjFormat( $dateTimeObj, $ts, $zone, $code ); + $num = self::dateTimeObjFormat( $dateTimeObj, $ts, $zone, $code ); break; case 'L': $usedIsLeapYear = true; - $num = Language::dateTimeObjFormat( $dateTimeObj, $ts, $zone, $code ); + $num = self::dateTimeObjFormat( $dateTimeObj, $ts, $zone, $code ); break; case 'o': $usedISOYear = true; - $num = Language::dateTimeObjFormat( $dateTimeObj, $ts, $zone, $code ); + $num = self::dateTimeObjFormat( $dateTimeObj, $ts, $zone, $code ); break; case 'U': $usedSecond = true; // fall through case 'I': case 'Z': - $num = Language::dateTimeObjFormat( $dateTimeObj, $ts, $zone, $code ); + $num = self::dateTimeObjFormat( $dateTimeObj, $ts, $zone, $code ); break; case '\\': # Backslash escaping @@ -1467,7 +1467,7 @@ class Language { $s .= $num; $raw = false; } elseif ( $roman ) { - $s .= Language::romanNumeral( $num ); + $s .= self::romanNumeral( $num ); $roman = false; } elseif ( $hebrewNum ) { $s .= self::hebrewNumeral( $num ); @@ -1509,7 +1509,7 @@ class Language { substr( $ts, 10, 2 ) * 60 - substr( $ts, 12, 2 ); if ( $usedWeek ) { $possibleTtls[] = - ( 7 - Language::dateTimeObjFormat( $dateTimeObj, $ts, $zone, 'N' ) ) * 86400 + + ( 7 - self::dateTimeObjFormat( $dateTimeObj, $ts, $zone, 'N' ) ) * 86400 + $timeRemainingInDay; } elseif ( $usedISOYear ) { // December 28th falls on the last ISO week of the year, every year. @@ -1519,29 +1519,29 @@ class Language { substr( $ts, 0, 4 ) . '1228', $zone ?: new DateTimeZone( 'UTC' ) )->format( 'W' ); - $currentISOWeek = Language::dateTimeObjFormat( $dateTimeObj, $ts, $zone, 'W' ); + $currentISOWeek = self::dateTimeObjFormat( $dateTimeObj, $ts, $zone, 'W' ); $weeksRemaining = $lastWeekOfISOYear - $currentISOWeek; $timeRemainingInWeek = - ( 7 - Language::dateTimeObjFormat( $dateTimeObj, $ts, $zone, 'N' ) ) * 86400 + ( 7 - self::dateTimeObjFormat( $dateTimeObj, $ts, $zone, 'N' ) ) * 86400 + $timeRemainingInDay; $possibleTtls[] = $weeksRemaining * 604800 + $timeRemainingInWeek; } if ( $usedMonth ) { $possibleTtls[] = - ( Language::dateTimeObjFormat( $dateTimeObj, $ts, $zone, 't' ) - + ( self::dateTimeObjFormat( $dateTimeObj, $ts, $zone, 't' ) - substr( $ts, 6, 2 ) ) * 86400 + $timeRemainingInDay; } elseif ( $usedYear ) { $possibleTtls[] = - ( Language::dateTimeObjFormat( $dateTimeObj, $ts, $zone, 'L' ) + 364 - - Language::dateTimeObjFormat( $dateTimeObj, $ts, $zone, 'z' ) ) * 86400 + ( self::dateTimeObjFormat( $dateTimeObj, $ts, $zone, 'L' ) + 364 - + self::dateTimeObjFormat( $dateTimeObj, $ts, $zone, 'z' ) ) * 86400 + $timeRemainingInDay; } elseif ( $usedIsLeapYear ) { $year = substr( $ts, 0, 4 ); $timeRemainingInYear = - ( Language::dateTimeObjFormat( $dateTimeObj, $ts, $zone, 'L' ) + 364 - - Language::dateTimeObjFormat( $dateTimeObj, $ts, $zone, 'z' ) ) * 86400 + ( self::dateTimeObjFormat( $dateTimeObj, $ts, $zone, 'L' ) + 364 - + self::dateTimeObjFormat( $dateTimeObj, $ts, $zone, 'z' ) ) * 86400 + $timeRemainingInDay; $mod = $year % 4; if ( $mod || ( !( $year % 100 ) && $year % 400 ) ) { @@ -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 @@ -3956,7 +3956,7 @@ class Language { * @return string Text, wrapped in LRE...PDF or RLE...PDF or nothing */ public function embedBidi( $text = '' ) { - $dir = Language::strongDirFromContent( $text ); + $dir = self::strongDirFromContent( $text ); if ( $dir === 'ltr' ) { // Wrap in LEFT-TO-RIGHT EMBEDDING ... POP DIRECTIONAL FORMATTING return self::$lre . $text . self::$pdf; @@ -4264,7 +4264,7 @@ class Language { $this->mParentLanguage = null; return null; } - $lang = Language::factory( $code ); + $lang = self::factory( $code ); if ( !$lang->hasVariant( $this->getCode() ) ) { $this->mParentLanguage = null; return null; @@ -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 ) { @@ -4420,7 +4420,7 @@ class Language { * @return array Non-empty array, ending in "en" */ public static function getFallbacksFor( $code ) { - if ( $code === 'en' || !Language::isValidBuiltInCode( $code ) ) { + if ( $code === 'en' || !self::isValidBuiltInCode( $code ) ) { return []; } // For unknown languages, fallbackSequence returns an empty array, @@ -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 ) { @@ -4821,7 +4821,7 @@ class Language { */ public function getCompiledPluralRules() { $pluralRules = self::$dataCache->getItem( strtolower( $this->mCode ), 'compiledPluralRules' ); - $fallbacks = Language::getFallbacksFor( $this->mCode ); + $fallbacks = self::getFallbacksFor( $this->mCode ); if ( !$pluralRules ) { foreach ( $fallbacks as $fallbackCode ) { $pluralRules = self::$dataCache->getItem( strtolower( $fallbackCode ), 'compiledPluralRules' ); @@ -4840,7 +4840,7 @@ class Language { */ public function getPluralRules() { $pluralRules = self::$dataCache->getItem( strtolower( $this->mCode ), 'pluralRules' ); - $fallbacks = Language::getFallbacksFor( $this->mCode ); + $fallbacks = self::getFallbacksFor( $this->mCode ); if ( !$pluralRules ) { foreach ( $fallbacks as $fallbackCode ) { $pluralRules = self::$dataCache->getItem( strtolower( $fallbackCode ), 'pluralRules' ); @@ -4859,7 +4859,7 @@ class Language { */ public function getPluralRuleTypes() { $pluralRuleTypes = self::$dataCache->getItem( strtolower( $this->mCode ), 'pluralRuleTypes' ); - $fallbacks = Language::getFallbacksFor( $this->mCode ); + $fallbacks = self::getFallbacksFor( $this->mCode ); if ( !$pluralRuleTypes ) { foreach ( $fallbacks as $fallbackCode ) { $pluralRuleTypes = self::$dataCache->getItem( strtolower( $fallbackCode ), 'pluralRuleTypes' ); 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/LanguageConverter.php b/languages/LanguageConverter.php index 6d0368c7a1..67c0ca7412 100644 --- a/languages/LanguageConverter.php +++ b/languages/LanguageConverter.php @@ -662,7 +662,7 @@ class LanguageConverter { * * @param string $text Text to be converted * @param string $variant The target variant code - * @param int $startPos + * @param int &$startPos * @param int $depth Depth of recursion * * @throws MWException 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 00d91ce52e..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 @@ -383,6 +383,8 @@ class Names { 'si' => 'සිංහල', # Sinhalese 'simple' => 'Simple English', # Simple English 'sk' => 'slovenčina', # Slovak + 'skr' => 'سرائیکی', # Saraiki (multiple scripts - defaults to Arabic) + 'skr-arab' => 'سرائیکی', # Saraiki (Arabic script) 'sl' => 'slovenščina', # Slovenian 'sli' => 'Schläsch', # Lower Selisian 'sm' => 'Gagana Samoa', # Samoan @@ -402,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/data/ZhConversion.php b/languages/data/ZhConversion.php index 03ebe21ce6..64cce789a5 100644 --- a/languages/data/ZhConversion.php +++ b/languages/data/ZhConversion.php @@ -3155,6 +3155,7 @@ public static $zh2Hant = [ '上签约' => '上簽約', '上签署' => '上簽署', '上签订' => '上簽訂', +'上签证' => '上簽證', '上签' => '上籤', '上系上' => '上繫上', '上课钟' => '上課鐘', @@ -3172,6 +3173,7 @@ public static $zh2Hant = [ '下签约' => '下簽約', '下签署' => '下簽署', '下签订' => '下簽訂', +'下签证' => '下簽證', '下签' => '下籤', '下课钟' => '下課鐘', '不干不净' => '不乾不淨', @@ -3247,6 +3249,7 @@ public static $zh2Hant = [ '中签约' => '中簽約', '中签署' => '中簽署', '中签订' => '中簽訂', +'中签证' => '中簽證', '中签' => '中籤', '中风后' => '中風後', '丰仪' => '丰儀', @@ -4322,7 +4325,6 @@ public static $zh2Hant = [ '台子女' => '台子女', '台子孙' => '台子孫', '台州' => '台州', -'台布景' => '台布景', '台历史' => '台歷史', '台钟' => '台鐘', '台风奖' => '台風獎', @@ -4867,6 +4869,8 @@ public static $zh2Hant = [ '尸祝' => '尸祝', '尸祿' => '尸祿', '尸禄' => '尸祿', +'尸罗' => '尸羅', +'尸羅' => '尸羅', '尸罗精舍' => '尸羅精舍', '尸羅精舍' => '尸羅精舍', '尸臣' => '尸臣', @@ -5883,6 +5887,7 @@ public static $zh2Hant = [ '星历' => '星曆', '星期后' => '星期後', '星历史' => '星歷史', +'星露谷物语' => '星露谷物語', '春游' => '春遊', '春香斗学' => '春香鬥學', '昭惠后' => '昭惠后', @@ -6034,6 +6039,7 @@ public static $zh2Hant = [ '架钟' => '架鐘', '某只' => '某隻', '染殿后' => '染殿后', +'染发生' => '染發生', '染发' => '染髮', '柜上' => '柜上', '柜子' => '柜子', @@ -6063,7 +6069,6 @@ public static $zh2Hant = [ '杆菌' => '桿菌', '梁上君子' => '梁上君子', '梁启超' => '梁啓超', -'条干' => '條幹', '条文里' => '條文裡', '梨干' => '梨乾', '梯冲' => '梯衝', @@ -6139,7 +6144,6 @@ public static $zh2Hant = [ '横征暴敛' => '橫徵暴斂', '横梁' => '橫樑', '横冲' => '橫衝', -'台布' => '檯布', '台历' => '檯曆', '台灯' => '檯燈', '台球' => '檯球', @@ -8494,6 +8498,10 @@ public static $zh2Hant = [ '闯荡' => '闖蕩', '闯炼' => '闖鍊', '关系' => '關係', +'关系列' => '關系列', +'关系所' => '關系所', +'关系科' => '關系科', +'关系统' => '關系統', '辟佛' => '闢佛', '辟作' => '闢作', '辟划' => '闢劃', @@ -9710,6 +9718,7 @@ public static $zh2Hans = [ '圞' => '𪢮', '坿' => '附', '垜' => '垛', +'垻' => '坝', '埡' => '垭', '執' => '执', '堅' => '坚', @@ -13498,6 +13507,7 @@ public static $zh2Hans = [ '崑崙' => '昆仑', '崑劇' => '昆剧', '崑山' => '昆山', +'崑島' => '昆岛', '崑曲' => '昆曲', '崑腔' => '昆腔', '崑蘇' => '昆苏', @@ -13875,6 +13885,9 @@ public static $zh2TW = [ '哥特式' => '哥德式', '哥斯达黎加' => '哥斯大黎加', '哥斯達黎加' => '哥斯大黎加', +'唐纳德·特朗普' => '唐納·川普', +'當勞·特朗普' => '唐納·川普', +'當奴·特朗普' => '唐納·川普', '卡拉奇' => '喀拉蚩', '乔治·奥威尔' => '喬治·歐威爾', '佐治亚' => '喬治亞', @@ -13951,6 +13964,7 @@ public static $zh2TW = [ '尼日尔' => '尼日', '尼日爾' => '尼日', '雅马哈' => '山葉', +'特朗普' => '川普', '机床' => '工具機', '機床' => '工具機', '珍寶客機' => '巨無霸客機', @@ -14105,6 +14119,7 @@ public static $zh2TW = [ '奥巴马' => '歐巴馬', '奧巴馬' => '歐巴馬', '正在叱咤' => '正在叱咤', +'圣佩德罗苏拉' => '汕埠', '文莱' => '汶萊', '沙律' => '沙拉', '沙地阿拉伯' => '沙烏地阿拉伯', @@ -14270,7 +14285,8 @@ public static $zh2TW = [ '毛里塔尼亞' => '茅利塔尼亞', '霍尔木兹' => '荷姆茲', '霍爾木茲' => '荷姆茲', -'荷李活道' => '荷李活道', +'荷里活廣場' => '荷里活廣場', +'荷里活道' => '荷里活道', '莫桑比克' => '莫三比克', '瓦文萨' => '華勒沙', '華里沙' => '華勒沙', @@ -14349,6 +14365,8 @@ public static $zh2TW = [ '屏幕' => '螢幕', '行人路权' => '行人路權', '行人路權' => '行人路權', +'流動作業系統' => '行動作業系統', +'移动操作系统' => '行動作業系統', '流動網絡' => '行動網路', '移动网络' => '行動網路', '流動電話' => '行動電話', @@ -14840,6 +14858,7 @@ public static $zh2HK = [ '占高枝' => '佔高枝', '維德角' => '佛得角', '作品里' => '作品裏', +'操作系统' => '作業系統', '來著' => '來着', '來著作' => '來著作', '來著名' => '來著名', @@ -15843,6 +15862,8 @@ public static $zh2HK = [ '數碼訊號' => '數碼訊號', '数字电视' => '數碼電視', '數位電視' => '數碼電視', +'数字音乐' => '數碼音樂', +'數位音樂' => '數碼音樂', '數著作' => '數著作', '數著名' => '數著名', '數著稱' => '數著稱', @@ -15974,7 +15995,6 @@ public static $zh2HK = [ '枕著述' => '枕著述', '枕著錄' => '枕著錄', '檯' => '枱', -'台布' => '枱布', '台历' => '枱曆', '台灯' => '枱燈', '台面上' => '枱面上', @@ -16101,6 +16121,8 @@ public static $zh2HK = [ '活著者' => '活著者', '活著述' => '活著述', '活著錄' => '活著錄', +'移动操作系统' => '流動作業系統', +'行動作業系統' => '流動作業系統', '移动网络' => '流動網絡', '行動網路' => '流動網絡', '移动电话' => '流動電話', @@ -16313,6 +16335,8 @@ public static $zh2HK = [ '畫著稱' => '畫著稱', '畫著者' => '畫著者', '画里' => '畫裏', +'唐納·川普' => '當勞·特朗普', +'唐纳德·特朗普' => '當勞·特朗普', '當著' => '當着', '當著作' => '當著作', '過著作' => '當著作', @@ -18118,6 +18142,9 @@ public static $zh2CN = [ '哭著稱' => '哭著称', '哭著者' => '哭著者', '哭著述' => '哭著述', +'唐納·川普' => '唐纳德·特朗普', +'當勞·特朗普' => '唐纳德·特朗普', +'當奴·特朗普' => '唐纳德·特朗普', '唱著' => '唱着', '唱著書' => '唱著书', '唱著作' => '唱著作', @@ -18180,6 +18207,7 @@ public static $zh2CN = [ '土魯斯' => '图卢兹', '吐瓦魯' => '图瓦卢', '原子筆' => '圆珠笔', +'汕埠' => '圣佩德罗苏拉', '聖露西亞' => '圣卢西亚', '聖克里斯多福及尼維斯' => '圣基茨和尼维斯', '聖吉斯納域斯' => '圣基茨和尼维斯', @@ -18204,6 +18232,7 @@ public static $zh2CN = [ '艾菲爾' => '埃菲尔', '葉里溫' => '埃里温', '功能變數名稱' => '域名', +'網域名稱' => '域名', '吉里巴斯' => '基里巴斯', '堂姊' => '堂姐', '坎培拉' => '堪培拉', @@ -18783,6 +18812,7 @@ public static $zh2CN = [ '數位技術' => '数字技术', '數位電視' => '数字电视', '數碼電視' => '数字电视', +'數位音樂' => '数字音乐', '資料庫' => '数据库', '數著' => '数着', '數位照相機' => '数码照相机', @@ -18964,10 +18994,10 @@ public static $zh2CN = [ '梳著者' => '梳著者', '梳著述' => '梳著述', '梵谷' => '梵高', -'機率' => '概率', '欠帳' => '欠账', '死帳' => '死账', '庇里牛斯' => '比利牛斯', +'披索' => '比索', '畢卡索' => '毕加索', '茅利塔尼亞' => '毛里塔尼亚', '模里西斯' => '毛里求斯', @@ -19406,6 +19436,8 @@ public static $zh2CN = [ '葛摩' => '科摩罗', '象牙海岸' => '科特迪瓦', '積極份子' => '积极分子', +'流動作業系統' => '移动操作系统', +'行動作業系統' => '移动操作系统', '流動電話' => '移动电话', '行動電話' => '移动电话', '流動網絡' => '移动网络', @@ -19609,6 +19641,8 @@ public static $zh2CN = [ '螢光棒' => '荧光棒', '螢屏' => '荧屏', '霍爾斯坦' => '荷尔斯泰因', +'荷里活廣場' => '荷里活广场', +'荷里活道' => '荷里活道', '莫三比克' => '莫桑比克', '雷伊泰灣' => '莱特湾', '賴索托' => '莱索托', diff --git a/languages/i18n/af.json b/languages/i18n/af.json index 97661f6a08..460c665215 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.", @@ -61,7 +62,7 @@ "tog-watchlisthidepatrolled": "Versteek gepatrolleerde wysigings van dophoulys", "tog-ccmeonemails": "Stuur my 'n kopie van die e-pos wat ek aan ander stuur", "tog-diffonly": "Moenie 'n bladsy se inhoud onder die wysigingsverskil wys nie", - "tog-showhiddencats": "Wys versteekte kategorië", + "tog-showhiddencats": "Wys versteekte kategorieë", "tog-norollbackdiff": "Moenie verskille wys as teruggerol word nie", "tog-useeditwarning": "Waarsku my as ek 'n gewysigde bladsy verlaat voordat dit gestoor is", "tog-prefershttps": "Gebruik altyd 'n beveiligde verbinding terwyl aangemeld is", @@ -142,7 +143,7 @@ "subcategories": "Subkategorieë", "category-media-header": "Media in kategorie \"$1\"", "category-empty": "''Hierdie kategorie bevat geen bladsye of media nie.''", - "hidden-categories": "{{PLURAL:$1|Versteekte kategorie|Versteekte kategorië}}", + "hidden-categories": "{{PLURAL:$1|Versteekte kategorie|Versteekte kategorieë}}", "hidden-category-category": "Versteekte kategorieë", "category-subcat-count": "{{PLURAL:$2|Hierdie kategorie bevat slegs die volgende subkategorie.|Hierdie kategorie bevat die volgende {{PLURAL:$1|subkategorie|$1 subkategorië}}, uit 'n totaal van $2.}}", "category-subcat-count-limited": "Hierdie kategorie het die volgende {{PLURAL:$1|subkategorie|$1 subkategorië}}.", @@ -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.", @@ -592,7 +593,6 @@ "explainconflict": "Iemand anders het hierdie bladsy gewysig sedert u dit begin wysig het.\nDie boonste invoerboks het die teks wat tans bestaan.\nU wysigings word in die onderste invoerboks gewys.\nU sal u wysigings moet saamsmelt met die huidige teks.\n'''Slegs''' die teks in die boonste invoerboks sal gestoor word wanneer u \"$1\" druk.", "yourtext": "U teks", "storedversion": "Gestoorde weergawe", - "nonunicodebrowser": "'''Waarskuwing: U webblaaier ondersteun nie Unikode nie.'''\nDie MediaWiki-sagteware hou hiermee rekening sodat u bladsye veilig kan wysig: nie-ASCII karakters word in die wysigingsvenster as heksadesimale kodes weergegee.", "editingold": "'''WAARSKUWING: U is besig om 'n ouer weergawe van hierdie bladsy te wysig.\nAs u dit stoor, sal enige wysigings sedert hierdie een weer uitgewis word.'''", "yourdiff": "Wysigings", "copyrightwarning": "Alle bydraes aan {{SITENAME}} word onder die $2 beskikbaar gestel (lees $1 vir meer inligting).\nAs u nie wil toelaat dat u teks deur ander persone gewysig of versprei word nie, moet dit asseblief nie hier invoer nie.
    \nHierdeur beloof u ons dat u die byvoegings self geskryf het, of gekopieer het van publieke domein of soortgelyke vrye bronne.\n'''MOENIE WERK WAT DEUR KOPIEREG BESKERM WORD HIER PLAAS SONDER TOESTEMMING NIE!'''", @@ -608,7 +608,7 @@ "templatesusedsection": "Die volgende {{PLURAL:$1|sjabloon|sjablone}} word in hierdie afdeling gebruik:", "template-protected": "(beskermd)", "template-semiprotected": "(half-beskerm)", - "hiddencategories": "Hierdie bladsy is 'n lid van {{PLURAL:$1|1 versteekte kategorie|$1 versteekte kategorië}}:", + "hiddencategories": "Hierdie bladsy is 'n lid van {{PLURAL:$1|1 versteekte kategorie|$1 versteekte kategorieë}}:", "edittools": "", "nocreatetext": "{{SITENAME}} het die skep van nuwe bladsye beperk.\nU kan slegs bestaande bladsye wysig, of u kan [[Special:UserLogin|aanmeld of 'n gebruiker registreer]].", "nocreate-loggedin": "U het nie regte om nuwe blaaie te skep nie.", @@ -679,7 +679,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": "Blaai deur geskiedenis", + "history-fieldset-title": "Soek na wysigings", "history-show-deleted": "Slegs geskrapte", "histfirst": "oudste", "histlast": "nuutste", @@ -816,9 +816,10 @@ "search-category": "(kategorie $1)", "search-file-match": "(stem ooreen met die inhoud van die leêr)", "search-suggest": "Het u $1 bedoel?", - "search-interwiki-caption": "Susterprojekte", + "search-interwiki-caption": "Resultate vanaf susterprojekte", "search-interwiki-default": "Resultate van $1:", "search-interwiki-more": "(meer)", + "search-interwiki-more-results": "meer resultate", "search-relatedarticle": "Verwante", "searchrelated": "verwante", "searchall": "alle", @@ -1097,13 +1098,16 @@ "recentchanges-legend-heading": "Sleutel:", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (sien ook die [[Special:NewPages|lys van nuwe bladsye]])", "recentchanges-submit": "Wys", - "rcfilters-filter-registered-label": "Geregistreer", - "rcfilters-filter-registered-description": "Aangemelde redigeerders.", - "rcfilters-filter-unregistered-label": "Ongeregistreer", - "rcfilters-filter-unregistered-description": "Redigeerders wat nie aangemeld is nie.", + "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.", - "rcnotefrom": "Wysigings sedert $2 (maksimum van $1 word gewys).", + "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", "rcshowhideminor-show": "Wys", @@ -1673,7 +1677,7 @@ "wlheader-enotif": "E-pos kennisgewings is aangeskakel.", "wlheader-showupdated": "Bladsye wat verander is sedert u hulle laas besoek het word in '''vetdruk''' uitgewys.", "wlnote": "Hier volg die laaste {{PLURAL:$1|verandering|'''$1''' veranderings}} binne die laaste {{PLURAL:$2|uur|'''$2''' ure}}, soos vanaf $3 om $4.", - "wlshowlast": "Wys afgelope $1 ure, $2 dae of", + "wlshowlast": "Wys afgelope $1 ure, $2 dae", "watchlist-hide": "Versteek", "watchlist-submit": "Wys", "wlshowtime": "Wys laaste:", @@ -1883,7 +1887,7 @@ "whatlinkshere-hideredirs": "$1 aansture", "whatlinkshere-hidetrans": "$1 insluitings", "whatlinkshere-hidelinks": "$1 skakels", - "whatlinkshere-hideimages": "Lêerskakels $1", + "whatlinkshere-hideimages": "$1 lêerskakels", "whatlinkshere-filters": "Filters", "autoblockid": "Outomatiese blokkade #$1", "block": "Blok gebruiker", @@ -2848,7 +2852,6 @@ "fileduplicatesearch-noresults": "Daar is nie 'n lêer met die naam \"$1\" nie.", "specialpages": "Spesiale bladsye", "specialpages-note-top": "Sleutel", - "specialpages-note": "* Normale spesiale bladsye.\n* Spesiale bladsye met beperkte toegang.\n* Spesiale bladsye met gegewens uit die kas (kan verouderd wees).", "specialpages-group-maintenance": "Onderhoud verslae", "specialpages-group-other": "Ander spesiale bladsye", "specialpages-group-login": "Meld aan / registreer", @@ -2904,6 +2907,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)", @@ -3089,6 +3096,7 @@ "mw-widgets-categoryselector-add-category-placeholder": "Voeg 'n kategorie by...", "mw-widgets-usersmultiselect-placeholder": "Voeg nog by...", "sessionprovider-generic": "$1-sessies", + "randomrootpage": "Lukrake hoofbladsy", "log-action-filter-all": "Alle", "authmanager-email-label": "E-pos", "authmanager-email-help": "E-posadres", diff --git a/languages/i18n/ais.json b/languages/i18n/ais.json new file mode 100644 index 0000000000..841952ed28 --- /dev/null +++ b/languages/i18n/ais.json @@ -0,0 +1,2002 @@ +{ + "@metadata": { + "authors": [ + "Akamycoco", + "Benel", + "Bunukwiki", + "Tokoabibi" + ] + }, + "tog-hidecategorization": "midimut kasabelih kakuniza", + "tog-numberheadings": "satangahan lunuk pabanggu", + "tog-editondblclick": "sapecec sakatusa hawsa mikawaway-kalumyiti kasabelih", + "tog-shownumberswatching": "paazih misisip misaungayay a nikayadah", + "tog-watchlisthidecategorization": "midimut kasabelih kakuniza", + "tog-showhiddencats": "paazih madimutay a kakuniza", + "underline-always": "mahizatuay", + "underline-never": "amana kanca caay", + "editfont-style": "mikawaway-kalumyiti subal kataci nu silit a yangse:", + "editfont-default": "saazih sakaluk pataayaw tu kawaw a sulyang", + "editfont-monospace": "malecad ilaed a kataci nu silit", + "editfont-sansserif": "pacabay tu telay a kataci nu sulit", + "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}}", + "hidden-category-category": "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", + "broken-file-category": "tangan masasiket malepi’ay a kasabelih", + "about": "mahizaay", + "article": "lacul kasabelih", + "newwindow": "(paynin baluhay a azih-sasingalan miwawah)", + "cancel": "palawpes", + "moredotdotdot": "yadah...", + "mypage": "kasabelih", + "mytalk": "sasukamu", + "anontalk": "sasukamu", + "navigation": "pasubana’ tu miidangay", + "and": " ", + "faq": "sawsawniay a munday", + "actions": "saungay", + "namespaces": "pangangananay a salaedan", + "variants": "masazumaay", + "navigation-heading": "pasubana’ tu miidangay pipili’an", + "errorpagetitle": "mungangaw", + "returnto": "tatiku tazuma至 $1.", + "tagline": "makayzaay i {{SITENAME}}", + "help": "buhci tu kamu", + "search": "kilim", + "searchbutton": "kilim", + "go": "mileku", + "searcharticle": "mileku", + "history": "kasabelih nazipa’an", + "history_short": "nazipa’an", + "history_small": "nazipa’an", + "printableversion": "kapah tu insace baziyong / sapad", + "permalink": "saluimengay misiket", + "print": "insace", + "view": "ciwsace", + "view-foreign": "i $1 miciwsace", + "edit": "mikawaway-kalumyiti", + "edit-local": "itiniay buhci tu kamu nu mikawaway tu kalumyiti", + "create": "patizeng", + "create-local": "cunusen itiniay a buhci tu kamu", + "delete": "misipu", + "protect_change": "misumad", + "unprotect": "misumad tu midiputay", + "newpage": "baluhayay a kasabelih", + "talkpagelinktext": "sasukamu", + "specialpage": "sazumaay a kasabelih", + "personaltools": "teked sakaluk", + "talk": "matatengil", + "views": "ciwsace", + "toolbox": "sakaluk", + "imagepage": "ciwsace tangan a kasabelih", + "mediawikipage": "ciwsace palatuh kasabelih", + "templatepage": "ciwsace taazihan-mitudung kasabelih", + "viewhelppage": "ciwsace buhci tu kamu kasabelih", + "categorypage": "ciwsace kakuniza a kasabelih", + "viewtalkpage": "ciwsace matatengil kasabelih", + "otherlanguages": "zumaay a kamu", + "redirectedfrom": "(miliyawtu tazuma nay $1)", + "redirectpagesub": "miliyaw patatuzu’", + "redirectto": "miliyaw patatuzu’ i:", + "lastmodifiedat": "uyni kasabelih sazikuz mikawaway tu kalumyiti i $1 $2.", + "protectedpage": "madiputay a kasabelih", + "jumpto": "taayaw:", + "jumptonavigation": "pasubana’ tu miidangay", + "jumptosearch": "kilim", + "pool-timeout": "imahini mihalhal milawpes pamutek", + "pool-queuefull": "laylay saculuk matumestu", + "pool-errorunknown": "caay kapulita ku mungangaw", + "aboutsite": "mahizaay {{SITENAME}}", + "aboutpage": "Project:mahizaay", + "copyright": "anu izaw ku zuma buhci tu kamu, kasabelih aazihen a lacul i labu, pisaungay hamin $1 sapabeli tu kinli a ceding.", + "copyrightpage": "{{ns:project}}:nisanga’an niza tu tungus a kawaw", + "currentevents": "ayzaay a sinbun", + "currentevents-url": "Project:Current events", + "disclaimers": "caay pimuku tu sikining", + "disclaimerpage": "Project:habutud a pimuku tu sikining", + "edithelp": "mikawaway tu kalumyiti buhci tu kamu", + "helppage-top-gethelp": "buhci tu kamu", + "mainpage": "saayaway a belih", + "mainpage-description": "saayaway a belih", + "policy-url": "Project:Policy", + "portal": "komiyonityi sacumudan", + "portal-url": "Project:komiyonityi sacumudan", + "privacy": "salimek a mikuwanay a kawaw", + "privacypage": "Project:salimek a mikuwanay a kawaw", + "badaccess": "mungangaw ku tungus", + "ok": "malucekay", + "retrievedfrom": "miala i \"$1\"", + "editsection": "mikawaway-kalumyiti", + "editold": "mikawaway tu kalumyiti", + "viewsourceold": "ciwsace sakatizeng bangu", + "editlink": "mikawaway-kalumyiti", + "viewsourcelink": "ciwsace sakatizeng bangu", + "editsectionhint": "mikawaway-kalumyiti tusil: $1", + "toc": "dilyikotoling", + "showtoc": "paazih", + "hidetoc": "midimut", + "collapsible-collapse": "piked", + "collapsible-expand": "micuwat", + "confirmable-yes": "hang", + "confirmable-no": "caay", + "restorelink": "{{PLURAL:$1|masipuay a mikawaway-kalumyiti}}", + "site-atom-feed": "$1 a Atom saangangan", + "page-atom-feed": "$1 a Atom saangangan", + "red-link-title": "$1 (kasabelih nayai’ tu)", + "sort-descending": "nay tabakiay katukuh adidi kasalaylay", + "nstab-main": "kasabelih", + "nstab-user": "misaungayay a kasabelih", + "nstab-media": "myiti kasabelih", + "nstab-special": "sazumaay a kasabelih", + "nstab-project": "cwanan kasabelih", + "nstab-image": "tangan", + "nstab-mediawiki": "palatuh", + "nstab-template": "taazihan mitudung", + "nstab-help": "buhci tu kamu a kasabelih", + "nstab-category": "kakuniza", + "mainpage-nstab": "saayaway a belih", + "error": "mungangaw", + "databaseerror": "sulu nu nasulitan mungangaw", + "databaseerror-query": "palalitemuh tu kawaw: $1", + "databaseerror-function": "sakapaluwaluway: $1", + "databaseerror-error": "mungangaw: $1", + "readonly": "pamutektu sulu nu nasulitan", + "internalerror": "ilabuay a mungangaw", + "internalerror_info": "ilabuay a mungangaw: $1", + "formerror": "mungangaw: la’cusay patayzaan aazihan a cudad", + "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", + "actionthrottled": "makelec saungay tuway", + "ns-specialprotected": "sazumaay a kasabelih la’cusay mikawaway-kalumyiti.", + "exception-nologin": "caay henay patalabu", + "virus-unknownscanner": "caay kapulita tena’ tu milepi’ay:", + "welcomeuser": "manamuh tu tayniay, $1!", + "yourname": "misaungayay a kalungangan:", + "userlogin-yourname": "misaungayay a kalungangan", + "userlogin-yourname-ph": "pisulitan tu nu misay a misaungayay a kalungangan", + "yourpassword": "mima:", + "userlogin-yourpassword": "mima", + "userlogin-yourpassword-ph": "suliten nu misuay a mima", + "createacct-yourpassword-ph": "pisuliten tu mima", + "yourpasswordagain": "pisuliten tu mima cacay aca:", + "createacct-yourpasswordagain": "malucekay tu mima", + "createacct-yourpasswordagain-ph": "pisulitan ku mima kinacacay aca", + "userlogin-remembermypassword": "pabalucu'en patalabu setyitase nu maku", + "userlogin-signwithsecure": "pisaungay zahkez misiket tu calay-zazan(wanglu)", + "cannotlogin-title": "la’cus patalabu", + "cannotlogin-text": "la’cus patalabu.", + "cannotloginnow-title": "la’cus patalabu ayza", + "cannotcreateaccount-title": "la’cusay panganganen ku canghaw", + "yourdomainname": "numisuay a calay-subal(wangyi):", + "login": "patalabu", + "nav-login-createaccount": "patalabu / panganganen ku canghaw", + "logout": "katahkal", + "notloggedin": "caay henay patalabu", + "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", + "userlogin-createanother": "patizeng tu zumaay canghaw", + "createacct-emailrequired": "imyiyo(email) puenengan", + "createacct-emailoptional": "imyiyo(email) tigami (u pili’ay sasulitan)", + "createacct-email-ph": "pisulitan ku imyiyo(email) nu misu", + "createacct-another-email-ph": "pisulitan imyiyo(email) puenengan", + "createacct-realname": "tatenga’ay a ngangan (mapili’ay a sasulitan)", + "createacct-reason": "mahicaay", + "createacct-submit": "panganganen ku misuay a canghaw", + "createacct-another-submit": "panganganen ku canghaw", + "createacct-continue-submit": "palalid patizeng tu canghaw", + "createacct-benefit-heading": "{{SITENAME}} paanin tu nisulitan tu nu tapangay mahiza kisuan.", + "createacct-benefit-body1": "saka{{PLURAL:$1|mikawaway-kalumyiti}}", + "createacct-benefit-body2": "{{PLURAL:$1| kasabelih}}", + "createacct-benefit-body3": "cay katenesay{{PLURAL:$1|paaninay tu kalusasing}}", + "loginerror": "patalabu mungangaw", + "createacct-error": "canghaw patizeng mungangaw", + "loginsuccesstitle": "patalabutu", + "mailmypassword": "miliyaw miteka setin mima", + "emailconfirmlink": "malucekay tu imyiyo(email) puenengan", + "accountcreated": "panganganen tu ku canghaw", + "loginlanguagelabel": "kamu: $1", + "pt-login": "patalabu", + "pt-login-button": "patalabu", + "pt-login-continue-button": "palalid patalabu", + "pt-createaccount": "panganganen ku canghaw", + "pt-userlogout": "katahkal", + "changepassword": "misumad tu mima", + "resetpass_header": "misumad canghaw mima", + "oldpassword": "malumannay a mima", + "newpassword": "baluhay a mima:", + "retypenew": "miliyaw suliten baluhay a mima:", + "changepassword-success": "mima nu misu masumad tu!", + "botpasswords": "kikay-tademaw a mima", + "botpasswords-disabled": "kikay-tademaw a mima mapasatezep tuway.", + "botpasswords-existing": "naizawtu ku kikay-tademaw a mima", + "botpasswords-createnew": "patizeng baluhay kikay-tademaw a mima", + "botpasswords-label-appid": "kalungangan nu kikay-tademaw:", + "botpasswords-label-create": "patizeng", + "botpasswords-label-update": "misabaluhay", + "botpasswords-label-cancel": "palawpes", + "botpasswords-label-delete": "masipu", + "botpasswords-label-resetpassword": "miliyaw miteka setin mima", + "botpasswords-label-grants": "matatungusay a tungus:", + "botpasswords-label-grants-column": "pabeli tu kinli", + "resetpass_forbidden": "la’cus misumad tu mima", + "resetpass_forbidden-reason": "la’cus misumad tu mima: $1", + "resetpass-submit-loggedin": "misumad tu mima", + "resetpass-submit-cancel": "palawpes", + "resetpass-temp-password": "nanunuz a mima:", + "passwordreset": "miliyaw miteka setin mima", + "passwordreset-username": "misaungayay a kalungangan:", + "passwordreset-domain": "calay-subal(wangyi) kalungangan:", + "passwordreset-email": "imyiyo(email) puenengan:", + "passwordreset-invalidemail": "la’cusay a imyiyo(email) puenengan", + "changeemail-oldemail": "ayzaay a imyiyo(email) puengengan:", + "changeemail-newemail": "baluhay imyiyo(email) puenengan:", + "changeemail-none": "(nayi’)", + "changeemail-submit": "misumad imyiyo(email)", + "resettokens": "miliyaw patizeng sabuhat a mima", + "resettokens-no-tokens": "inayi’ ku miliyaw tu setinay a mima-sacukcuk.", + "resettokens-tokens": "sabuhat:", + "resettokens-resetbutton": "miliyaw patizeng mapili’ay a sabuhat-sacukcuk", + "bold_sample": "kibetulay a sulit", + "bold_tip": "kibetulay a sulit", + "italic_sample": "tukenihay nisulit", + "italic_tip": "tukenihay nisulit", + "link_sample": "misiket satangahan a sulit", + "link_tip": "labu-labu misiket", + "extlink_sample": "http://www.example.com misiket satangahan a sulit", + "extlink_tip": "hekal-hekal misiket (amana katawal saka http:// paangangan)", + "headline_sample": "sakacacay a selal nu satangahan a sulit", + "headline_tip": "sakatusa a selal nu satangahan a sulit", + "nowiki_sample": "pacucuk caayay kesehwaay a cudad", + "nowiki_tip": "sekipo Wiki kesehwa sulit nu kamu", + "image_tip": "nicunusay a tangan", + "media_tip": "tangan-tangan misiket", + "sig_tip": "misuay a sulit nu ngangan atu demiad, tuki", + "hr_tip": "Sapisasuala (cayka yadah kawiza)", + "summary": "pecu’ nu lacul:", + "subject": "satangahan:", + "minoredit": "payni mikilulay a mikawaway-kalumyiti", + "watchthis": "miazih tuyni kasabelih", + "savearticle": "misuped kasabelih", + "savechanges": "misuped tu sumad", + "publishpage": "patiyak kasabelih", + "publishchanges": "patiyak misumad", + "preview": "pataayaway miazih", + "showpreview": "paazih pataayaway miazih", + "showdiff": "paazih ku masumaday", + "anoneditwarning": "patalaw:caay henay kisu patalabu. anu miteka mikawaway tu kalumyiti, IP adolyise nu misu ama mitilak. anu kisu [$1 patalabu ] acasa [$2 panganganen ku canghaw ], misuay mikawaway tu kalumyiti payni tu nu misuay misaungayay kalungangan sacuzu’ ,izaway zuma kapahayay.", + "missingcommenttext": "pisuliten buhci tu kamu isasa’.", + "subject-preview": "pataayaway miazih taazihan tu kawaw:", + "blockednoreason": "caay pasaheci tu mahicaay", + "nosuchsectiontitle": "caykatepa tu tusil", + "loginreqtitle": "maydih patalabu", + "loginreqlink": "patalabu", + "accmailtitle": "mima patigamitu", + "newarticle": "(baluhay)", + "newarticletext": "masasiket kisu tu nayi’ay tu kasabelih.\namipatizeng tina kasabelih, kaisasa mikawaway tu kalumyiti atilad misulit ku lacul (kahica nu kawaw piazih tu tatenga’ay [$1 misaungay a buhci tu kamu kasabelih ]).\namahica caay padeteng tayza tina kasabelih kisu haw, pihaymaw sapecec saazihay a tatiku pipenecan.", + "noarticletext": "kina kasabelih inayi’ lacul ayza,kapah tu kisu i zumaay a kasabelih [[Special:Search/{{PAGENAME}}| mikilim kina kasabelih pyawti ]]、[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} mikilim sasuala nasulitan nakawawan ] caay sa[{{fullurl:{{FULLPAGENAME}}|action=edit}} patizeng kina kasabelih ].", + "noarticletext-nopermission": "tina kasabelih ayza inayi’ lacul,\nkapah tu kisu i zuma kasabelih [[Special:Search/{{PAGENAME}}| kilim kina kasabelih pyawti ]],acasa [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} kilim sasuala nasulitan nakawawan ],uyzasa inayi’ ku tungus patizeng tina kasabelih.", + "updated": "(misabaluh tuway)", + "continue-editing": "taayaw mikawaway-kalumyiti nikatatapal", + "editing": "mikawaway tu kalumyiti $1 ayza", + "creating": "patizeng ayza $1", + "editingsection": "mikawaway tu kalumyiti ayza $1 (tusil)", + "yourtext": "numisuay a sulit", + "storedversion": "misupedtu tu sumad", + "yourdiff": "sasizuma", + "templatesused": "uyni kasabelih pisaungay tu isasaay {{PLURAL:$1|taazihan mitudung}}:", + "template-protected": "(madiputay)", + "template-semiprotected": "(madiputay a kasabelih - satizep mikawaway tu kalumyiti)", + "hiddencategories": "kina kasabelih tungusay nu {{PLURAL:$1|1 midimut kakuniza }}mamikawaw:", + "permissionserrors": "mungangaw ku tungus", + "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.", + "log-fulllog": "ciwsace leku nasulitan-nazipa’an", + "edit-conflict": "mikawaway-kalumyiti sasula’cus", + "postedit-confirmation-created": "mapatizeng tu kasabelih.", + "postedit-confirmation-restored": "mapatiku tu kasabelih.", + "postedit-confirmation-saved": "masuped tu mikawaway-kalumyiti nu misu.", + "defaultmessagetext": "pataayaw tu kawaw palatuh a sulit", + "invalid-content-data": "lacul kalunasulitan la’cus", + "content-model-wikitext": "Wikitext", + "content-model-text": "sulit a dada’", + "content-model-javascript": "JavaScript", + "content-json-empty-object": "inayi’ay a tuutuud", + "content-json-empty-array": "inayi’ay a papazengan tu nisulitan", + "template-loop-category": "sitatutungay masaliyut a kasabelih", + "node-count-exceeded-warning": "kasabelih mangsiw ciyityin nikayadah a kelec", + "expansion-depth-exceeded-warning": "kasabelih mangsiw micuwat ilabuay a kelec", + "undo-nochange": "tina mikawaway-kalumyiti mapatiku tuway.", + "viewpagelogs": "ciwsace kina kasabelih a nasulitan nakawawan", + "currentrev": "sabaluhay masumad", + "currentrev-asof": "i $1 a sabaluhay masumad", + "revisionasof": "$1 a sumad", + "revision-info": "i $1 tuyni a {{GENDER:$6|$2}} u nasumad nu nikawawan", + "previousrevision": "← masumad nu ayaway", + "nextrevision": "kilulay masumad →", + "currentrevisionlink": "sabaluhay masumad", + "cur": "ayza", + "next": "zikuzan a cacay", + "last": "ayaway", + "page_last": "sazikuzay a kasabelih", + "history-fieldset-title": "mikilim masumad nu ayaway", + "history-show-deleted": "paazih a cacay ku masipuay tu masumad", + "histfirst": "sakasumamadan", + "histlast": "sabaluhay", + "historyempty": "(inayi’)", + "history-feed-title": "masumad nu ayaway a nazipa’an", + "history-feed-item-nocomment": "$1 i $2", + "history-edit-tags": "mikawaway-kalumyiti mipili’ masumad nu ayaway a aazihen a paya tuway", + "rev-deleted-comment": "(masipu tu mikawaway-kalumyiti pecu’ nu lacul)", + "rev-deleted-event": "(masipu tu nasulitan-nazipa’an nu paazih tu sulit)", + "rev-delundel": "misumad ku maazihay", + "rev-showdeleted": "paazih", + "revisiondelete": "masipu/palawpes misipu masumad nu ayaway", + "revdelete-no-file": "matuzu’ay a tangan inayi’ tu.", + "revdelete-show-file-submit": "hang", + "revdelete-legend": "misetin paazih a kelec", + "revdelete-hide-text": "masumad nu ayaway a sulit", + "revdelete-hide-image": "midimut lacul nu tangan", + "revdelete-hide-comment": "pecu’ nu lacul mikawaway-kalumyiti", + "revdelete-radio-same": "(amana misumad)", + "revdelete-radio-set": "midimut", + "revdelete-log": "mahicaay:", + "revdelete-success": "misabaluh masumaday a maazihay.", + "logdelete-success": "setin nasulitan-nazipa’an a maazihay.", + "revdel-restore": "misumad ku maazihay", + "pagehist": "kasabelih nazipa’an", + "deletedhist": "masiputu tu nazipa’an", + "revdelete-otherreason": "zumaay/nicunusay a mahicaay:", + "revdelete-reasonotherlist": "zuma a mahicaay", + "revdelete-edit-reasonlist": "masipu a mahicaay nu mikawaway-kalumyiti", + "revdelete-offender": "masumad nu ayaway masacudaday:", + "mergehistory-box": "mikabu tatusa kasabelih a sumad:", + "mergehistory-from": "saangangan kasabelih:", + "mergehistory-into": "pabalucu’an kasabelih:", + "mergehistory-list": "kapah mikabuay a mikawaway-kalumyiti nazipa’an", + "mergehistory-go": "paazih kapah mikabuay a mikawaway-kalumyiti", + "mergehistory-empty": "inayi’ amikabuay a sumad.", + "mergehistory-fail-bad-timestamp": "tatukian a suyling la’cus.", + "mergehistory-reason": "mahicaay:", + "mergelog": "mikabu tu nasulitan nazipa’an", + "revertmerge": "palawpes makabuay", + "history-title": "\"$1\" masumaday a nazipa’an", + "difference-title": "\"$1\" misumad laeday sasizuma", + "lineno": "silsil $1:", + "editundo": "patiku", + "diff-empty": "(inayi’ sasizuma)", + "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", + "titlematches": "kasabelih satangah matatungus", + "textmatches": "kasabelih lacul matatungus", + "notextmatches": "inayi’ matatungusay a lacul nu kasabelih", + "prevn": "ayaw saka {{PLURAL:$1|$1}}", + "nextn": "zikuzan a cacay {{PLURAL:$1|$1}}", + "prev-page": "ayaway a belih", + "next-page": "zikuzan a belih", + "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": "kayadah-myiti", + "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-category": "(kakuniza $1)", + "search-suggest": "u tuzu’ nu misu ku:$1 haw?", + "search-interwiki-caption": "yaheci namakay kakana-sabana a cwanan", + "search-interwiki-default": "namakay $1 a heci $1:", + "search-interwiki-more": "(yadah)", + "search-interwiki-more-results": "sayadahay a heci", + "search-relatedarticle": "mahizaay", + "searchall": "hamin", + "search-showingresults": "{{PLURAL:$4|saka $1 a heci, pulung $3|saka $1-$2 a heci, pulung $3}}", + "search-nonefound": "nayi’ matatungusay palalitemuh tu kawaw maheciay.", + "powersearch-legend": "tapabaw mikilim", + "powersearch-ns": "mikilim zikuzan pangangananay a salaedan:", + "powersearch-togglelabel": "pipili’i:", + "powersearch-toggleall": "hamin", + "powersearch-togglenone": "nayi’", + "powersearch-remember": "pibalucu’en mapiliay sapikilim anucilacila", + "search-external": "mikilim i hekal", + "search-error": "imahini mikilim sa mungangaw:$1", + "search-warning": "imahini mikilim sa mungangaw:$1", + "preferences": "setin tu kanamuhan", + "mypreferences": "setin tu kanamuhan", + "prefs-edits": "kinapina ku mikawaway-kalumyiti:", + "prefs-skin": "nuhekalan", + "skin-preview": "pataayaway miazih", + "datedefault": "sulyang nu pataayaw tu kawaw", + "prefs-labs": "mitanam henay a sasahicaan", + "prefs-rc": "capi a demaiday a sumad", + "prefs-watchlist": "miazihay a piazihan tu sulit", + "prefs-editwatchlist": "miazihay a piazihan tu sulit nu mikawaway-kalumyiti", + "prefs-editwatchlist-raw": "mikawaway-kalumyiti saayaway misisip a piazihan-tu-sulit", + "prefs-watchlist-edits-max": "makelec nikayadah:1000", + "prefs-misc": "zuma", + "prefs-resetpass": "misumad tu mima", + "prefs-setemail": "setin imyiyo(email) puenengan", + "prefs-email": "imyiyo(email) mapili’ay", + "prefs-rendering": "nuhekalan", + "saveprefs": "suped", + "prefs-editing": "mikawaway-kalumyiti", + "searchresultshead": "kilim", + "stub-threshold-sample-link": "maaziahan", + "stub-threshold-disabled": "mapasatezep", + "recentchangesdays": "capiay misumad paazih a nikayadah demiad.", + "recentchangescount": "pataayaw tu kawaw paazihay nu mikawaway-kalumyiti nikayadah:", + "timezonelegend": "tatukian a kakitizaan:", + "localtime": "itiniay a tuki:", + "servertime": "sefuci-kikay a tuki:", + "guesstimezone": "pisaungay saazih sakaluk setin sulyang", + "timezoneregion-africa": "Afilika", + "timezoneregion-america": "Amilikaco", + "timezoneregion-antarctica": "Nancico", + "timezoneregion-arctic": "Sasaamisan nu kitakit", + "timezoneregion-asia": "Yaco", + "timezoneregion-australia": "Awco", + "timezoneregion-europe": "Ouco", + "timezoneregion-indian": "Intuyang-bayu’", + "timezoneregion-pacific": "Taypinyang-bayu’", + "prefs-searchoptions": "kilim", + "prefs-namespaces": "pangangananay a salaedan", + "default": "pataayaw tu kawaw", + "prefs-custom-css": "pakuniza misanga’ CSS", + "prefs-registration": "pangangan a demiad:", + "yourrealname": "tatengaay a ngangan:", + "yourlanguage": "kamu:", + "yourvariant": "lacul kamu masazumaay:", + "yournick": "baluhay sulitan a ngangan:", + "email": "imyiyo(email)", + "prefs-info": "anganganay a cesyun", + "prefs-i18n": "masakitakiay", + "prefs-signature": "sulitan a ngangan", + "prefs-dateformat": "demiad a kese", + "prefs-timeoffset": "ilaed nu tuki", + "prefs-advancedediting": "habutuday a mapiliay", + "prefs-editor": "mikawaway-kalumyitiay", + "prefs-preview": "pataayaway miazih", + "prefs-advancedrc": "tapabaway a mapiliay", + "prefs-advancedsearchoptions": "tapabaway a mapiliay", + "prefs-displayrc": "paazih tu mapiliay", + "prefs-tokenwatchlist": "sabuhat", + "prefs-diffs": "sasizuma", + "userrights": "tungus nu misaungayay", + "userrights-lookup-user": "mipili’ misaungayay", + "userrights-user-editname": "pisuliti misaungayay a kalungangan:", + "userrights-groupsmember": "canan a luyaluy:", + "userrights-reason": "mahicaay:", + "userrights-unchangeable-col": "amana kisu misumad tu luyaluy", + "userrights-expiry-current": "kakatekuhan $1", + "userrights-expiry-none": "inayi’ kakatekuhan", + "userrights-expiry": "kakatekuhan:", + "userrights-expiry-othertime": "zuma a tatukian:", + "group": "luyaluy:", + "group-user": "misaungayay", + "group-bot": "kikay a tademaw", + "group-sysop": "mikuwanay", + "group-bureaucrat": "situngusay a mikawaway", + "group-suppress": "misisipay", + "group-all": "(hamin)", + "group-autoconfirmed-member": "lunuk a malucekay tu misaungayay", + "group-bot-member": "{{GENDER:$1|kikay a tademaw}}", + "group-bureaucrat-member": "{{GENDER:$1|situngusay-mikawaway}}", + "grouppage-bot": "{{ns:project}}:kikay a tademaw", + "grouppage-sysop": "{{ns:project}}:mikuwanay", + "grouppage-bureaucrat": "{{ns:project}}:situngusay a mikawaway", + "right-read": "miasip kasabelih", + "right-edit": "kasabelih mikawaway-kalumyiti", + "right-createtalk": "patizeng matatengil kasabelih", + "right-createaccount": "patizeng baluhay misaungayay a canghaw", + "right-move": "milimad kasabelih", + "right-move-subpages": "milimad kasabelih atu sailuc-kasabelih", + "right-move-rootuserpages": "milimad tu limit misaungayay a kasabelih", + "right-move-categorypages": "milimad kakuniza a kasabelih", + "right-movefile": "milimad tu tangan", + "right-upload": "patapabaw tu tangan", + "right-reupload-own": "mitahpu patapabaway a tangan nu misu", + "right-writeapi": "pisaungay suliten API", + "right-delete": "misipu tu kasabelih", + "right-browsearchive": "mikilim masipuay a kasabelih", + "right-undelete": "palawpes masipuay kasabelih", + "right-suppressionlog": "ciwsace caypabinawlan a nasulitan-nazipa’an", + "right-unblockself": "mihulak tu ku langat nu maku", + "right-editcontentmodel": "mikawaway-kalumyiti kasabelih a lacul tatudungen-misanga’", + "right-editmyoptions": "mikawaway-kalumyiti nucimacimaay a setin tu kanamuhan", + "right-noratelimit": "caypakasatezep nu saungayungayan", + "right-importupload": "nay tangan patapabaw pacumud kasabelih", + "right-mergehistory": "mikabu kasabelih nazipa’an", + "right-userrights": "mikawaway-kalumyiti sacahamin misaungayay a tungus", + "right-siteadmin": "pamutek atu mihulak azihen sulu nu nasulitan", + "grant-generic": "\"$1\" tungus pulung han", + "grant-group-page-interaction": "kasasukamu tu kasabelih", + "grant-group-file-interaction": "kasasukamu tu myiti", + "grant-group-watchlist-interaction": "sakasaungay numisuay misisip a piazihan-tu-sulit", + "grant-group-email": "pabahel imyiyo(email)", + "grant-group-high-volume": "mileku sayadah a saungay nu binawlan", + "grant-group-administration": "mileku tu mikuwanay a kawaw", + "grant-group-other": "zuma saungay nu binawlan", + "grant-blockusers": "milangat atu mihulak milangatay a misaungayay", + "grant-createaccount": "panganganen ku canghaw", + "grant-createeditmovepage": "patizeng、mikawaway-kalumyiti atu milimad kasabelih", + "grant-editmywatchlist": "mikawaway-kalumyiti numisu misisip a piazihan-tu-sulit", + "grant-editprotected": "mikawaway-kalumyiti madiputay a kasabelih", + "grant-highvolume": "masibek mikawaway-kalumyiti", + "grant-privateinfo": "misuped-miala madimut kasikazan a cesyun", + "grant-protect": "midiput atu palawpes midiput kasabelih", + "grant-uploadfile": "patapabaw ku baluhay a tangan", + "grant-basic": "anganganay a tungus", + "newuserlogpage": "patizeng misaungayay nasulitan nakawawan", + "action-read": "miasip tina kasabelih", + "action-edit": "mikawaway-kalumyiti uyni a kasabelih", + "action-createpage": "patizeng tina kasabelih", + "action-createtalk": "patizeng tuyni katatengilan kasabelih", + "action-createaccount": "patizeng tina misaungayay canghaw", + "action-history": "ciwsace tina belih a nazipa’an", + "action-minoredit": "sacuzu’ tina mikawaway-kalumyiti ku mikilulay", + "action-move-rootuserpages": "milimad tu limit misaungayay a kasabelih", + "action-move-categorypages": "milimad kakuniza a kasabelih", + "action-movefile": "milimad tina tangan", + "action-upload": "patapabaw tina tangan", + "action-reupload": "mitahpu imahiniay a tangan", + "action-delete": "misipu tina kasabelih", + "action-deleterevision": "misipu tu masumaday nu ayaway", + "action-deletelogentry": "masipu nasulitan nazipa’an kasacacay", + "action-browsearchive": "mikilim masipuay a kasabelih", + "action-suppressrevision": "miciwsace atu patiku midimut masumad nu ayaway", + "action-protect": "misumad tina kasabelih a midiput saselal", + "action-importupload": "nay tangan patapabaw pacumud kasabelih", + "action-autopatrol": "sacuzu’ mikawaway-kalumyiti nu misu u tayza-mikibi tuway", + "action-mergehistory": "mikabu tina belih a nazipa’an", + "action-userrights": "mikawaway-kalumyiti sacahamin misaungayay a tungus", + "action-siteadmin": "pamutek acasa mihulak azihen sulu nu nasulitan", + "action-sendemail": "pabahel imyiyo(email)", + "action-editmyoptions": "mikawaway-kalumyiti nucimacimaay a setin tu kanamuhan", + "action-editmywatchlist": "mikawaway-kalumyiti numisu misisip a piazihan-tu-sulit", + "action-editmyprivateinfo": "mikawaway-kalumyiti numisuay a cesyun", + "action-editcontentmodel": "mikawaway-kalumyiti kasabelih a lacul tatudungen-misanga’", + "action-deletechangetags": "nay sulu nu nasulitan masipu aazihen a paya", + "action-purge": "misipu tina kasabelih", + "nchanges": "$1 {{PLURAL:$1|misumad}}", + "enhancedrc-history": "nazipa’an", + "recentchanges": "capi a demaiday a sumad", + "recentchanges-legend": "capi a demiad masumaday a mapiliay", + "recentchanges-summary": "mikilul nazikuzan ilabu nu Wikiay a kasabelihay a capi demiad a nasumaday.", + "recentchanges-label-newpage": "uyni mikawaway tu kalumyiti patizengtu baluhay kasabelih", + "recentchanges-label-minor": "payni mikilulay a mikawaway tu kalumyiti", + "recentchanges-label-bot": "uyni mikawaway tu kalumyiti u kikay a tademaw mileku", + "recentchanges-label-unpatrolled": "mikawaway tu kalumyiti caay henay ka tayza mikibi", + "recentchanges-label-plusminus": "na kasabelih misumad hacica ku tabaki (wyiyincu )", + "recentchanges-legend-heading": "u tinaku nu kulit:", + "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (piazih tu tatenga’ay [[Special:NewPages| baluhayay a kasabelih]])", + "recentchanges-submit": "paazih", + "rcfilters-days-show-hours": "$1 {{PLURAL:$1|tuki}}", + "rcfilters-quickfilters": "suped sebseb sakaluk", + "rcfilters-savedqueries-defaultlabel": "suped sebseb sakaluk", + "rcfilters-savedqueries-rename": "miliyaw miteka pangangan", + "rcfilters-savedqueries-setdefault": "paceken pataayaw tu kawaw", + "rcfilters-savedqueries-new-name-label": "kalungangan", + "rcfilters-savedqueries-cancel-label": "palawpes", + "rcfilters-restore-default-filters": "patiku pataayaw tu kawaw mipili’ay sakacucek", + "rcfilters-filterlist-title": "sakacucek nu misapili’", + "rcfilters-highlightbutton-title": "pulita sacuzu’ a heci", + "rcfilters-highlightmenu-title": "mipili’ tu kilit", + "rcfilters-filterlist-noresults": "caykatepa sakacucek nu misapili’", + "rcfilters-filtergroup-authorship": "paaninay a masacudaday", + "rcfilters-filter-editsbyself-label": "numisuay a mikawaway-kalumyiti", + "rcfilters-filter-editsbyself-description": "numisuay a paanin", + "rcfilters-filter-editsbyother-label": "zumaay tatemaw a sumad", + "rcfilters-filter-editsbyother-description": "caykaw nu misuay a sacahamin sumad.", + "rcfilters-filter-user-experience-level-registered-label": "pangangan tuway", + "rcfilters-filter-user-experience-level-registered-description": "natalabuay nu mikawaway-kalumyiti.", + "rcfilters-filter-user-experience-level-unregistered-label": "caay henay pangangan", + "rcfilters-filter-user-experience-level-newcomer-label": "baluhayay a misaungayay", + "rcfilters-filter-user-experience-level-learner-label": "mahananamay", + "rcfilters-filtergroup-automated": "palunukay a paanin", + "rcfilters-filter-bots-label": "kikay a tademaw", + "rcfilters-filter-humans-label": "tademaw (caay ku kikay-tademaw)", + "rcfilters-filtergroup-reviewstatus": "ciwsya setyitase", + "rcfilters-filter-patrolled-label": "tayza mikibi tuway", + "rcfilters-filter-patrolled-description": "silusi tayza-mikibi a mikawaway-kalumyiti tuway.", + "rcfilters-filter-unpatrolled-label": "caay henay tayza mikibi", + "rcfilters-filtergroup-significance": "kakilulen", + "rcfilters-filter-minor-label": "cayka yadah ku misumad", + "rcfilters-filter-major-label": "caay mikilulay mikawaway-kalumyiti", + "rcfilters-filter-major-description": "caay silusi mikilulay a mikawaway-kalumyiti.", + "rcfilters-filter-watchlist-watched-label": "miazih piazihan tu sulit", + "rcfilters-filter-watchlist-watched-description": "misumad piazihan-tu-sulit i misisip nu misu.", + "rcfilters-filter-watchlist-watchednew-label": "nasumadan nu baluhayay misisip a piazihan-tu-sulit", + "rcfilters-filtergroup-changetype": "misumad nikalahizaan", + "rcfilters-filter-pageedits-label": "mikawaway-kalumyiti nu kasabelih", + "rcfilters-filter-newpages-label": "patizeng kasabelih", + "rcfilters-filter-newpages-description": "patizeng mikawaway-kalumyiti nu baluhay kasabelih.", + "rcfilters-filter-categorization-label": "kakuniza misumad", + "rcfilters-filter-logactions-label": "saungay a nasulitan nazipa’an", + "rcfilters-filtergroup-lastRevision": "sabaluhay masumad", + "rclistfrom": "paazih nay $3 $2 baluhayay a sumad katukuh ayza", + "rcshowhideminor": "$1 mikilulay mikawaway-kalumyiti", + "rcshowhideminor-show": "paazih", + "rcshowhideminor-hide": "midimut", + "rcshowhidebots": "$1 kikay-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": "$1 tayza mikibi mikawaway-kalumyiti", + "rcshowhidepatr-show": "paazih", + "rcshowhidepatr-hide": "midimut", + "rcshowhidemine": "$1 mikawaway tu kalumyiti nu maku", + "rcshowhidemine-show": "paazih", + "rcshowhidemine-hide": "midimut", + "rcshowhidecategorization": "$1 kasabelih nu kakuniza", + "rcshowhidecategorization-show": "paazih", + "rcshowhidecategorization-hide": "midimut", + "rclinks": "paazih capi a demiad $2 a demiaday a saka $1 a sumad.", + "diff": "sasizuma", + "hist": "nazipa’an", + "hide": "midimut", + "show": "paazih", + "minoreditletter": "adidi’", + "newpageletter": "baluhay", + "boteditletter": "kikay a tademaw", + "rc_categories_any": "amahicahica tu mipili’ay", + "rc-change-size-new": "masumadtu sa u $1 {{PLURAL:$1|wyiyincu}}", + "newsectionsummary": "/* $1 */ baluhay a tusil", + "rc-enhanced-expand": "paazih pulita kalunasulitan", + "rc-enhanced-hide": "midimut pulitaay a kalunasulitan", + "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", + "uploadnologin": "caay henay patalabu", + "uploaderror": "patapabaw mungangaw", + "uploadlogpage": "patapabaw nasulitan nazipa’an", + "filename": "kalungangan nu tangan", + "filedesc": "pecu’ nu lacul", + "fileuploadsummary": "pecu’ nu lacul:", + "filereuploadsummary": "tangan misaimed:", + "filestatus": "nisanga’an niza tu tungus a kawaw setyitase:", + "filesource": "saangangan:", + "ignorewarning": "sekipo patalaw atu misuped tu tangan", + "ignorewarnings": "sekipo sacahamin patalaw", + "verification-error": "tina tangan caay kasawantan.", + "overwrite": "caay mahasa mitahpu ayzaay a tangan.", + "unknown-error": "tahkal caay kapulita mungangaw.", + "tmp-create-error": "la’cus patizeng misinga’ tu tangan.", + "uploadwarning": "patapabaw patalaw", + "savefile": "misuped tu tangan", + "uploaddisabled": "mapasatezep tu ku patapabaw", + "uploaddisabledtext": "patapabaw tangan mapasatezep tuway.", + "upload-source": "saangangan a tangan", + "upload-maxfilesize": "hacica-tabaki nu tangan makelec: $1", + "upload-description": "tangan sapuelac", + "upload-options": "patapabaw mapiliay", + "watchthisupload": "miazih tina tangan", + "upload-file-error": "ilabuay a mungangaw", + "upload-dialog-button-cancel": "palawpes", + "upload-dialog-button-back": "tatiku", + "upload-dialog-button-done": "malahecitu", + "upload-dialog-button-save": "suped", + "upload-dialog-button-upload": "patapabaw", + "upload-form-label-infoform-title": "pulitaay a kalunasulitan", + "upload-form-label-infoform-name": "kalungangan", + "upload-form-label-infoform-description": "sapuelac", + "upload-form-label-own-work": "uyni ku nalimaan nu maku", + "upload-form-label-infoform-categories": "kakuniza", + "upload-form-label-infoform-date": "demiad", + "backend-fail-opentemp": "la’cus miwawah misinga’ tu tangan.", + "backend-fail-writetemp": "la’cus misulit miasinga’ tu tangan.", + "backend-fail-closetemp": "la’cus miedeb misinga’ tu tangan.", + "uploadstash": "patapabaw ku sulu nu pisipetan", + "uploadstash-clear": "palamadac tu sulu nu tangan", + "uploadstash-nofiles": "inayi’ masupetay a tangan nu misu.", + "uploadstash-errclear": "palamadac tu tangan masepay.", + "uploadstash-refresh": "misabaluhay tu tangan piazihan tu sulit", + "uploadstash-thumbnail": "ciwsace tu sukep tu zunga", + "invalid-chunk-offset": "la’cus atilad kakitizaan", + "img-auth-accessdenied": "kakaian misuped-miala", + "http-invalid-url": "la’cus URL: $1", + "http-read-error": "HTTP maasip mungangaw.", + "upload-curl-error6": "la’cus misiket tu calay-zazan(wanglu) ta URL", + "upload-curl-error28": "patapabaw mautang", + "license": "sapabeli tu kinli a cedang", + "license-header": "sapabeli tu kinli a cedang", + "nolicense": "caay henay mipili’", + "licenses-edit": "mikawaway-kalumyiti sapabeli tu kinli a cedang mapiliay", + "license-nopreview": "(amana pataayaway miazih)", + "listfiles-delete": "misipu", + "imgfile": "tangan", + "listfiles": "piazihan tu sulit nu tangan", + "listfiles_thumb": "sukep tu zunga", + "listfiles_date": "demiad", + "listfiles_name": "kalungangan", + "listfiles_user": "misaungayay", + "listfiles_size": "hacica-tabaki", + "listfiles_description": "sapuelac", + "listfiles_count": "baziyong", + "listfiles-latestversion": "ayzaay a baziyong", + "listfiles-latestversion-yes": "hang", + "listfiles-latestversion-no": "nayi’", + "file-anchor-link": "tangan", + "filehist": "tangan nu nazipa’an", + "filehist-help": "sapecec ku demiad/tuki sapiciwsace ku tuki nina demiad a tangan baziyong", + "filehist-deleteall": "haminan misipu", + "filehist-revert": "patiku", + "filehist-current": "ayza", + "filehist-datetime": "demiad/tuki", + "filehist-thumb": "sukep tu zunga", + "filehist-thumbtext": "nu $1 baziyongay a sukep tu zunga", + "filehist-nothumb": "inayi’ patapabaw", + "filehist-user": "misaungayay", + "filehist-dimensions": "ditek", + "filehist-filesize": "hacica-tabaki ku tangan", + "filehist-comment": "pacunus sakacaay kapawan", + "imagelinks": "sakapaluwaluway nu tangan", + "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.", + "filepage-nofile": "inayi’ kalungangan a tangan.", + "uploadnewversion-linktext": "patudud tina tangan nu baluhay a baziyong", + "shared-repo-from": "nay $1", + "shared-repo": "kapulung mizakecay a sulu nu tangan", + "upload-disallowed-here": "la’cus kisu mitahpu tuyni a tangan.", + "filerevert": "patiku $1", + "filerevert-legend": "patiku tu tangan", + "filerevert-comment": "mahicaay:", + "filedelete": "misipu \"$1\"", + "filedelete-legend": "misipu tu tangan", + "filedelete-comment": "mahicaay:", + "filedelete-submit": "masipu", + "filedelete-otherreason": "zumaay/nicunusay a mahicaay:", + "filedelete-reason-otherlist": "zuma a mahicaay", + "filedelete-edit-reasonlist": "masipu a mahicaay nu mikawaway-kalumyiti", + "filedelete-maintenance-title": "la’cus masipu tu tangan", + "download": "patasasa'", + "unwatchedpages": "caayay kasisip a kasabelih", + "listredirects": "miliyaw patatuzu’ piazihan tu sulit", + "listduplicatedfiles": "misaliyaw tu tangan piazihan tu sulit", + "unusedtemplates": "caayay kasaungay a taazihan mitudung", + "randompage": "kakibalucu’ ay a kasabelih", + "randomincategory": "kakibalucu’ kakuniza a kasabelih", + "randomincategory-legend": "kakibalucu’ kakuniza a kasabelih", + "randomincategory-submit": "mileku", + "randomredirect": "kakibalucu’ miliyaw patatuzu’", + "statistics": "sausi", + "statistics-header-pages": "kasabelih sausi", + "statistics-header-edits": "sausi mikawaway-kalumyiti", + "statistics-header-hooks": "zuma a sausi", + "statistics-articles": "lacul kasabelih", + "statistics-files": "mapatapabaw tu a tangan", + "statistics-edits-average": "paybelih malecalecad mikawaway-kalumyiti su", + "statistics-users-active": "saungay nu binawlan a misaungayay", + "pageswithprop-prop": "susin kalungangan:", + "pageswithprop-submit": "mileku", + "brokenredirects": "malepi’ ay miliyaw patatuzu’", + "brokenredirects-delete": "misipu", + "withoutinterwiki": "inayi’ ku kamu masasiket a kasabelih", + "withoutinterwiki-legend": "saayaway a sulit", + "withoutinterwiki-submit": "paazih", + "nbytes": "$1 {{PLURAL:$1|wyiyincu}}", + "ncategories": "{{PLURAL:$1|kakuniza}}", + "nlinks": "$1 {{PLURAL:$1|masasiket}}", + "nmembers": "$1 {{PLURAL:$1|ku mamikawaw}}", + "nrevisions": "$1 {{PLURAL:$1|masumad nu ayaway}}", + "nimagelinks": "{{PLURAL:$1|kasabelih}}", + "ntransclusions": "$1 {{PLURAL:$1|ku kasabelih}}", + "lonelypages": "masipulu’ a kasabelih", + "uncategorizedpages": "cayhen kakunizaay a kasabelih", + "uncategorizedcategories": "cayhenay kakunizaay a kakuniza", + "uncategorizedimages": "cayhen kakunizaay a tangan", + "uncategorizedtemplates": "sapi kakuniza taazihan mitudung", + "unusedcategories": "caayay kasaungay a kakuniza", + "unusedimages": "caayay kasaungay a tangan", + "wantedcategories": "maydihay a kakuniza", + "wantedpages": "maydihay a kasabelih", + "wantedfiles": "maydihay a tangan", + "wantedtemplates": "maydihay a taazihan mitudung", + "mostlinkedcategories": "masasiket sayadahay a kakuniza", + "mostlinkedtemplates": "nipacaliwan kayadahay a kasabelih", + "mostimages": "masasiket kayadahay a tangan", + "prefixindex": "kilul tatangahan nu sulit palalitemuh tu kawaw kasabelih", + "prefixindex-submit": "paazih", + "prefixindex-strip": "sekipo ayaw nu kamu i piazihan-tu-sulit", + "shortpages": "ma’ngadisay a kasabelih", + "longpages": "mangasiway a kasabelih", + "deadendpages": "inayi’ masasiket kasabelih", + "protectedpages": "madiputay a kasabelih", + "protectedpages-cascade": "paazih a cacay patatusulay a midiput kasabelih", + "protectedpages-noredirect": "midimut miliyaw patatuzu’ kasabelih", + "protectedpages-timestamp": "demiad tatukian", + "protectedpages-page": "kasabelih", + "protectedpages-expiry": "kakatekuhan", + "protectedpages-performer": "midiput misaungayay", + "protectedpages-params": "midiput tu aazihen a sulyang", + "protectedpages-reason": "mahicaay", + "protectedpages-submit": "paazih tu kasabelih", + "protectedpages-unknown-performer": "caay kapulita a misaungayay", + "protectedtitles": "madiputay a satangahan", + "protectedtitles-submit": "paazih tu satangahan", + "listusers": "misaungayay a piazihan tu sulit", + "listusers-desc": "pisaungay nay tabakiay katukuh adidi’ kasalaylay", + "newpages": "baluhay kasabelih", + "newpages-submit": "paazih", + "newpages-username": "misaungayay a kalungangan:", + "ancientpages": "samalumanay a kasabelih", + "move": "milimad", + "notargettitle": "inayi’ ku pabalucu’an", + "pager-newer-n": "{{PLURAL:$1|baluhay $1}}", + "pager-older-n": "{{PLURAL:$1| kusa malumanay}}", + "suppress": "malangat", + "apihelp": "buhci tu kamu nu API", + "apihelp-no-such-module": "cay katepa bacu \"$1\".", + "apisandbox": "bunac haku nu API", + "apisandbox-fullscreen": "micuwat tu sapat", + "apisandbox-unfullscreen": "paazih kasabelih", + "apisandbox-submit": "miawaw tu milunguc", + "apisandbox-reset": "palawpis", + "apisandbox-retry": "miliyaw mitaneng", + "apisandbox-helpurls": "buhci tu kamu masasiket", + "apisandbox-examples": "tinaku", + "apisandbox-dynamic-parameters": "zuma aazihen a sulyang", + "apisandbox-dynamic-parameters-add-label": "micunus aazihen a sulyang:", + "apisandbox-dynamic-parameters-add-placeholder": "kalungangan nu aazihen a sulyang", + "apisandbox-deprecated-parameters": "mapasatezepay a aazihen a sulyang", + "apisandbox-fetch-token": "lunuk suliten mima-sacukcuk", + "apisandbox-submit-invalid-fields-title": "izaw tu ku langat la’cus", + "apisandbox-results": "heci", + "apisandbox-request-selectformat-label": "paazih milunguc kalunasulitan u:", + "apisandbox-request-format-url-label": "URL palalitemuh tu kawaw sulisulitan", + "apisandbox-request-json-label": "milunguc JSON:", + "apisandbox-results-fixtoken": "misumad mima-sacukcuk sa miliyaw patayzaan", + "apisandbox-alert-page": "tina kasabelih a pisinga’an la’cus.", + "apisandbox-alert-field": "la’cus tina pisinga’an a sulyang.", + "apisandbox-continue": "palalid", + "apisandbox-continue-clear": "palawpis", + "booksources": "nu cudad atu laculaculan", + "booksources-search-legend": "mikilim ku cudad atu laculaculan", + "booksources-search": "kilim", + "specialloguserlabel": "mileku-misaungayay:", + "log": "nasulitan nakawawan", + "logeventslist-submit": "paazih", + "all-logs-page": "sacahamin pabinawlan nasulitan nazipa’an", + "logempty": "inayi’ nasulitan-nazipa’an matatungus tu sakacucek.", + "checkbox-select": "mipili’: $1", + "checkbox-all": "hamin", + "checkbox-none": "nayi’", + "checkbox-invert": "kabelihan mipili’", + "allpages": "hamin nu kasabelih", + "nextpage": "zikuzan a belih ($1)", + "prevpage": "ayaway a belih ($1)", + "allpagesfrom": "paazih kasabelih miteka i:", + "allpagesto": "paazih kasabelih pahezek i:", + "allarticles": "hamin nu kasabelih", + "allpagessubmit": "mileku", + "allpagesprefix": "kilul tu saayaw nu nakamuan palalitemuh tu kawaw kasabelih:", + "allpages-hide-redirects": "midimut miliyaw patatuzu’ kasabelih", + "cachedspecial-refresh-now": "ciwsace sabaluhay a baziyong.", + "categories": "kakuniza", + "categories-submit": "paazih", + "categoriesfrom": "paazih kakuniza miteka i:", + "deletedcontributions": "masipuay a misaungayay paanin", + "linksearch": "ihekal masasiket mikilim", + "linksearch-pat": "mikilim aazihen a sulit:", + "linksearch-ns": "pangangananay a salaedan:", + "linksearch-ok": "kilim", + "listusersfrom": "paazih misaungayay miteka nay:", + "listusers-submit": "paazih", + "listusers-noresult": "caykatepa misaungayay.", + "listusers-blocked": "(malangat tuway)", + "activeusers-from": "paazih misaungayay miteka nay:", + "activeusers-noresult": "caykatepa misaungayay.", + "activeusers-submit": "paazih misaungayay i saungay nu binawlan", + "listgrouprights-group": "luyaluy", + "listgrouprights-rights": "kinli", + "listgrouprights-members": "(sakawaway piazihan tu sulit)", + "listgrouprights-addgroup-all": "micunus sacahamin a luyaluy", + "listgrouprights-removegroup-all": "misipu sacahamin luyaluy", + "listgrouprights-namespaceprotection-header": "pangangananay a salaedan mikelec", + "listgrouprights-namespaceprotection-restrictedto": "mahasa misaungayay mikawaway-kalumyiti a tungus", + "listgrants": "pabeli tu kinli", + "listgrants-rights": "kinli", + "trackingcategories": "mikilul nazikuzan kakuniza", + "trackingcategories-desc": "kakuniza milisimet a tatungus", + "restricted-displaytitle-ignored": "sekipo paazih satangah a kasabelih", + "trackingcategories-nodesc": "inayi’ ku silaheciay a sapuelac", + "trackingcategories-disabled": "mapasatezep kakuniza tuway", + "mailnologin": "inayi’ pabahel puenengan", + "usermaildisabled": "mapasatezep imyiyo(email)", + "emailusername": "misaungayay a kalungangan:", + "emailusernamesubmit": "patayzaan", + "emailfrom": "patigamiay:", + "emailto": "katukuh:", + "emailsubject": "satangahan:", + "emailmessage": "palatuh:", + "emailsend": "patigamitu", + "watchlist": "miazihay a piazihan tu sulit", + "mywatchlist": "miazihay a piazihan tu sulit", + "watchnologin": "caay henay patalabu", + "addwatch": "cunusen tu miazihay a piazihan-tu-sulit", + "removewatch": "misipu nay misisip a piazihan-tu-sulit", + "watch": "miazih", + "watchthispage": "miazih tuyni kasabelih", + "unwatch": "palawpes aazihan", + "unwatchthispage": "pahanhan miazih", + "notanarticle": "caay ku lacul nu kasabelih", + "watchlist-hide": "midimut", + "wlshowtime": "apaazihay a tuki-tenes:", + "wlshowhideminor": "cayka yadah ku misumad", + "wlshowhidebots": "kikay a tademaw", + "wlshowhideliu": "napangangan a misaungayay", + "wlshowhideanons": "paceba panganganay a misaungayay", + "wlshowhidepatr": "tayza mikibi mikawaway-kalumyiti", + "wlshowhidemine": "numakuay a mikawaway-kalumyiti", + "wlshowhidecategorization": "kasabelih nu kakuniza", + "watchlist-options": "misisipa piazihan-tu-sulit a syinsiang", + "unwatching": "palawpes aazihan...", + "enotif_anon_editor": "paceba panganganay a misaungayay $1", + "enotif_minoredit": "payni mikilulay a mikawaway-kalumyiti", + "deletepage": "misipu tu kasabelih", + "confirm": "malucekaytu", + "delete-confirm": "misipu \"$1\"", + "historyaction-submit": "paazih", + "actioncomplete": "pahezek tu ku saungay", + "actionfailed": "saungay mungangaw", + "dellogpage": "masipu ku nasulitan nakawawan", + "deletionlog": "masipu nasulitan nazipa’an", + "reverted": "patiku ayaway a baziyong", + "deletecomment": "mahicaay:", + "deleteotherreason": "zumaay/nicunusay a mahicaay:", + "deletereasonotherlist": "zuma a mahicaay", + "rollback": "panukasan mikawaway-kalumyiti", + "rollbacklink": "panukasan", + "rollbacklinkcount": "patiku {{PLURAL:$1|mikawaway tu kalumyiti}}", + "rollbackfailed": "patiku mungangaw", + "rollback-missingparam": "milunguc caay kataneng kasasulul aazihen a sulyang.", + "rollback-missingrevision": "la’cus pacumud masumad nu ayaway a kalunasulitan.", + "sessionfailure-title": "kasasiket mungangaw", + "changecontentmodel": "misumad lacul tatudungen misanga’", + "changecontentmodel-title-label": "kasabelih satangahan", + "changecontentmodel-model-label": "tatudungen misanga’ nu baluhay a lacul", + "changecontentmodel-reason-label": "mahicaay:", + "changecontentmodel-emptymodels-title": "inayi’ ku silaheciay a lacul tatudungen-misanga", + "protectlogpage": "midiput nasulitan nakawawan", + "protect-badnamespace-title": "pangangananay a salaedan amana midiput", + "protect-legend": "malucekay tu midiputay", + "protectcomment": "mahicaay:", + "protectexpiry": "kakatekuhan:", + "protect_expiry_invalid": "la’cusay a kakatekuhan", + "protect_expiry_old": "Expiration time is in the past.", + "protect-default": "mahasa sacahamin misaungayay", + "protect-level-sysop": "mahasa mikuwanay a cacay", + "protect-summary-cascade": "patatusul", + "protect-expiring": "kakatekuhan $1 (UTC)", + "protect-expiring-local": "kakatekuhan katukuh i $1", + "protect-expiry-indefinite": "inayi’ u sungliw", + "protect-othertime": "zuma a tatukian:", + "protect-existing-expiry-infinity": "masetin tuway a kakatekuhan: inayi’kakatekuhan", + "protect-otherreason": "zumaay/nicunusay a mahicaay:", + "protect-otherreason-op": "zuma a mahicaay", + "protect-edit-reasonlist": "midiput a mahicaay nu mikawaway-kalumyiti", + "restriction-type": "tungus:", + "restriction-level": "kelec kasaselal:", + "minimum-size": "makaadidi’ay a sausi", + "maximum-size": "sakatabakiay a sausi:", + "pagesize": "(wyiyincu)", + "restriction-edit": "mikawaway-kalumyiti", + "restriction-move": "milimad", + "restriction-create": "patizeng", + "restriction-upload": "patapabaw", + "restriction-level-sysop": "maenapay a diput", + "restriction-level-autoconfirmed": "lalusa-diput", + "restriction-level-all": "amahicahicaay a kasalelal", + "undelete-fieldset-title": "patiku misumad nu ayaway", + "undelete-nodiff": "inayi’ nasawniay a sumad.", + "undeletebtn": "patiku", + "undeleteinvert": "kabelihan mipili’", + "undeletecomment": "mahicaay:", + "undelete-search-title": "mikilim masipuay a kasabelih", + "undelete-search-prefix": "paazih kasabelih miteka nay:", + "undelete-search-submit": "kilim", + "undelete-error": "palawpes masipu kasabelih mungangaw", + "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", + "contributions-title": "$1 a misaungayay a paanin", + "mycontris": "paanin", + "anoncontribs": "paanin", + "uctop": "(ayza)", + "month": "sazikuzay demiad nabuladan:", + "year": "sazikuzay demiad mihcaan:", + "sp-contributions-newbies": "paazih a cacay baluhay canghaw a paanin", + "sp-contributions-newbies-sub": "paanin nu baluhay a canghaw", + "sp-contributions-newbies-title": "misaungayay paanin nu baluhay canghaw", + "sp-contributions-blocklog": "milangat tu nasulitan nakawawan", + "sp-contributions-uploads": "patapabaw", + "sp-contributions-logs": "nasulitan nakawawan", + "sp-contributions-talk": "sasukamu", + "sp-contributions-search": "mikilim tu paanin", + "sp-contributions-toponly": "paazih a cacay sabaluhay masumad nu ayaway a mikawaway-kalumyiti", + "sp-contributions-newonly": "paazih a cacay patizeng kasabelih a mikawaway-kalumyiti", + "sp-contributions-hideminor": "midimut mikilulay mikawaway-kalumyiti", + "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 patatuzu’", + "istemplate": "palaculen tu kasabelih", + "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": "sakacucek nu misapili’", + "whatlinkshere-submit": "mileku", + "block": "milangat misaungayay", + "blockip-legend": "milangat misaungayay", + "ipbexpiry": "kakatekuhan:", + "ipbreason": "mahicaay:", + "ipbsubmit": "milangat tina misaungayay", + "ipbother": "zuma a tatukian:", + "ipb-confirm": "malucekay tu langat", + "badipaddress": "la’cusay a IP puenengan", + "blockipsuccesssub": "milangat malahci", + "ipb-edit-dropdown": "malangat a mahicaay nu mikawaway-kalumyiti", + "ipb-unblock-addr": "mihulak tu langat $1", + "ipb-blocklist": "ciwsace katukuhayza a langat", + "ipb-blocklist-duration-left": "$1 pakawili", + "ipusubmit": "misipu tina langat", + "unblocked-range": "mahulak tu ku langat $1.", + "blocklist": "malangatay tu a misaungayay", + "autoblocklist-submit": "kilim", + "ipblocklist": "malangatay tu a misaungayay", + "ipblocklist-legend": "mikilim malangatay a misaungayay", + "blocklist-userblocks": "midimut canghaw malangat", + "blocklist-tempblocks": "midimut nanunuz malangat", + "blocklist-addressblocks": "midimut sacacay IP milangat", + "blocklist-rangeblocks": "midimut IP subal milangat", + "blocklist-timestamp": "demiad tatukian", + "blocklist-target": "pabalucu’an", + "blocklist-expiry": "kakatekuhan", + "blocklist-by": "milangat a mikuwanay", + "blocklist-params": "milangat tu aazihen a sulyang", + "blocklist-reason": "mahicaay", + "ipblocklist-submit": "kilim", + "ipblocklist-localblock": "milangat itiniay", + "infiniteblock": "inayi’ u sungliw", + "expiringblock": "$1 $2 hatinitu", + "anononlyblock": "wiza dada’ paceba panganganay ku misaungayay", + "noautoblockblock": "mapasatezep lunuk milangat", + "createaccountblock": "canghaw patizeng mapasatezep tuway", + "emailblock": "mapasatezep imyiyo(email)", + "blocklink": "milangat", + "unblocklink": "mihulak tu langat", + "change-blocklink": "misumad tu langat", + "contribslink": "paanin", + "emaillink": "pabahel imyiyo(email)", + "blocklogpage": "milangat tu nasulitan nakawawan", + "unblocklogentry": "mahulak malangat $1 tuway", + "block-log-flags-anononly": "wiza dada’ paceba panganganay ku misaungayay", + "block-log-flags-nocreate": "canghaw patizeng mapasatezep tuway", + "block-log-flags-noautoblock": "mapasatezep lunuk milangat", + "block-log-flags-noemail": "mapasatezep imyiyo(email)", + "block-log-flags-angry-autoblock": "pangaleb lunuk-langat mawawah tuway", + "ipb_already_blocked": "malangat \"$1\" tuway.", + "ip_range_invalid": "la’cusay IP subal.", + "proxyblocker": "kutay sefuci-kikay milangat-kikay", + "lockdb": "pamutek tu sulu nu kalunasulitan", + "lockbtn": "pamutek tu sulu nu kalunasulitan", + "lockdbsuccesssub": "malahci pamutek sulu nu nasulitan tuway", + "unlockdbsuccesssub": "misipu pamutek tu sulu nu kalunasulitan tuway", + "databaselocked": "pamutek tuway ku sulu nu nasulitan.", + "databasenotlocked": "caay pamutek henay ku sulu nu nasulitan.", + "move-page": "milimad $1", + "move-page-legend": "milimad kasabelih", + "newtitle": "baluhay satangahan:", + "movepagebtn": "milimad kasabelih", + "pagemovedsub": "milimad malaheci tuway", + "movepage-moved-redirect": "patizeng miliyawtu patatuzu’ kasabelih tuway.", + "movetalk": "milimad mahizaay sasukamu kasabelih", + "movelogpage": "milimad ku nasulitan nakawawan", + "movereason": "mahicaay:", + "delete_and_move_confirm": "hang, masipu tina kasabelih", + "immobile-source-page": "tina belih la’cus milimad.", + "immobile-target-page": "la’cus milimad katukuh nabalucu’a satangahan.", + "imageinvalidfilename": "papatuzu’an a tangan kalungangan la’cus.", + "move-leave-redirect": "miliwan miliyaw patatuzu’ kasabelih", + "export": "patahkal ku kasabelih", + "exportall": "patahkal sacahamin kasabelih", + "export-submit": "patahkal", + "export-addcattext": "pisaungay kakuniza cunusen kasabelih:", + "export-download": "misuped sapatangan", + "export-templates": "yamalyilu taazihan mitudung", + "export-pagelinks": "yamalyilu masasiket a kasabelih ilabu:", + "export-manual": "tiyung ku lima micunus kasabelih:", + "allmessages": "sisetyimo palatuh", + "allmessagesname": "kalungangan", + "allmessagesdefault": "pataayaw tu kawaw palatuh a sulit", + "allmessages-filter-legend": "kilim", + "allmessages-filter": "kilul misumad zasatu mikilim:", + "allmessages-filter-unmodified": "caay henay misumad", + "allmessages-filter-all": "hamin", + "allmessages-filter-modified": "masumad tuway", + "allmessages-prefix": "ahizan saayaway a sulit mikilim:", + "allmessages-language": "kamu:", + "allmessages-filter-submit": "mileku", + "allmessages-filter-translate": "mibelih", + "thumbnail-more": "patabaki(micuwat)", + "filemissing": "tangan mahedaw", + "thumbnail_error": "patizeng sukep tu zunga mungangaw: $1", + "thumbnail-dest-create": "la’cus misuped sukep tu zunga ta pabalucu’an", + "thumbnail_toobigimagearea": "tangan a ditek mangasiw $1", + "thumbnail_dest_directory": "la’cus patizeng papatuzu’an a dilyikotoling", + "thumbnail_image-type": "caypi damaenay a zunga nikalahizaan", + "thumbnail_image-missing": "tangan mahedaw: $1", + "import": "pacumuden kasabelih", + "import-interwiki-sourcewiki": "saangangan Wiki:", + "import-interwiki-sourcepage": "saangangan kasabelih:", + "import-interwiki-templates": "yamalyilu sacahamin taazihan mitudung", + "import-interwiki-submit": "pacumud", + "import-mapping-namespace": "pacumud i pangangananay a salaedan:", + "import-upload-filename": "kalungangan nu tangan:", + "import-comment": "pacunus sakacaay kapawan:", + "import-revision-count": "$1 {{PLURAL:$1|masumad nu ayaway}}", + "importnopages": "inayi’ mapacumuday a kasabelih.", + "importunknownsource": "caykapulita a nikalahizaan nu pacumud a saangangan", + "importcantopen": "la’cusay miwawah pacumuday a tangan", + "importsuccess": "pahezek tuway pacumud!", + "importnofile": "caay henay papabaw pacumud tangan.", + "import-upload": "patapabaw XML kalunasulitan", + "importlogpage": "pacumuden nasulitan nazipa’an", + "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-kalumyiti uyni a 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-protect": "midiput tina kasabelih", + "tooltip-ca-unprotect": "misumad tuyniay a sadiput", + "tooltip-ca-delete": "misipu tina kasabelih", + "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-info": "yadah mahizaay tina kasabelih a cesyun", + "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-media": "ciwsace myiti 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-mediawiki": "ciwsace sisetyimo palatuh", + "tooltip-ca-nstab-template": "ciwsace taazihan mitudung", + "tooltip-ca-nstab-help": "ciwsace buhci tu kamu kasabelih", + "tooltip-ca-nstab-category": "ciwsace kakuniza a kasabelih", + "tooltip-minoredit": "silusi tina tu payni mikilulay a mikawaway-kalumyiti", + "tooltip-save": "misuped misuay a pisumad", + "tooltip-publish": "patiyak tu sumad nu misu", + "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-watchlistedit-normal-submit": "misipu satangahan", + "tooltip-watchlistedit-raw-submit": "misabaluhay misisip tu piazihan-tu-sulit", + "tooltip-upload": "miteka patapabaw", + "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-preferences-save": "pisuped tu setin nu kanamuhan", + "tooltip-summary": "kapisulitan apuyu’ay a pecu’ nu lacul", + "others": "zuma", + "creditspage": "kasabelih kasakumi nu misayingaay", + "spamprotectiontitle": "misapili’ a cengse nu babakahen a sulit", + "simpleantispam-label": "sapi tena’ babakahen a sulit kinsa.\nyu amana misulit kuyni pisinga’an!", + "pageinfo-title": "\"$1\" a cesyun", + "pageinfo-header-basic": "anganganay a cesyun", + "pageinfo-header-edits": "nazipa’an nu mikawaway-kalumyiti", + "pageinfo-header-restrictions": "kasabelih midiput", + "pageinfo-header-properties": "susin nu kasabelih", + "pageinfo-display-title": "paazih tu satangahan", + "pageinfo-length": "kasabelih a tanaya’ (wyiyincu)", + "pageinfo-article-id": "kasabelih ID", + "pageinfo-language": "kasabelih lacul a kamu", + "pageinfo-language-change": "misumad", + "pageinfo-content-model": "kasabelih a lacul tatudungen misanga’", + "pageinfo-content-model-change": "misumad", + "pageinfo-robot-policy": "nay kikay-tademaw patizeng kapah pikiliman tu nisulitan miasip", + "pageinfo-robot-noindex": "amana", + "pageinfo-watchers": "kasabelih miazihay a nikayadah", + "pageinfo-subpages-name": "tina belih a sailuc-kasabelih nikayadah", + "pageinfo-firstuser": "kasabelih patizengay", + "pageinfo-firsttime": "patizeng demiad nu kasabelih", + "pageinfo-lastuser": "capiay a mikawaway-kalumyiti", + "pageinfo-lasttime": "capiay a demiad nu mikawaway-kalumyiti", + "pageinfo-edits": "pulung nikayadah nu mikawaway-kalumyiti", + "pageinfo-authors": "papina nu masacudaday", + "pageinfo-recent-authors": "capiay masacudaday a nikayadah", + "pageinfo-toolboxlink": "kasabelih cesyun", + "pageinfo-redirectsto-info": "katinengan", + "pageinfo-contentpage": "miasip papi lacul kasabelih", + "pageinfo-contentpage-yes": "hang", + "pageinfo-protect-cascading": "namakayni miteka patatusul midiput", + "pageinfo-protect-cascading-yes": "hang", + "pageinfo-protect-cascading-from": "patatusul midiput namakay", + "pageinfo-category-info": "kakuniza a cesyun", + "pageinfo-category-total": "papina nu sakawaway", + "pageinfo-category-pages": "kasabelih nikayadah", + "pageinfo-category-subcats": "sailuc-kasasizuma nikayadah", + "pageinfo-category-files": "tangan nikayadah", + "pageinfo-user-id": "misaungayay ID", + "markaspatrolleddiff": "silusi natayza mikibi tuway", + "markedaspatrolled": "silusi natayza mikibi tuway", + "rcpatroldisabled": "mapasatezep tu ku capi-demiad misumad tayza-mikibi", + "markedaspatrollederrornotify": "silusi tayza-mikibi mungangaw.", + "patrol-log-page": "tayza mikibi nasulitan nazipa’an", + "log-show-hide-patrol": "$1 tayza mikibi nasulitan nazipa’an", + "log-show-hide-tag": "$1 aazihen a paya nasulitan nazipa’an", + "confirm-markpatrolled-button": "malucekay", + "deletedrevision": "masipu malumanay misumad nu ayaway $1", + "previousdiff": "← malumanay a mikawaway tu kalumyiti", + "nextdiff": "baluhayay mikawaway tu kalumyit →", + "thumbsize": "sukep tu zunga hacica-tabaki:", + "widthheightpage": "$1 × $2, $3 {{PLURAL:$3|ku kasabelih}}", + "file-info-size": "$1 × $2 syangsu, hacica ku tabaki nu tangan: $3, MIME kakuniza: $4", + "file-info-size-pages": "$1 × $2 syangsu, hacica ku tabaki nu tangan:$3,MIME kakuniza: $4, $5 {{PLURAL:$5|ku kasabelih}}", + "file-nohires": "inay ku sangaleb takalaway a katingalaw, kapah tu nipabeli.", + "svg-long-desc": "SVG tangan, maazihay hacica ku tabaki $1 × $2 syangsu, tangan hacica ku tabaki: $3", + "show-big-image": "saayaway a tangan", + "show-big-image-preview": "pataayaway miazih hacica ku tabaki: $1.", + "show-big-image-size": "$1 × $2 syangsu", + "file-info-gif-looped": "palalacalen", + "file-info-gif-frames": "$1 {{PLURAL:$1|kulit sapat}}", + "file-info-png-frames": "$1 {{PLURAL:$1|kulit sapat}}", + "newimages": "baluhay tangan a sulu nu zunga", + "newimages-legend": "kilim", + "newimages-newbies": "paazih a cacay baluhay canghaw a paanin", + "noimages": "inayi’ amahicahica tu zunga.", + "gallery-slideshow-toggle": "ketun mibalic sukep tu zunga", + "ilsubmit": "kilim", + "bydate": "ahizan tu demiad", + "seconds": "$1 a {{PLURAL:$1|abeti}}", + "minutes": "{{PLURAL:$1|$1 widi}}", + "hours": "{{PLURAL:$1|$1 tuki}}", + "days": "$1 {{PLURAL:$1|a demiad}}", + "ago": "ayaw nu $1", + "just-now": "nasawni", + "hours-ago": "ayaw $1 {{PLURAL:$1|a tuki}}", + "minutes-ago": "ayaw $1 {{PLURAL:$1|widi}}", + "seconds-ago": "ayaw $1 {{PLURAL:$1|a beti}}", + "monday-at": "sakacacay a demiad nu lipay i$1", + "tuesday-at": "sakatusa a demied nu lipay i $1", + "wednesday-at": "saka tulu i $1", + "thursday-at": "sakasepat i $1", + "friday-at": "sakalima a demied nu lipay i $1", + "saturday-at": "sakaenem a demiad nu lipay i $1", + "sunday-at": "pilipayan i $1", + "yesterday-at": "nacila i $1", + "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-expand": "paazih pulita kalunasulitan", + "metadata-collapse": "midimut pulitaay a kalunasulitan", + "metadata-fields": "i tini palatuh patahkal i labuay a EXIF pulita tu kalunasulitanay a kakitizaan, yamalyilu i zunga paazih kasabelih, sapipulita tu cudad nu nasulitan malepi’ paazih palatuh.\nzumaay a pulita tu cudad pataayaw tu kawaw midimut.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude", + "exif-imagewidth": "ahebal", + "exif-imagelength": "takalaw sulyang", + "exif-bitspersample": "paysyangsuay a wyiyin", + "exif-compression": "piepian mipecec a sasakawawen", + "exif-photometricinterpretation": "pacamel-palacul tu syangsu", + "exif-orientation": "papayzaan", + "exif-samplesperpixel": "syangsu nikayadah", + "exif-planarconfiguration": "kalunasulitan misilsil", + "exif-xresolution": "sasuala katingalaw", + "exif-yresolution": "mitelekay katingalaw", + "exif-stripoffsets": "iga kalunasulitan kakitizaan", + "exif-rowsperstrip": "cacay ku kaus papina ku tusil", + "exif-jpeginterchangeformatlength": "JPEG kalunasulitan wyiyincu", + "exif-whitepoint": "sangelacay hacica-kulit", + "exif-primarychromaticities": "sausi sulyang nu kulit", + "exif-referenceblackwhite": "umeniay-sangelacay miazih tu tatenga’ay nikayadah", + "exif-datetime": "tangan misumaday a demiad atu tuki", + "exif-imagedescription": "satangahan nu iga", + "exif-make": "sasasing-kikay misanga’ tu kalutuuday", + "exif-model": "sasasing nu nisanga’an a banggu", + "exif-software": "pisaungay zwanti", + "exif-artist": "masacudaday", + "exif-copyright": "nizaay nisanga’an tu tungus a kawaw", + "exif-exifversion": "Exif baziyong / sapad", + "exif-colorspace": "kalukulit salaedan", + "exif-componentsconfiguration": "paysyangsu yamalyilu", + "exif-compressedbitsperpixel": "iga piepian mipecec a muse", + "exif-pixelxdimension": "zunga nu hacica-ahebal", + "exif-pixelydimension": "zunga nu hacica-takalaw", + "exif-usercomment": "misaungayay a buhci tu kamu", + "exif-datetimeoriginal": "kalunasulitan masangaay’ a demiad atu tuki", + "exif-datetimedigitized": "suwyihwaay a demiad atu tuki", + "exif-exposuretime": "mapaedil a lawad", + "exif-exposuretime-format": "$1 beti ($2)", + "exif-exposureprogram": "mapaedil a muse", + "exif-spectralsensitivity": "edil-selal saahemi’han", + "exif-isospeedratings": "ISO suli", + "exif-shutterspeedvalue": "APEX kiyata a kalamkam", + "exif-aperturevalue": "APEX edil", + "exif-brightnessvalue": "APEX likat", + "exif-exposurebiasvalue": "APEX mapaedil", + "exif-maxaperturevalue": "satabakiay a likat-mulu i lala’ nu kitakit", + "exif-subjectdistance": "ilaed nu satangahan", + "exif-meteringmode": "miditek tu edil a muse", + "exif-lightsource": "katahkalan nu likat", + "exif-flash": "sabelabelatay a tinghuy", + "exif-focallength": "saed nu sapisasing", + "exif-subjectarea": "sausi a kakitizaan", + "exif-flashenergy": "sabelabelatay a tinghuy u icelang", + "exif-focalplanexresolution": "X couciaw kimpi’ katingalaw", + "exif-focalplaneresolutionunit": "edil-sanat a sapat katingalaw tatebanan nu nisulitan", + "exif-subjectlocation": "kakitizaan nu satangahan", + "exif-exposureindex": "mapaedil a sulyang", + "exif-sensingmethod": "mise nu nikasumad nay edil", + "exif-filesource": "saangangan nu tangan", + "exif-scenetype": "makaazihay nikalahizaan", + "exif-customrendered": "pakuniza misanga’ iga", + "exif-whitebalance": "sapalalen nu salengacay", + "exif-focallengthin35mmfilm": "35 hawmi hwyilumu saed nu sapisasing", + "exif-scenecapturetype": "makaazihay masasing nikalahizaan", + "exif-gaincontrol": "makaazihay misimaw", + "exif-contrast": "e-contrast", + "exif-saturation": "matumesay a sulyang", + "exif-sharpness": "kacidem", + "exif-devicesettingdescription": "sakaluk setin sapuelac", + "exif-subjectdistancerange": "baat nu tatizengan a liwliw", + "exif-gpsversionid": "GPS baziyong nu aazihen a paya", + "exif-gpslatituderef": "pyiwyi asaca nanwyi", + "exif-gpslongituderef": "tongcing asaca sicing", + "exif-gpsaltituderef": "nutakalaw namakay bayu’ miazih tu tatenga’ay a sulyang", + "exif-gpssatellites": "sapiditekay a zizuisi", + "exif-gpsstatus": "pizawis sakaluk setyitase", + "exif-gpsmeasuremode": "miditek a muse", + "exif-gpsdop": "miditek a tatungus", + "exif-gpsspeedref": "saduba’ kalamkam a sacacaycacay", + "exif-gpsspeed": "GPS pizawis-sakaluk saduba’ kalamkam", + "exif-gpsmapdatum": "pisaungay ulaulangan miditek a kalunasulitan", + "exif-gpsdestlatitude": "pabalucu’an a wyitu", + "exif-gpsdestlongituderef": "pabalucu’an a cintu", + "exif-gpsprocessingmethod": "GPS saungay sasakawawen kalungangan", + "exif-gpsdatestamp": "GPS a demiad", + "exif-gpsdifferential": "GPS chafen misumad", + "exif-jpegfilecomment": "JPEG tangan pacunus sakacaay kapawan", + "exif-keywords": "aazihen dulit", + "exif-worldregioncreated": "zunga masasing a kakitizaan", + "exif-countrycreated": "zunga masasingan a kanatal", + "exif-provinceorstatecreated": "yakuwanan a sasing", + "exif-citycreated": "yatukay a sasing", + "exif-worldregiondest": "paazih tu subal nu kitakit", + "exif-countrydest": "paazih tu kanatal", + "exif-countrycodedest": "paazih kanatal a kodo", + "exif-provinceorstatedest": "paazih seng asaca cou", + "exif-citydest": "paazihay a tukay", + "exif-sublocationdest": "paazih tukay pulita kahicelaan", + "exif-objectname": "sapuyuay a ngangan", + "exif-specialinstructions": "sazumaay buhci tu kamu", + "exif-headline": "satangahan", + "exif-credit": "misanga’/nipabeli’ay", + "exif-source": "saangangan", + "exif-editstatus": "zunga setyitase nu binawlan sapuelac", + "exif-urgency": "hacica ku kalah", + "exif-fixtureidentifier": "Fixture kalungangan", + "exif-locationdest": "patahkal kahicelaan", + "exif-locationdestcode": "kakitizaan kodo sapuelac", + "exif-objectcycle": "myiti saungay a takukian", + "exif-contact": "patakusan a cesyun", + "exif-writer": "misacudaday", + "exif-languagecode": "kamu", + "exif-iimversion": "IIM baziyong", + "exif-iimcategory": "kakuniza", + "exif-iimsupplementalcategory": "micunus kakuniza", + "exif-datetimeexpires": "nuzikuz tina demiad amana pisaungay", + "exif-datetimereleased": "patiyak i", + "exif-originaltransmissionref": "saayaway miculu’ kakitizaan a kodo", + "exif-identifier": "mapulitaay a kodo", + "exif-lens": "pisaungay tu cingtou", + "exif-serialnumber": "sasasing salaylay a banggu", + "exif-cameraownername": "sasasing nizaay", + "exif-label": "aazihen paya", + "exif-nickname": "caykaw tatengaay a zunga kalungangan", + "exif-rightscertificate": "nisanga’an niza tu tungus a kawaw nu makuwanay a pincen", + "exif-copyrighted": "nisanga’an niza tu tungus a kawaw setyitase", + "exif-copyrightowner": "nizaay nisanga’an tu tungus a kawaw", + "exif-usageterms": "mamaala a cedang", + "exif-webstatement": "nabalucu'an nu i telay nisanga’an niza tu tungus a kawaw", + "exif-originaldocumentid": "kinacacay mapulitaay a kodo nu saayaway a cudad", + "exif-licenseurl": "nisanga’an niza tu tungus a kawaw pabeli tu kinli masasiket", + "exif-morepermissionsurl": "paliyuh pabeli tu kinli a cesyun", + "exif-pngfilecomment": "PNG tangan pacunus sakacaay kapawan", + "exif-disclaimer": "caay pimuku tu sikining", + "exif-contentwarning": "lacul mipatalaw", + "exif-giffilecomment": "GIF tangan pacunus sakacaay kapawan", + "exif-intellectualgenre": "kasacacay nikalahizaan", + "exif-subjectnewscode": "kodo nu satangahan", + "exif-scenecode": "IPTC itizaay a kodo", + "exif-event": "sapuelac tu sikikawaw", + "exif-organisationinimage": "sapuelac nu mikumi", + "exif-personinimage": "sapuelac tu tademaw", + "exif-originalimageheight": "takalaway nu caayhen masait", + "exif-originalimagewidth": "misait tu nuayawan a ahebal", + "exif-compression-1": "caay henay piepian mipecec", + "exif-copyrighted-true": "madiput nu nisanga’an niza tu tungus a kawaw", + "exif-copyrighted-false": "caay kapulita nu nisanga’an niza tu tungus a kawaw setyitase", + "exif-photometricinterpretation-1": "lumeniay atu sangelacan (lumeniay u 0)", + "exif-unknowndate": "caay kapulita ku demiad", + "exif-orientation-1": "tatungus", + "exif-orientation-2": "mabelih tu zazay", + "exif-orientation-4": "mabelih tu mitelekay", + "exif-planarconfiguration-1": "pu’nel-kizemu a kese", + "exif-planarconfiguration-2": "kimpi’ a kese", + "exif-colorspace-65535": "caay henay masitudung ku kulit", + "exif-componentsconfiguration-0": "inayi’", + "exif-exposureprogram-0": "caay henay misaheci", + "exif-exposureprogram-1": "palima", + "exif-exposureprogram-2": "tatungus a muse", + "exif-exposureprogram-3": "likat maluayaw", + "exif-exposureprogram-4": "kiyata maluayaw", + "exif-subjectdistance-value": "$1 mi", + "exif-meteringmode-2": "pikuwanan pacunus lalet", + "exif-meteringmode-3": "baniyut-ditek", + "exif-meteringmode-4": "kayadah- baniyut-ditek", + "exif-meteringmode-5": "muse", + "exif-meteringmode-6": "liyad", + "exif-meteringmode-255": "zuma", + "exif-lightsource-1": "likat", + "exif-lightsource-2": "inkwang a tinghuy", + "exif-lightsource-3": "useteng-tinghuy (白熾燈)", + "exif-lightsource-4": "sabelabelatay a tinghuy", + "exif-lightsource-9": "cilalah a demiad", + "exif-lightsource-10": "kenutan", + "exif-lightsource-11": "iduutay", + "exif-lightsource-17": "tatungus likat nu dingki A", + "exif-lightsource-18": "tatungus likat nu dingki B", + "exif-lightsource-19": "tatungus likat nu dingki C", + "exif-lightsource-24": "ISO sasing salaedan a useteng", + "exif-lightsource-255": "zuma katahkalan nu likat", + "exif-flash-fired-0": "sabelabelatay a tinghui caay henay miwawah", + "exif-flash-fired-1": "sabelabelatay a tinghui miwawah tuway", + "exif-flash-return-3": "sabelabelatay sedap-sakaluk sedap tu edil", + "exif-flash-mode-1": "pacici sabelabelatay tinghuy mawawah", + "exif-flash-mode-2": "pacici sabelabelatay tinghuy mapaneng", + "exif-flash-mode-3": "lunuk muse", + "exif-flash-function-1": "inayi’ sasahicaan nu sabelabelatay a tinghui", + "exif-flash-redeye-1": "muse nu kasatezep tu sumanahay a mata", + "exif-focalplaneresolutionunit-2": "incun", + "exif-sensingmethod-1": "caay henay misaheci", + "exif-sensingmethod-2": "cacay cinpyin kulikulitan subal askance-kikay", + "exif-sensingmethod-5": "malaliday a kulikulitan subal kance-kikay", + "exif-sensingmethod-7": "tululait askance-kikay", + "exif-sensingmethod-8": "malaliday a kulikulitan telayan kance-kikay", + "exif-filesource-3": "sulyangay a sasasing", + "exif-scenetype-1": "besuc han misasingay a zunga", + "exif-customrendered-0": "habutuday a laylay", + "exif-customrendered-1": "pakuniza misanga’ay a laylay", + "exif-exposuremode-0": "lunuk mapaedil", + "exif-exposuremode-1": "lima-saungay mapaedil", + "exif-exposuremode-2": "lunuk laup mapacedil", + "exif-whitebalance-0": "lunuk sapalalen nu salengacay", + "exif-whitebalance-1": "lima-saungay sapalalen nu salengacay", + "exif-scenecapturetype-0": "tatungus", + "exif-scenecapturetype-1": "makaazihay", + "exif-scenecapturetype-2": "sassing nu tademaw", + "exif-scenecapturetype-3": "makaazihay nu labiyi", + "exif-gaincontrol-0": "nayi’", + "exif-gaincontrol-1": "adidi’ tu cunusan", + "exif-gaincontrol-2": "takalaw ku cunusan", + "exif-gaincontrol-3": "adidi’ tu selepan", + "exif-gaincontrol-4": "takalaw ku selepan", + "exif-contrast-0": "tatungus", + "exif-contrast-1": "pu’nel", + "exif-contrast-2": "takalaw", + "exif-saturation-0": "tatungus", + "exif-saturation-1": "caykatumesay a kulit", + "exif-saturation-2": "takalaw atu matumes ku kulit", + "exif-sharpness-0": "tatungus", + "exif-sharpness-1": "pu’nel", + "exif-sharpness-2": "takalaw", + "exif-subjectdistancerange-1": "ciyuci", + "exif-subjectdistancerange-2": "pakatepalay a azih", + "exif-subjectdistancerange-3": "pakabatatay a azih", + "exif-gpslatitude-n": "pyiwyi", + "exif-gpslatitude-s": "nanwyi", + "exif-gpslongitude-e": "tongcing", + "exif-gpslongitude-w": "sicing", + "exif-gpsstatus-a": "miditek miteka henay ayza", + "exif-gpsstatus-v": "miditek masasiketay a sausi", + "exif-gpsmeasuremode-2": "tusa-wei miditek", + "exif-gpsmeasuremode-3": "tulu-wei miditek", + "exif-gpsspeed-k": "paytuki a kungli", + "exif-gpsspeed-m": "paytuki a inli", + "exif-gpsspeed-n": "cie (hayli/cacay a tuki)", + "exif-gpsdestdistance-k": "kungli", + "exif-gpsdestdistance-m": "inli", + "exif-gpsdestdistance-n": "hayli", + "exif-gpsdop-excellent": "tada kapah ($1)", + "exif-gpsdop-poor": "la’cus ($1)", + "exif-objectcycle-a": "namalamam a cacay", + "exif-objectcycle-p": "nakalahukan a cacay", + "exif-objectcycle-b": "namalanam atu namalahuk", + "exif-gpsdirection-t": "tatengaay tatuzu’an", + "exif-gpsdirection-m": "tatuzu'an nu tyice", + "exif-ycbcrpositioning-1": "teban", + "exif-ycbcrpositioning-2": "palecad miala tu maaziahan", + "exif-dc-contributor": "paaninay tu kalusasing", + "exif-dc-date": "demiad", + "exif-dc-publisher": "insacay", + "exif-dc-relation": "mahizaay u myiti", + "exif-dc-rights": "kinli", + "exif-dc-source": "saangangan a myiti", + "exif-dc-type": "myiti nikalahizaan", + "exif-rating-rejected": "kakaian", + "exif-isospeedratings-overflow": "satabakien tu 65535", + "exif-iimcategory-clj": "mungangaw atu hulic", + "exif-iimcategory-fin": "kyizay atu syubay", + "exif-iimcategory-edu": "pasubana’ay a kawaw", + "exif-iimcategory-evn": "liwliw", + "exif-iimcategory-hth": "kapah ku uzip", + "exif-iimcategory-hum": "u zazan nu tademaw", + "exif-iimcategory-lab": "makawaw", + "exif-iimcategory-lif": "nikauzip atu pahanhanan", + "exif-iimcategory-pol": "cengcey", + "exif-iimcategory-rel": "papazaan atu papayzaan", + "exif-iimcategory-sci": "kagak atu keci", + "exif-iimcategory-soi": "binawlan a munday", + "exif-iimcategory-spo": "wundukay", + "exif-iimcategory-war": "ngayaw, sasula’cus atu sasibud", + "exif-iimcategory-wea": "demidad", + "exif-urgency-normal": "tatungus ($1)", + "exif-urgency-low": "pu’nel ($1)", + "exif-urgency-high": "takalaw ($1)", + "namespacesall": "hamin", + "monthsall": "hamin", + "recreate": "miliyaw miteka patizeng", + "confirm-purge-title": "misipu tina kasabelih", + "confirm_purge_button": "malucekay", + "confirm-watch-button": "malucekay", + "confirm-unwatch-button": "malucekay", + "confirm-rollback-button": "malucekay", + "quotation-marks": "\"$1\"", + "imgmultipageprev": "ayaway cacay a belih", + "imgmultipagenext": "zikuzan a belih →", + "imgmultigo": "mileku!", + "imgmultigoto": "taayaw saka $1 a blih", + "img-lang-default": "(pataayaw tu kawaw a kamu)", + "img-lang-go": "mileku", + "ascending_abbrev": "masalaylay adidi’ay katukuh tabakiay", + "descending_abbrev": "masalaylay tabakiay katukuh adidi’ay", + "table_pager_next": "zikuzan a belih", + "table_pager_first": "sakacacay a belih", + "table_pager_last": "sazikuzay a kasabelih", + "table_pager_limit_label": "paybelih a sulit:", + "table_pager_limit_submit": "mileku", + "table_pager_empty": "inayi’ ku heci", + "autosumm-blank": "nayi’ ku cacan a kasabelih", + "autosumm-newblank": "patizeng nayi’ ku cacan a kasabelih", + "watchlistedit-normal-title": "miazihay a piazihan tu sulit nu mikawaway-kalumyiti", + "watchlistedit-normal-legend": "nay miazihay a piazihan-tu-sulit misipu satangahan", + "watchlistedit-normal-submit": "misipu satangahan", + "watchlistedit-raw-title": "mikawaway-kalumyiti saayaway misisip a piazihan-tu-sulit", + "watchlistedit-raw-submit": "misabaluhay misisip tu piazihan-tu-sulit", + "watchlistedit-clear-title": "misipu miazihay a piazihan tu sulit", + "watchlisttools-clear": "misipu miazihay a piazihan tu sulit", + "watchlisttools-view": "ciwsace mahizaay a sumad", + "watchlisttools-raw": "mikawaway-kalumyiti saayaway misisip a piazihan-tu-sulit", + "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1| sasukamu ]])", + "timezone-local": "itizaay", + "version": "baziyong", + "version-extensions": "malacul tu sacunusan a sakaluk", + "version-skins": "malacul tu nuhekalan", + "version-specialpages": "sazumaay a kasabelih", + "version-parserhooks": "kulawid nu saheciay sakaluk", + "version-variables": "masumaday-sausi", + "version-antispam": "mitena’ tu babakahen a latuh", + "version-other": "zuma", + "version-mediahandlers": "myiti saungayay a sakaluk", + "version-hooks": "kulawid", + "version-parser-function-hooks": "kamu-sakilul mapulita sapisausi makulawit", + "version-hook-name": "kalawid a kalungangan", + "version-hook-subscribedby": "pangangan", + "version-no-ext-name": "[caay henay pangangan]", + "version-skin-colheader-name": "nuhekalan", + "version-ext-colheader-version": "baziyong", + "version-ext-colheader-license": "sapabeli tu kinli a cedang", + "version-ext-colheader-description": "sapuelac", + "version-ext-colheader-credits": "masacudaday", + "version-license-title": "$1 a sapabeli tu kinli a cedang", + "version-credits-title": "$1 a kasakumi nu misayingaay", + "version-poweredby-others": "zuma", + "version-software": "malacul tu ku zwanti", + "version-software-product": "nasang’ay a tuutuud", + "version-software-version": "baziyong", + "version-entrypoints": "sacumud URL", + "version-entrypoints-header-url": "URL", + "version-libraries-library": "sulu nu cengse", + "version-libraries-version": "baziyong", + "version-libraries-license": "sapabeli tu kinli a cedang", + "version-libraries-description": "sapuelac", + "version-libraries-authors": "masacudaday", + "redirect-submit": "mileku", + "redirect-lookup": "palalitemuh tu kawaw:", + "redirect-value": "sulyang:", + "redirect-page": "kasabelih ID", + "redirect-file": "kalungangan nu tangan", + "redirect-logid": "nasulitan nazipa’an ID", + "redirect-not-exists": "caykatepa ku sulyang", + "fileduplicatesearch": "mikilim masaliyaw a tangan", + "fileduplicatesearch-filename": "kalungangan nu tangan:", + "fileduplicatesearch-submit": "kilim", + "specialpages": "sazumaay a kasabelih", + "specialpages-group-maintenance": "aazihen a cudad nu midiputay", + "specialpages-group-other": "sazumaay cidek a kasabelih", + "specialpages-group-login": "patalabu / panganganen ku canghaw", + "specialpages-group-users": "misaungayay atu tungus", + "specialpages-group-highuse": "sawsawniay a kasabelih", + "specialpages-group-pages": "piazihan tu sulit nu kasabelih", + "specialpages-group-pagetools": "kasabelih sakaluk", + "specialpages-group-wiki": "kalunasulitan atu sakaluk", + "specialpages-group-redirects": "miliyaw patatuzu’ mahizaay sazumaay a kasabelih", + "specialpages-group-developer": "saayaway miteka a misakakawaway sakaluk", + "blankpage": "salengacay a kasabelih", + "tags": "kapah misumad tu tazihan a paya", + "tag-filter": "[[Special:Tags|aazihen paya]] kilim:", + "tag-filter-submit": "kilim", + "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|aazihen paya’}}]]: $2)", + "tag-mw-contentmodelchange": "lacul tatudungen misanga’ misumad", + "tags-title": "aazihen a paya", + "tags-tag": "aazihen a paya kalungangan", + "tags-source-header": "saangangan", + "tags-active-header": "miwawah", + "tags-actions-header": "saungay", + "tags-active-yes": "hang", + "tags-active-no": "caay", + "tags-source-extension": "nay misaheci nu zwanti", + "tags-source-none": "caytu pisaungay", + "tags-delete": "masipu", + "tags-activate": "miteka’", + "tags-deactivate": "mapasatezep", + "tags-hitcount": "$1 {{PLURAL:$1|misumad}}", + "tags-create-heading": "patizeng baluhay aazihen a paya", + "tags-create-tag-name": "aazihen a paya kalungangan:", + "tags-create-reason": "mahicaay:", + "tags-create-submit": "patizeng", + "tags-delete-title": "misipu tu aazihen a paya", + "tags-delete-reason": "mahicaay:", + "tags-delete-submit": "la’cus palawpes misipu tina aazihen a paya", + "tags-activate-title": "miteka aazihen a paya", + "tags-activate-reason": "mahicaay:", + "tags-activate-submit": "miteka’", + "tags-deactivate-title": "mapasatezep tu aazihen a paya", + "tags-deactivate-reason": "mahicaay:", + "tags-edit-title": "aazihen a paya mikawaway-kalumyiti", + "tags-edit-manage-link": "aazihen a paya nu kuwan", + "tags-edit-existing-tags-none": "inayi’", + "tags-edit-new-tags": "baluhay aazihen a paya:", + "tags-edit-add": "micunus uyniyay aazihen a paya:", + "tags-edit-chosen-placeholder": "mipili’ hatizaay aazihen a paya", + "tags-edit-chosen-no-results": "inayi’ aazihen a paya matatungus sakacucek", + "tags-edit-reason": "mahicaay:", + "tags-edit-success": "macaedung tu ku sasumad.", + "comparepages": "sasutili’ay a kasabelih", + "compare-page1": "sakacacay a belih", + "compare-page2": "sakatusa a belih", + "compare-rev1": "misumad nu ayaway 1", + "compare-rev2": "misumad nu ayaway 2", + "compare-submit": "sasutili’ay", + "diff-form": "sasizuma", + "permanentlink": "saluimengay misiket", + "dberr-info-hidden": "(la’cus misuped-miala sulu nu nasulitan)", + "htmlform-required": "sasuliten kuyni.", + "htmlform-submit": "patayzaan", + "htmlform-reset": "patiku masumaday", + "htmlform-selectorother-other": "zuma", + "htmlform-no": "caay", + "htmlform-yes": "hang", + "htmlform-cloner-create": "ngalepen tu cunus", + "htmlform-cloner-delete": "milimad", + "htmlform-time-placeholder": "HH:MM:SS", + "htmlform-title-not-exists": "$1 inayi’", + "htmlform-user-not-exists": "$1 inayi’", + "logentry-delete-delete": "$1 {{GENDER:$2|masiputu}} kasabelih $3", + "restore-count-files": "{{PLURAL:$1|1 tangan}}", + "revdelete-content-hid": "madimut tu ku lacul", + "revdelete-content-unhid": "palawpes midimut tu lacul", + "revdelete-summary-unhid": "palawpes midimut mikawaway-kalumyiti pecu’ nu lacul", + "revdelete-uname-unhid": "palawpes midimut misaungayay a kalungangan", + "revdelete-restricted": "caedung mikuwanay a kelec tuway", + "revdelete-unrestricted": "masipu tu ku mikuwanay a kelec", + "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", + "log-name-managetags": "aazihan-paya kuwan tu nasulitan", + "log-name-tag": "aazihen a paya nasulitan nazipa’an", + "rightsnone": "(nayi’)", + "feedback-back": "tatiku", + "feedback-cancel": "palawpes", + "feedback-close": "malahecitu", + "feedback-external-bug-report-button": "munday nu patubeli", + "feedback-dialog-title": "patahkal tu kamu mihwidubaku", + "feedback-message": "palatuh:", + "feedback-subject": "satangahan:", + "feedback-submit": "patayzaan", + "feedback-thanks-title": "kukay tisuwanan!", + "feedback-useragent": "misaungayay tayli:", + "searchsuggest-search": "kilim {{SITENAME}}", + "api-error-badtoken": "labuay a mungangaw: mima-sacukcuk mungangaw.", + "api-error-unknownerror": "caay kapulita ku mungangaw: \"$1\".", + "duration-seconds": "$1 {{PLURAL:$1|a beti}}", + "duration-minutes": "$1 {{PLURAL:$1|widi}}", + "duration-hours": "$1 {{PLURAL:$1|tuki}}", + "duration-weeks": "$1 {{PLURAL:$1|a lipas}}", + "duration-years": "$1 {{PLURAL:$1|a mihca}}", + "duration-centuries": "$1 {{PLURAL:$1|lasubu a mihca}}", + "duration-millennia": "$1 {{PLURAL:$1|malebut a mihca}}", + "limitreport-title": "tingalaw-kikay mapulita kalunasulitan:", + "limitreport-cputime": "CPU pisaungay a lawad(tuki)", + "limitreport-cputime-value": "$1 {{PLURAL:$1|a beti}}", + "limitreport-walltime": "tatengaay pisaungay a lawad-tuki", + "limitreport-walltime-value": "$1 {{PLURAL:$1|a beti}}", + "limitreport-ppgeneratednodes": "pataayaw-saungay-sakaluk masanga’ ciyityin kinapina", + "limitreport-postexpandincludesize": "namicuwat nicaliwan hacica-tabaki", + "limitreport-expansiondepth": "satakalaw micuwat ilabu", + "expandtemplates": "micuwat tu taazihan a mitudung", + "expand_templates_input": "suliten:", + "expand_templates_output": "heci", + "expand_templates_xml_output": "XML patahkal", + "expand_templates_html_output": "saayaway HTML patahkal", + "expand_templates_ok": "malucekay", + "expand_templates_remove_comments": "misipu buhci tu kamu", + "expand_templates_generate_rawhtml": "paazih saayaway a HTML", + "expand_templates_preview": "pataayaway miazih", + "pagelanguage": "misumad kasabelih a kamu", + "pagelang-language": "kamu", + "pagelang-use-default": "pisaungay pataayaw tu kawaw a kamu", + "pagelang-select-lang": "mipili’ tu kamu", + "pagelang-reason": "mahicaay:", + "pagelang-submit": "patayzaan", + "right-pagelang": "misumad kasabelih a kamu", + "action-pagelang": "misumad kasabelih a kamu", + "log-name-pagelang": "kamu misumad a nasulitan nazipa’an", + "mediastatistics": "myiti sausi cesyun", + "mediastatistics-table-mimetype": "MIME nikalahizaan", + "mediastatistics-table-extensions": "kapah saungay a mikilulay a ngangan nu tangan", + "mediastatistics-table-count": "tangan nikayadah", + "mediastatistics-table-totalbytes": "pulung sausi nu hacica-tabaki", + "mediastatistics-header-bitmap": "pacepacekan a zunga", + "mediastatistics-header-drawing": "mizunga (siangliyang zunga)", + "mediastatistics-header-audio": "ludihang", + "mediastatistics-header-video": "yiga", + "mediastatistics-header-multimedia": "payadahay malocimyidiy", + "mediastatistics-header-office": "zimusiw", + "mediastatistics-header-executable": "kapah tu mileku", + "mediastatistics-header-archive": "piepian mipecec tuway a kese", + "mediastatistics-header-total": "sacahamin a tangan", + "json-error-depth": "mangasiw tu ilabu kelec nu sakalud", + "json-error-syntax": "sakilul nu kamu mungangaw", + "headline-anchor-title": "misasiket tina tusil", + "special-characters-group-latin": "u sulit nu Latin", + "special-characters-group-latinextended": "lalad tu sulit nu Lating", + "special-characters-group-ipa": "nu kanatalay a silusi nu ngiha’", + "special-characters-group-symbols": "sawantan", + "special-characters-group-greek": "u sulit nu Sila", + "special-characters-group-greekextended": "lalad tu sulit-bacu nu Sila", + "special-characters-group-cyrillic": "u sulit nu Selafu", + "special-characters-group-arabic": "u sulit nu Alapu", + "special-characters-group-arabicextended": "lalad tu sulit nu Alapo", + "special-characters-group-hebrew": "u kamu nu Hipulay", + "special-characters-group-bangla": "u sulit nu Muncyala", + "special-characters-group-tamil": "u sulit nu tanmil", + "special-characters-group-telugu": "u sulit nu telaku", + "special-characters-group-sinhala": "u sulit nu sencialo", + "special-characters-group-gujarati": "u sulit nu Kucilat", + "special-characters-group-devanagari": "Devanagari a kamu", + "special-characters-group-thai": "u sulit nu Tayko", + "special-characters-group-lao": "u sulit nu Liau", + "special-characters-group-khmer": "u sulit nu Kaomien", + "special-characters-title-endash": "apuyu’ay a pucehaw", + "special-characters-title-emdash": "tanaya’ay a pucehaw", + "special-characters-title-minus": "selep a bacu", + "mw-widgets-dateinput-no-date": "caayhen mipili’ tu demiad", + "mw-widgets-mediasearch-noresults": "caykatepa ku heci.", + "mw-widgets-titleinput-description-new-page": "kasabelih nayai’ tu", + "mw-widgets-categoryselector-add-category-placeholder": "micunus tu kakuniza...", + "mw-widgets-usersmultiselect-placeholder": "micunus sangaleben...", + "sessionprovider-generic": "$1 kasasiketan", + "randomrootpage": "kakibalucu’ lamitay kasabelih", + "log-action-filter-block": "milangat nikalahizaan:", + "log-action-filter-contentmodel": "lacul tatudungen-misanga’ misumad nikalahizaan:", + "log-action-filter-delete": "misipu nikalahizaan:", + "log-action-filter-import": "pacumud nikalahizaan:", + "log-action-filter-managetags": "nikalahizaan nu aazihen a paya mikuwanay a saungay:", + "log-action-filter-move": "milimad nikalahizaan:", + "log-action-filter-patrol": "tayza mikibi nikalahizaan:", + "log-action-filter-protect": "midiput nikalahizaan:", + "log-action-filter-upload": "nikalahizaan nu patapabaw:", + "log-action-filter-all": "hamin", + "log-action-filter-block-block": "milangat", + "log-action-filter-block-reblock": "milangat tu sapisumad", + "log-action-filter-block-unblock": "mihulak tu langat", + "log-action-filter-contentmodel-change": "lacul tatudungen-misanga’ a sumad", + "log-action-filter-delete-delete": "misipu kasabelih", + "log-action-filter-delete-delete_redir": "miliyaw patatuzu’ mipakutay tu sulit", + "log-action-filter-delete-restore": "kasabelih milawpes tu sipu", + "log-action-filter-delete-event": "misipu nasulitan nazipa’an", + "log-action-filter-delete-revision": "misumad nu ayaway a sipu", + "log-action-filter-managetags-create": "patizeng aazihen paya", + "log-action-filter-managetags-delete": "misipu aazihen a paya", + "log-action-filter-managetags-activate": "aazihen a paya miteka", + "log-action-filter-managetags-deactivate": "aazihan-paya palawpesen ku pisaungay", + "log-action-filter-move-move": "milimad caay maliyaw misulit miliyaw patatuzu’", + "log-action-filter-move-move_redir": "milimad miliyaw misulit miliyawtu tazuma nay", + "log-action-filter-newusers-create": "nay paceba panganganay a misaungayay patizeng", + "log-action-filter-newusers-create2": "nay pangangan misaungayay patizeng", + "log-action-filter-newusers-autocreate": "lunuk patizeng", + "log-action-filter-patrol-patrol": "lima-saungay tayza mikibi", + "log-action-filter-patrol-autopatrol": "lunuk tayza mikibi", + "log-action-filter-protect-protect": "midiput", + "log-action-filter-protect-modify": "midiput tu misumaday", + "log-action-filter-protect-unprotect": "mihulak midiputay", + "log-action-filter-protect-move_prot": "midiputay milimad tuway", + "log-action-filter-rights-rights": "lima-saungay misumad", + "log-action-filter-rights-autopromote": "lunuk misumad", + "log-action-filter-suppress-event": "nasulitan nazipa’an satezep paazih", + "log-action-filter-suppress-revision": "masumad nu ayaway satezep paazih", + "log-action-filter-suppress-delete": "kasabelih satezep paazih", + "log-action-filter-upload-upload": "baluhay a patapabaw", + "log-action-filter-upload-overwrite": "miliyaw patapabaw", + "authmanager-create-disabled": "maedeb canghaw lunuk patizeng tuway.", + "authmanager-authplugin-setpass-failed-title": "misumad mima mungangaw", + "authmanager-authplugin-setpass-bad-domain": "la’cusay a calay-subal(wangyi).", + "authmanager-autocreate-noperm": "caay mahasa lunuk canghaw patizeng.", + "authmanager-domain-help": "ihekal zencenay a calay-subal(wangyi).", + "authmanager-retype-help": "misult mima kinacacay henay kya malucek.", + "authmanager-email-label": "imyiyo(email)", + "authmanager-email-help": "imyiyo(email) puenengan", + "authmanager-realname-label": "tatengaay a ngangan", + "authmanager-realname-help": "misaungayay tatenga’ay a ngangan", + "authmanager-provider-temporarypassword": "nanunuz a mima", + "authprovider-confirmlink-request-label": "manakanca masasiket tu canghaw", + "authprovider-confirmlink-success-line": "$1: masasiket tuway", + "authprovider-resetpass-skip-label": "sekipo", + "authform-newtoken": "mahedaw mima-sacukcuk. $1", + "authform-wrongtoken": "mima-sacukcuk mungangaw", + "specialpage-securitylevel-not-allowed-title": "amana", + "authpage-cannot-create": "la’cus miteka patizeng tu canghaw.", + "authpage-cannot-link": "la’cus miteka misiket tu canghaw.", + "cannotauth-not-allowed-title": "caykataneng ku tungus", + "changecredentials": "misumad tu sapangangan-wacay", + "changecredentials-success": "masumad tuway zencen nu misu.", + "removecredentials": "misipu sapangangan", + "removecredentials-success": "masipu tu pincen nu misu.", + "credentialsform-provider": "pincen nikalahizaan:", + "credentialsform-account": "canghaw kalungangan:", + "cannotlink-no-provider-title": "inayi’ amasasiketan a canghaw", + "linkaccounts": "masasiket tu canghaw", + "linkaccounts-success-text": "masasiket tu ku canghaw", + "linkaccounts-submit": "masasiket tu canghaw", + "unlinkaccounts": "palawpes masasiketay a canghaw", + "unlinkaccounts-success": "malawpes masasiket tu canghaw.", + "restrictionsfield-label": "mahasaay a subal nu IP:", + "revid": "masumad nu ayaway $1", + "pageid": "kasabelih ID $1" +} diff --git a/languages/i18n/ang.json b/languages/i18n/ang.json index e2d890f30e..5473afe1c0 100644 --- a/languages/i18n/ang.json +++ b/languages/i18n/ang.json @@ -319,6 +319,8 @@ "querypage-no-updates": "Ednīwunga for þissum tramete ne sindon nū gelīfeda. \nCȳþþu hēr ne biþ hraðe ednīwod.", "viewsource": "Sēon fruman", "viewsource-title": "Fruman for $1 sēon", + "actionthrottled": "Macung gewyrged", + "actionthrottledtext": "Swa gemetgung wið misnytt, þu ne meaht geæfnan þisre macung to oft in scortum hwile, and þu hæfest onþuned swylc mearc.\nWe beodaþ þe þe þu cunne æfter lytlum hwile.", "protectedpagetext": "Þes tramet wæs geborgen tō wyrnenne ōðerre adihtunge oþþe ōðra dǣda.", "viewsourcetext": "Þū canst sēon and biwrītan þone fruman þisses trametes:", "viewyourtext": "Þū canst sēon and biwrītan þone fruman þīnra adihtunga tō þissum tramete:", @@ -446,6 +448,7 @@ "showpreview": "Īwan forebysene", "showdiff": "Īwan andwendunga", "summary-preview": "Scortnesse forebysen:", + "blockedtitle": "Bruced is fordiced", "blockednoreason": "nān racu gifen", "whitelistedittext": "Þū scealt $1 to adihtenne trametas.", "nosuchsectiontitle": "Ne cann dǣl findan", @@ -480,6 +483,10 @@ "permissionserrorstext-withaction": "Þū ne hæfst þafunge tō $2, for {{PLURAL:$1|þisre race|þissum racum}}:", "recreate-moveddeleted-warn": "'''Warnung: Þū edsciepst tramet þe wæs ǣr forloren.'''\n\nÞu sceoldest smēagan, hwæðer hit gerādlīc sīe, forþ tō gānne mid þǣre adihtunge þisses trametes.\nÞæt forlēosunge and wegunge ealdhord þisses trametes is hēr geīeht for behēfnesse:", "moveddeleted-notice": "Þes tramet wæs forloren.\nÞæt forlēosunge and wǣgunge stǣr þæs trametes is geīwed hēr.", + "postedit-confirmation-created": "Se tramet hæfþ beon gesceapen", + "postedit-confirmation-restored": "Se tramet hæfþ beon geseted", + "undo-summary": "Ic undyde sceawunge $1 be [[Syndrig:Contributions/$2|$2]] ([[Brūcendmōtung:$2|Mōtung]])", + "undo-summary-username-hidden": "Ic undyde sceawung $1 be bedyrnedum brucende", "viewpagelogs": "Sēon þisses trametes ealdhold", "nohistory": "Nis nān adihtunge stǣr for þissum tramete.", "currentrev-asof": "Nīwost fadung on þǣre $3. tīde þæs $2.", diff --git a/languages/i18n/ar.json b/languages/i18n/ar.json index c974d75297..b130631e34 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": "أخف تصنيف الصفحات", @@ -637,7 +638,7 @@ "changeemail-throttled": "أنت قمت بمحاولات تسجيل دخول كثيرة.\nمن فضلك انتظر $1 قبل المحاولة ثانية.", "changeemail-nochange": "رجاءً أدخل كلمة سر جديد مختلفة.", "resettokens": "غير المفاتيح", - "resettokens-text": " يمكن تغيير المفاتيح من الاطلاع على البيانات الخصوصية المتعلقة بحسابك.\nغير المفاتيح إذا أطلعت عليها أحدهم عن طريف الخطأ أو إذا كان حسابك قد اخترق.", + "resettokens-text": "عليك تغيير الرموز من الاطلاع على البيانات الخصوصية المتعلقة بحسابك.\n\nغير الرموز إذا أطلعت عليها أحدهم عن طريف الخطأ أو إذا كان حسابك قد اُختُرِق.", "resettokens-no-tokens": "ما من مفاتيح للتغيير.", "resettokens-tokens": "مفاتيح:", "resettokens-token-label": "$1 (القيمة الحالية: $2)", @@ -729,7 +730,6 @@ "explainconflict": "لقد عدل شخص آخر هذه الصفحة بعد أن بدأت أنت بتحريرها.\nصندوق النصوص العلوي يحتوي على النص الموجود حاليا في الصفحة.\nالتعديلات التي أجريتها أنت معروضة في الصندوق أسفله.\nويلزم دمجها في النص الموجود حاليا.\n'''لن يحفظ''' بعد الضغط على زر \"احفظ الصفحة\" '''إلا''' ما هو موجود في الصندوق العلوي.", "yourtext": "نصك", "storedversion": "النسخة المخزنة", - "nonunicodebrowser": "'''تحذير: متصفحك لا يتوافق مع الترميز الموحد.\nتمت معالجة هذا لكي تتمكن من تحرير الصفحات بأمان: الحروف التي ليست ASCII سوف تظهر في صندوق التحرير كأكواد سداسي عشرية.'''", "editingold": "''' تحذير: أنت تقوم الآن بتحرير نسخة قديمة من هذه الصفحة.\nإذا قمت بحفظها، ستفقد كافة التغييرات التي حدثت بعد هذه النسخة. '''", "yourdiff": "الفروق", "copyrightwarning": "من فضلك لاحظ أن جميع المساهمات ل {{SITENAME}} خاضعة وصادرة تحت ترخيص $2 (انظر في $1 للمزيد من التفاصيل)\nإذا لم ترد أن تخضع كتابتك للتعديل والتوزيع الحر، لا تضعها هنا
    .\nكما أنك تتعهد بأنك قمت بكتابة ما هو موجود بنفسك، أو قمت بنسخها من مصدر يخضع ضمن الملكية العامة، أو مصدر حر آخر.\n'''لا ترسل أي عمل ذي حقوق محفوظة بدون الإذن من صاحب الحق'''.", @@ -757,8 +757,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يبدو أنه تم حذفها.", @@ -797,6 +797,7 @@ "parser-template-loop-warning": "تم كشف حلقة قالب: [[$1]]", "template-loop-category": "الصفحات بحلقات قالب", "template-loop-category-desc": "الصفحة تحتوي على حلقة قالب، أي أن القالب يستدعي نفسه.", + "template-loop-warning": "تحديز: هذه الصفحة تستدعي [[:$1]] والذي يتسبب في حدوث حلقة قالب (استدعاء عودي لا نهائي).", "parser-template-recursion-depth-warning": "تم تجاوز حد عمق فرد القوالب ($1)", "language-converter-depth-warning": "تم تخطي حد عمق محول اللغة ($1)", "node-count-exceeded-category": "تجاوزات تعداد العقد", @@ -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": "متفرقات", @@ -1066,6 +1067,7 @@ "timezoneregion-indian": "المحيط الهندي", "timezoneregion-pacific": "المحيط الهادي", "allowemail": "مكن تلقي البريد الإلكتروني من المستخدمين الآخرين", + "email-blacklist-label": "امنع هؤلاء المستخدمين من إرسال بريد إلكتروني لي:", "prefs-searchoptions": "البحث", "prefs-namespaces": "أسماء النطاقات", "default": "افتراضي", @@ -1107,6 +1109,7 @@ "prefs-editor": "محرر", "prefs-preview": "عرض مسبق", "prefs-advancedrc": "خيارات متقدمة", + "prefs-opt-out": "إلغاء الاشتراك في التحسينات", "prefs-advancedrendering": "خيارات متقدمة", "prefs-advancedsearchoptions": "خيارات متقدمة", "prefs-advancedwatchlist": "خيارات متقدمة", @@ -1341,55 +1344,66 @@ "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 تغييرات}}", + "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-feedbacklink": "تقديم مراجعات لمرشحات (بيتا) الجديدة", + "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-registration": "تسجيل المستخدم", - "rcfilters-filter-registered-label": "مسجل", - "rcfilters-filter-registered-description": "المحررون مسجلو الدخول.", - "rcfilters-filter-unregistered-label": "غير مسجل", - "rcfilters-filter-unregistered-description": "المحررون غير مسجلي الدخول.", - "rcfilters-filter-unregistered-conflicts-user-experience-level": "هذا المرشح يتعارض مع {{PLURAL:$2|مرشح الخبرة التالي|مرشحات الخبرة التالية}}، و {{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-filtergroup-user-experience-level-conflicts-unregistered": "مرشحات الخبرة تعطي فقط المستخدمين المسجلين، لذا فهذا المرشح يتعارض مع مرشح \"غير المسجلين\".", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "مرشح \"غير المسجلين\" يتعارض مع واحد أو أكثر من مرشحات الخبرة، والتي تعطي المستخدمين المسجلين فقط. المرشحات المتعارضة معلم عليها في مساحة المرشحات النشطة، بالأعلى.", + "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": "التعديلات بواسطة الأدوات الأوتوماتيكية.", @@ -1412,6 +1426,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": "التعديلات لمحتوى الويكي، النقاشات، وصوفات التصنيفات…", @@ -1424,17 +1443,28 @@ "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": "اعتبر كل التغييرات منظورة", + "rcfilters-watchlist-edit-watchlist-button": "تعديل قائمة الصفحات المراقبة", + "rcfilters-watchlist-showupdated": "التغييرات للصفحات التي لم تزرها منذ حدوث التغييرات تكون بالخط العريض، مع علامات صلبة.", + "rcfilters-preference-label": "أخف النسخة المحسنة من أحدث التغييرات", + "rcfilters-preference-help": "يسترجع عملية إعادة تصميم الواجهة لعام 2017 وكل الأدوات التي أضيفت منذ ذلك الوقت.", "rcnotefrom": "بالأسفل {{PLURAL:$5|التغيير|التغييرات}} منذ $2 (إلى $1 معروضة).", "rclistfromreset": "إعادة ضبط خيار التاريخ", "rclistfrom": "أظهر التغييرات بدء من $3 $2", @@ -1491,6 +1521,7 @@ "uploadbtn": "ارفع الملف", "reuploaddesc": "إلغاء الرفع والرجوع إلى استمارة الرفع", "upload-tryagain": "أرسل وصف ملف معدل", + "upload-tryagain-nostash": "ارفع الملف المعاد رفعه والوصف المعدل", "uploadnologin": "غير مسجل الدخول", "uploadnologintext": "يجب عليك $1 لترفع الملفات.", "upload_directory_missing": "مجلد الرفع ($1) مفقود ولم يمكن إنشاؤه بواسطة خادوم الوب.", @@ -1550,6 +1581,7 @@ "file-deleted-duplicate-notitle": "سابقا تم حذف ملف مطابق لهذا الملف، وقد تم منع العنوان.\nينبغي أن تسأل شخص ما لديه القدرة على عرض بيانات الملف الممنوع لاستعراض الوضع قبل الشروع في إعادة تحميله.", "uploadwarning": "تحذير الرفع", "uploadwarning-text": "من فضلك عدل وصف الملف أدناه وحاول مرة أخرى.", + "uploadwarning-text-nostash": "من فضلك أعد رفع الملف، عدل الوصف بالأسفل وحاول مرة ثانية.", "savefile": "احفظ الملف", "uploaddisabled": "تم تعطيل الرفع", "copyuploaddisabled": "الرفع من مسار معطل.", @@ -1712,7 +1744,7 @@ "listfiles_size": "الحجم", "listfiles_description": "الوصف", "listfiles_count": "نسخ", - "listfiles-show-all": "أدرج النسخ القديمة من الصور", + "listfiles-show-all": "أدرج النسخ القديمة من الملفات", "listfiles-latestversion": "النسخة الحالية", "listfiles-latestversion-yes": "نعم", "listfiles-latestversion-no": "لا", @@ -1816,6 +1848,8 @@ "pageswithprop-legend": "صفحات مع خاصية الصفحة", "pageswithprop-text": "تسرد هذه الصفحة الصفحات التي تستخدم خاصية صفحة معينة.", "pageswithprop-prop": "اسم الخاصية:", + "pageswithprop-reverse": "فرز بترتيب عكسي", + "pageswithprop-sortbyvalue": "ترتيب حسب قيمة الخاصية", "pageswithprop-submit": "اذهب", "pageswithprop-prophidden-long": "قيمة خاصية النص الطويل المخفية ($1)", "pageswithprop-prophidden-binary": "قيمة الخاصية الثنائية المخفية ($1)", @@ -1948,6 +1982,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": "مسار الطلب:", @@ -2070,7 +2105,7 @@ "trackingcategories-disabled": "التصنيف غير مفعل", "mailnologin": "لا يوجد عنوان للإرسال", "mailnologintext": "يجب أن تقوم [[Special:UserLogin|بتسجيل الدخول]] وإدخال بريد إلكتروني صالح في صفحة [[Special:Preferences|التفضيلات]] لتتمكن من إرسال الرسائل لمستخدمين آخرين.", - "emailuser": "مراسلة المستخدم", + "emailuser": "مراسلة المستخدم إلكترونيا", "emailuser-title-target": "راسل هذا {{GENDER:$1| المستخدم}} بالبريد الإلكتروني", "emailuser-title-notarget": "مراسلة المستخدم", "emailpagetext": "يمكنك استخدام الاستمارة بالأسفل لإرسال رسالة بريد إلكتروني إلى {{GENDER:$1|هذا المستخدم|هذه المستخدمة}}.\n'''يمكن أن يرى المرسل إليه عنوان بريدك الإلكتروني''' الذي أدخلته في [[Special:Preferences|تفضيلاتك]] كعنوان المرسل في البريد الإلكتروني، كي يستطيع المتلقي الرد عليك مباشرة.", @@ -2117,7 +2152,7 @@ "unwatchthispage": "أوقف المراقبة", "notanarticle": "ليست صفحة محتوى", "notvisiblerev": "المراجعة تم حذفها", - "watchlist-details": "{{PLURAL:$1||صفحة واحدة|صفحتان|$1 صفحات|$1 صفحة}} في قائمة مراقبتك، دون اعتبار صفحات النقاش صفحات منفصلة.", + "watchlist-details": "{{PLURAL:$1||صفحة واحدة|صفحتان|$1 صفحات|$1 صفحة}} في قائمة مراقبتك (بالإضافة لصفحات النقاش).", "wlheader-enotif": "الإخطار بالبريد الإلكتروني مُفعّل.", "wlheader-showupdated": "الصفحات التي تم تحريرها بعد مطالعتك إياها آخر مرة عناوينها بالخط '''الغليظ'''", "wlnote": "بالأسفل {{PLURAL:$1|لا توجد تغييرات|التغيير الأخير|آخر تغييرين|آخر '''$1''' تغييرات|آخر '''$1''' تغييرا|آخر '''$1''' تغيير}} في {{PLURAL:$2||'''الساعة''' الماضية|'''الساعتين''' الماضيتين|ال'''$2''' ساعات الماضية|ال'''$2''' ساعة الماضية}} وفقاً ل$3، $4.", @@ -2152,6 +2187,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": "حذف الصفحة", @@ -2180,6 +2216,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 تعديلاً|تعديل}}", @@ -2345,6 +2382,7 @@ "sp-contributions-newonly": "أظهر إنشاء الصفحات فقط", "sp-contributions-hideminor": "أخف التعديلات الطفيفة", "sp-contributions-submit": "بحث", + "sp-contributions-outofrange": "غير قادر على عرض أي نتائج. نطاق الأيبي المطلوب هو أكبر من حد CIDR وهو /$1.", "whatlinkshere": "ماذا يصل هنا", "whatlinkshere-title": "الصفحات التي تصل إلى \"$1\"", "whatlinkshere-page": "الصفحة:", @@ -2634,7 +2672,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\" لم يتم استيرادها لأنه لا يمكن لك استحداثها أصلا.", @@ -2693,7 +2731,7 @@ "tooltip-feed-rss": "تلقيم أر إس إس لهذه الصفحة", "tooltip-feed-atom": "تلقيم أتوم لهذه الصفحة", "tooltip-t-contributions": "رؤية قائمة مساهمات {{GENDER:$1|هذا المستخدم|هذه المستخدمة}}", - "tooltip-t-emailuser": "أرسل رسالة {{GENDER:$1|لهذا المستخدم|لهذه المستخدمة}}", + "tooltip-t-emailuser": "أرسل رسالة إلكترونية {{GENDER:$1|لهذا المستخدم|لهذه المستخدمة}}", "tooltip-t-info": "المزيد من المعلومات عن هذه الصفحة", "tooltip-t-upload": "ارفع ملفات", "tooltip-t-specialpages": "قائمة بكل الصفحات الخاصة", @@ -3476,7 +3514,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": "البرنامج المثبت", @@ -3514,7 +3552,7 @@ "fileduplicatesearch-noresults": "لا ملف بالاسم \"$1\" تم العثور عليه.", "specialpages": "الصفحات الخاصة", "specialpages-note-top": "المفتاح", - "specialpages-note": "* صفحات خاصة عادية.\n* صفحات خاصة للمخولين.", + "specialpages-note-restricted": "* صفحات خاصة عادية.\n* صفحات خاصة مقيدة.", "specialpages-group-maintenance": "تقارير الصيانة", "specialpages-group-other": "صفحات خاصة أخرى", "specialpages-group-login": "دخول / إنشاء حساب", @@ -3633,6 +3671,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)", @@ -3719,7 +3764,7 @@ "logentry-newusers-autocreate": "أنشئ حساب {{GENDER:$2|المستخدم|المستخدمة}} $1 تلقائيًا", "logentry-protect-move_prot": "$1 {{GENDER:$2|نقل}} إعدادات الحماية من $4 إلى $3", "logentry-protect-unprotect": "{{GENDER:$2|رفع|رفعت}} $1 الحماية عن $3", - "logentry-protect-protect": "$1 {{GENDER:$2|حمى|حمت}} $3 $4", + "logentry-protect-protect": "{{GENDER:$2|حمى|حمت}} $1 $3 $4", "logentry-protect-protect-cascade": "$1 {{GENDER:$2|حمى|حمت}} $3 $4 [مضمنة]", "logentry-protect-modify": "{{GENDER:$2|غير|غيرت}} $1 مستوى حماية $3 $4", "logentry-protect-modify-cascade": "$1 {{GENDER:$2|غير|غيرت}} مستوى الحماية ل$3 $4 [مضمن]", @@ -4039,6 +4084,7 @@ "undelete-cantedit": "أنت لا يمكنك استرجاع هذه الصفحة حيث أنه لا يمكنك تعديل هذه الصفحة.", "undelete-cantcreate": "أنت لا يمكنك استرجاع هذه الصفحة حيث أنه لا توجد صفحة بهذا الاسم وأنت غير مسموح لك بإنشاء هذه الصفحة.", "pagedata-title": "بيانات الصفحة", + "pagedata-text": "هذه الصفحة توفر واجهة بيانات للصفحات. من فضلك وفر عنوان الصفحة في المسار، باستخدام صيغة الصفحات الفرعية.\n* تفاوض المحتوى يطبق بناء على الAccept header الخاص بعميلك. هذا يعني أن بيانات الصفحة سيتم توفيرها بالصيغة المفضلة لعميلك.", "pagedata-not-acceptable": "لم يتم العثور على هيئة مطابقة. أنماط MIME المدعومة: $1", "pagedata-bad-title": "عنوان خاطئ: $1." } diff --git a/languages/i18n/as.json b/languages/i18n/as.json index a1c9b533cd..60607f4c3e 100644 --- a/languages/i18n/as.json +++ b/languages/i18n/as.json @@ -166,13 +166,7 @@ "anontalk": "বাৰ্তা দিয়ক", "navigation": "দিকদৰ্শন", "and": " আৰু", - "qbfind": "বিচৰা হওক", - "qbbrowse": "ব্ৰাওজ", - "qbedit": "সম্পাদনা", - "qbpageoptions": "এই পৃষ্ঠা", - "qbmyoptions": "মোৰ পৃষ্ঠাসমূহ", "faq": "সততে উদিত প্ৰশ্নসমূহ (FAQ)", - "faqpage": "Project:সততে উদিত প্ৰশ্নসমূহ", "actions": "কাৰ্যসমূহ", "namespaces": "নামস্থান", "variants": "বিকল্পসমূহ", @@ -198,32 +192,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": "সাঁচ পৃষ্ঠা চাওক", @@ -269,7 +253,7 @@ "badaccess-groups": "আপুনি অনুৰোধ কৰা কাৰ্য কেৱল {{PLURAL:$2|এই গোটৰ|এই গোটসমূহৰ যিকোনো এটাৰ}} সদস্যৰ বাবে সীমিত: $1", "versionrequired": "মিডিয়াৱিকিৰ $1 সংকলন থাকিব লাগিব ।", "versionrequiredtext": "এই পৃষ্ঠাটো ব্যৱহাৰ কৰিবলৈ মিডিয়াৱিকিৰ $1 সংস্কৰণ থাকিব লাগিব । [[Special:Version|সংস্কৰণ পৃষ্ঠা]] চাওক।", - "ok": "শুদ্ধ", + "ok": "বাৰু", "retrievedfrom": "\"$1\"ৰ পৰা সংকলিত", "youhavenewmessages": "আপোনাৰ কাৰণে $1 আছে। ($2)", "youhavenewmessagesfromusers": "{{PLURAL:$3|আন এজন সদস্য|$3 জন সদস্য}}ৰ পৰা আপোনালৈ $1 আহিছে ($2)।", @@ -677,7 +661,7 @@ "permissionserrorstext": "আপোনাৰ এই কামটো কৰিবলৈ অনুমতি নাই, যাৰ {{PLURAL:$1|কাৰণ|কাৰণসমূহ}} হ'ল:", "permissionserrorstext-withaction": "আপোনাৰ $2 কৰিবলৈ অনুমতি নাই, যাৰ {{PLURAL:$1|কাৰণ|কাৰণসমূহ}} হ'ল:", "recreate-moveddeleted-warn": "'''সাৱধান: আগতে বিলোপ কৰা পৃষ্ঠা এটা আপুনি পুনঃনিৰ্মাণ কৰি আছে। '''\n\nএই পৃষ্ঠাটো সম্পাদনা কৰা উচিত হব নে নহয় আপুনি বিবেচনা কৰি চাওক।\nএই পৃষ্ঠাটো বিলোপ আৰু স্থানান্তৰ কৰাৰ অভিলেখ আপোনাৰ সুবিধাৰ্থে ইয়াত দিয়া হৈছে।", - "moveddeleted-notice": "এই পৃষ্ঠা বিলোপ কৰা হৈছে।\nপৃষ্ঠাৰ বিলোপ আৰু স্থানান্তৰণ অভিলেখ তলত দিয়া হ'ল।", + "moveddeleted-notice": "এই পৃষ্ঠা বিলোপ কৰা হৈছে।\nপৃষ্ঠাৰ বিলোপন, সুৰক্ষা আৰু স্থানান্তৰণ অভিলেখ তলত দিয়া হ'ল।", "log-fulllog": "সম্পূৰ্ণ অভিলেখ চাওক", "edit-hook-aborted": "হুকৰ দ্বাৰা সম্পাদনা প্ৰত্যাখ্যান কৰা হৈছে।\nইয়াৰ কোনো ব্যাখ্যা নাই।", "edit-gone-missing": "পৃষ্ঠাটো নবীকৰণ কৰিব পৰা নগ’ল।\nসম্ভৱতঃ পৃষ্ঠাটো বিলোপ কৰা হৈছে।", @@ -739,7 +723,7 @@ "page_first": "প্ৰথম", "page_last": "অন্তিম", "histlegend": "পাৰ্থক্য বাছনি: পাৰ্থক্য চাবলৈ সংকলনবোৰৰ সম্মুখত থকা ৰেডিঅ' বুটামবোৰ বাচনী কৰি এণ্টাৰ টিপক অথবা একেবাৰে তলত দিয়া বুটামতো ক্লিক কৰক
    \nলিজেণ্ড: '''({{int:cur}})''' = বৰ্তমানৰ সংকলনৰ লগত পাৰ্থক্য,\n'''({{int:last}})''' = আগৰ সংকলনৰ লগত পাৰ্থক্য, '''{{int:minoreditletter}}'' = অগুৰুত্বপূৰ্ণ সম্পাদনা।", - "history-fieldset-title": "ইতিহাসত অনুসন্ধান কৰক", + "history-fieldset-title": "সংশোধিত সংস্কৰণ সন্ধান কৰক", "history-show-deleted": "মাথোঁ বিলোপ কৰা", "histfirst": "আটাইতকৈ পুৰণি", "histlast": "শেহতীয়া", @@ -2756,12 +2740,12 @@ "confirmrecreate": "আপুনি সম্পাদনা আৰম্ভ কৰাৰ পিছত সদস্য [[User:$1|$1]] ([[User talk:$1|আলোচনা]])য়ে পৃষ্ঠাটো বিলোপ কৰিছে, তাৰ কাৰণ:\n: ''$2''\nআপুনি এই পৃষ্ঠাটো আকৌ সৃষ্টি কৰিব খোজাটো নিশ্চিত কৰক ।", "confirmrecreate-noreason": "আপুনি সম্পাদনা আৰম্ভ কৰাৰ পিছত সদস্য [[User:$1|$1]] ([[User talk:$1|আলোচনা]])য়ে পৃষ্ঠাটো বিলোপ কৰিছে। আপুনি এই পৃষ্ঠাটো আকৌ সৃষ্টি কৰিব খোজা কাৰ্য অনুগ্ৰহ কৰি নিশ্চিত কৰক।", "recreate": "পুনৰ সৃষ্টি কৰক", - "confirm_purge_button": "শুদ্ধ", + "confirm_purge_button": "বাৰু", "confirm-purge-top": "এই পৃষ্ঠাৰ কেচ্‌ খালী কৰা হওক ?", "confirm-purge-bottom": "এটা পৃষ্ঠাক শোধিত কৰিলে কেচ্‌ আতৰি যায় আৰু সকলোতকৈ শেহতীয়া সংশোধন প্ৰদৰ্শিত হ'বলৈ বাধ্য কৰে।", - "confirm-watch-button": "শুদ্ধ", + "confirm-watch-button": "বাৰু", "confirm-watch-top": "এই পৃষ্ঠাটো আপোনাৰ লক্ষ্য-তালিকাত যোগ কৰিব?", - "confirm-unwatch-button": "শুদ্ধ", + "confirm-unwatch-button": "বাৰু", "confirm-unwatch-top": "এই পৃষ্ঠাটো আপোনাৰ লক্ষ্য-তালিকাৰ পৰা আঁতৰাব?", "quotation-marks": "\"$1\"", "imgmultipageprev": "← পূৰ্বৱৰ্তী পৃষ্ঠা", @@ -2869,7 +2853,6 @@ "fileduplicatesearch-noresults": "কোনো \"$1\" নামৰ নথিৰ সন্ধান পোৱা নগ’ল ।", "specialpages": "বিশেষ পৃষ্ঠাসমূহ", "specialpages-note-top": "ব্যাখ্যা", - "specialpages-note": "* সাধাৰণ বিশেষ পৃষ্ঠাসমূহ।\n* সীমাবদ্ধ বিশেষ পৃষ্ঠাসমূহ।", "specialpages-group-maintenance": "তত্বাৱধানৰ কাৰ্যবিৱৰণীসমূহ", "specialpages-group-other": "অন্যান্য বিশেষ পৃষ্ঠাসমূহ", "specialpages-group-login": "প্ৰৱেশ/একাউণ্ট সৃষ্টি কৰক", @@ -3006,7 +2989,7 @@ "expandtemplates": "সাঁচবোৰ বহলাওক", "expand_templates_input": "পাঠ্য ভৰাওক", "expand_templates_output": "ফলাফল", - "expand_templates_ok": "ঠিক আছে", + "expand_templates_ok": "বাৰু", "expand_templates_remove_comments": "মন্তব্য গু়চাওক", "expand_templates_preview": "খচৰা", "pagelanguage": "পৃষ্ঠাৰ ভাষা নিৰ্বাচক", diff --git a/languages/i18n/ast.json b/languages/i18n/ast.json index 4062b17999..3e7c1d52ef 100644 --- a/languages/i18n/ast.json +++ b/languages/i18n/ast.json @@ -14,7 +14,8 @@ "Macofe", "Matma Rex", "Tokvo", - "Crucifunked" + "Crucifunked", + "Enolp" ] }, "tog-underline": "Sorrayar enllaces:", @@ -44,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", @@ -672,7 +674,6 @@ "explainconflict": "Daquién más camudó esta páxina dende qu'empecipiasti a editala.\nL'área de testu d'arriba contien el testu de la páxina como ta nestos momentos.\nLos tos cambios s'amuesen nel área de testu d'abaxo.\nVas tener que fusionar los tos cambios dientro del testu esistente.\n'''Namái''' va guardase'l testu del área d'arriba cuando calques \"$1\".", "yourtext": "El to testu", "storedversion": "Versión almacenada", - "nonunicodebrowser": "'''Avisu: El to navegador nun cumple la norma Unicode.''' Hai un sistema alternativu que te permite editar páxines de forma segura: los caráuteres non-ASCII apaecerán nel cuadru d'edición como códigos hexadecimales.", "editingold": "'''AVISU: Tas editando una revisión vieya d'esta páxina. Si la grabes, los cambios que se ficieron dende esta revisión van perdese.'''", "yourdiff": "Diferencies", "copyrightwarning": "Por favor, ten en cuenta que toles collaboraciones de {{SITENAME}} considérense espublizaes baxo la $2 (ver $1 pa más detalles). Si nun quies que'l to trabayu s'edite ensin midida y se distribuya al debalu, nun lu pongas equí.
    \nAmás tas prometiéndonos qu'escribisti esto tu mesmu, o que lo copiasti d'una fonte llibre, de dominiu públicu o asemeyada.\n¡Nun unvies obres con drechos d'autor ensin permisu!", @@ -700,8 +701,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ó.", @@ -740,6 +741,7 @@ "parser-template-loop-warning": "Deteutóse un bucle de plantíes: [[$1]]", "template-loop-category": "Páxines con bucles de plantíes", "template-loop-category-desc": "Esta páxina contien un bucle de plantía, esto ye, una plantía que se llama ella mesma de mou recursivu.", + "template-loop-warning": "Avisu: Esta páxina llama a [[:$1]] lo que causa un ciclu infinitu de plantía (una llamada recurrente infinita).", "parser-template-recursion-depth-warning": "Se pasó la llende de fondura recursiva de les plantíes ($1)", "language-converter-depth-warning": "Se pasó la llende de fondura del convertidor de llingües ($1)", "node-count-exceeded-category": "Páxines onde se pasó la cuenta de noyos", @@ -969,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", @@ -1009,6 +1011,7 @@ "timezoneregion-indian": "Océanu Índicu", "timezoneregion-pacific": "Océanu Pacíficu", "allowemail": "Dexar a los otros usuarios mandate correos", + "email-blacklist-label": "Torgar a estos usuarios unviame correos electrónicos:", "prefs-searchoptions": "Buscar", "prefs-namespaces": "Espacios de nome", "default": "predetermináu", @@ -1050,6 +1053,7 @@ "prefs-editor": "Editor", "prefs-preview": "Vista previa", "prefs-advancedrc": "Opciones avanzaes", + "prefs-opt-out": "Borrase de los ameyoramientos", "prefs-advancedrendering": "Opciones avanzaes", "prefs-advancedsearchoptions": "Opciones avanzaes", "prefs-advancedwatchlist": "Opciones avanzaes", @@ -1285,9 +1289,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 {{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.", @@ -1299,43 +1314,41 @@ "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-search-placeholder": "Filtriar los cambeos recién (restola o empieza a escribir)", + "rcfilters-show-new-changes": "Ver los cambeos más recién", + "rcfilters-search-placeholder": "Menú principal del filtru", "rcfilters-invalid-filter": "Filtru inválidu", "rcfilters-empty-filter": "Nun hai filtros activos. Amuésense toles contribuciones.", "rcfilters-filterlist-title": "Filtros", - "rcfilters-filterlist-whatsthis": "¿Qué ye esto?", - "rcfilters-filterlist-feedbacklink": "Comentar sobro los nuevos filtros (beta)", + "rcfilters-filterlist-whatsthis": "¿Como funciona esto?", + "rcfilters-filterlist-feedbacklink": "Dinos lo que pienses sobre estes (nueves) ferramientes de filtriáu", "rcfilters-highlightbutton-title": "Resaltar resultaos", "rcfilters-highlightmenu-title": "Seleiciona un color", "rcfilters-highlightmenu-help": "Seleiciona un color pa resaltar esta propiedá", "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-filtergroup-registration": "Rexistru del usuariu", - "rcfilters-filter-registered-label": "Rexistraos", - "rcfilters-filter-registered-description": "Editores coneutaos.", - "rcfilters-filter-unregistered-label": "Non rexistraos", - "rcfilters-filter-unregistered-description": "Editores ensin coneutar.", - "rcfilters-filter-unregistered-conflicts-user-experience-level": "Esti filtru fai conflictu {{PLURAL:$2|col siguiente filtru|colos siguientes filtros}} Experience, qu'{{PLURAL:$2|alcuentra|alcuentren}} sólo usuarios rexistraos: $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.", "rcfilters-filter-editsbyother-label": "Cambios d'otros", "rcfilters-filter-editsbyother-description": "Tolos cambios menos los de to.", - "rcfilters-filtergroup-userExpLevel": "Nivel d'esperiencia (solo pa usuarios rexistraos)", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Los filtros Experience alcuentren sólo usuarios rexistraos, de manera qu'esti filtru entra en conflictu col filtru «Sin rexistrar».", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "El filtru «Ensin rexistrar» tien un conflictu con un filtru Experience o más, qu'alcuentren sólo usuarios rexistraos. Los filtros que tienen un conflictu márquense nel área de Filtros activos, más arriba.", + "rcfilters-filtergroup-userExpLevel": "Rexistru d'usuarios y esperiencia", + "rcfilters-filter-user-experience-level-registered-label": "Rexistraos", + "rcfilters-filter-user-experience-level-registered-description": "Editores coneutaos.", + "rcfilters-filter-user-experience-level-unregistered-label": "Non rexistraos", + "rcfilters-filter-user-experience-level-unregistered-description": "Editores que nun tán coneutaos.", "rcfilters-filter-user-experience-level-newcomer-label": "Recién llegaos", - "rcfilters-filter-user-experience-level-newcomer-description": "Menos de 10 ediciones y 4 díes d'actividá.", + "rcfilters-filter-user-experience-level-newcomer-description": "Editores rexistraos con menos de 10 ediciones y 4 díes d'actividá.", "rcfilters-filter-user-experience-level-learner-label": "Aprendices", - "rcfilters-filter-user-experience-level-learner-description": "Más esperiencia que los «Recién llegaos», pero menos que los «Usuarios espertos».", + "rcfilters-filter-user-experience-level-learner-description": "Editores rexistraos con esperiencia ente «Recién llegaos» y «Usuarios espertos».", "rcfilters-filter-user-experience-level-experienced-label": "Usuarios espertos", - "rcfilters-filter-user-experience-level-experienced-description": "Más de 30 díes d'actividá y 500 ediciones.", + "rcfilters-filter-user-experience-level-experienced-description": "Editores rexistraos con más de 500 ediciones y 30 díes d'actividá.", "rcfilters-filtergroup-automated": "Contribuciones automátiques", "rcfilters-filter-bots-label": "Bot", "rcfilters-filter-bots-description": "Ediciones feches con ferramientes automátiques.", @@ -1358,6 +1371,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...", @@ -1370,18 +1388,28 @@ "rcfilters-hideminor-conflicts-typeofchange-global": "El filtru «Ediciones menores» fai conflictu con un filtru «Tipu de cambiu» o más, porque dellos tipos de cambiu nun pueden designase como «menores». Los filtros que faen conflictu tan marcaos nel área de Filtros Activos, más arriba.", "rcfilters-hideminor-conflicts-typeofchange": "Dellos tipos de cambiu nun pueden designase como «menores», de manera qu'esti filtru fai conflictu colos siguientes filtros «Tipu de cambiu»: $1", "rcfilters-typeofchange-conflicts-hideminor": "Esti filtru de «Tipu de cambiu» fai conflictu col filtru «Ediciones menores». Dellos tipos de cambiu nun pueden designase como «menores».", - "rcfilters-filtergroup-lastRevision": "Última revisión", + "rcfilters-filtergroup-lastRevision": "Últimes revisiones", "rcfilters-filter-lastrevision-label": "Última revisión", - "rcfilters-filter-lastrevision-description": "El cambio más recien d'una páxina.", - "rcfilters-filter-previousrevision-label": "Revisiones anteriores", - "rcfilters-filter-previousrevision-description": "Tolos cambios que nun son los más recien d'una páxina.", + "rcfilters-filter-lastrevision-description": "Sólo el cambiu más recien d'una páxina.", + "rcfilters-filter-previousrevision-label": "Non la cabera revisión", + "rcfilters-filter-previousrevision-description": "Tolos cambios que nun son la «cabera revisión».", "rcfilters-filter-excluded": "Escluíu", "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", + "rcfilters-watchlist-edit-watchlist-button": "Edita la to llista de páxines siguíes", + "rcfilters-watchlist-showupdated": "Los cambeos fechos en páxines que nun visitasti desque se ficieron apaecen en negrina, con marcadores sólidos.", + "rcfilters-preference-label": "Tapecer la versión meyorada de Cambios recién", + "rcfilters-preference-help": "Revierte'l rediseñu de la interfaz de 2017 y toles ferramientes añadíes d'entós aquí.", "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", @@ -1438,6 +1466,7 @@ "uploadbtn": "Xubir ficheru", "reuploaddesc": "Encaboxar la xubida y tornar al formulariu de xubíes", "upload-tryagain": "Unviar descripción camudada del ficheru", + "upload-tryagain-nostash": "Unviar el ficheru vueltu a xubir y la descripción cambiada", "uploadnologin": "Nun anició sesión", "uploadnologintext": "Tien d'$1 pa xubir ficheros.", "upload_directory_missing": "El direutoriu de xubida ($1) nun esiste y nun pudo crease pol sirvidor web.", @@ -1497,6 +1526,7 @@ "file-deleted-duplicate-notitle": "Un ficheru idénticu a esti desanicióse anteriormente, y suprimióse'l títulu. Tendría de pidir a dalguién que pueda ver los datos del ficheru desaniciáu que revise la situación enantes de volver a xubilu.", "uploadwarning": "Avisu de xubíes de ficheros", "uploadwarning-text": "Por favor, camuda más abaxo la descripción del ficheru y vuelve a tentalo.", + "uploadwarning-text-nostash": "Vuelve a unviar el ficheru, cambia la descripción más abaxo y tenta otra vuelta.", "savefile": "Guardar ficheru", "uploaddisabled": "Deshabilitaes les xubíes", "copyuploaddisabled": "Xubir por URL ta desactivao.", @@ -1659,7 +1689,7 @@ "listfiles_size": "Tamañu", "listfiles_description": "Descripción", "listfiles_count": "Versiones", - "listfiles-show-all": "Incluir les versiones antigües de les imaxes", + "listfiles-show-all": "Incluir les versiones antigües de los ficheros", "listfiles-latestversion": "Versión actual", "listfiles-latestversion-yes": "Sí", "listfiles-latestversion-no": "Non", @@ -1762,6 +1792,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)", @@ -2063,7 +2095,7 @@ "unwatchthispage": "Dexar de vixilar", "notanarticle": "Nun ye un artículu", "notvisiblerev": "Esborróse la revisión", - "watchlist-details": "{{PLURAL:$1|$1 páxina|$1 páxines}} na to llista de siguimientu, ensin cuntar aparte les páxines d'alderique.", + "watchlist-details": "{{PLURAL:$1|$1 páxina ta|$1 páxines tán}} na to llista de siguimientu (más les páxines d'alderique).", "wlheader-enotif": "La notificación per corréu electrónicu ta activada.", "wlheader-showupdated": "Les páxines que camudaron dende que les visitasti anteriormente amuesense en '''negrina'''", "wlnote": "Abaxo {{PLURAL:$1|tá'l caberu cambiu|tan los caberos $1 cambios}} {{PLURAL:$2|na cabera hora|nes caberes $2 hores}}, a día $3, a les $4.", @@ -2098,6 +2130,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", @@ -2126,6 +2159,7 @@ "delete-warning-toobig": "Esta páxina tien un historial d'ediciones grande, más de $1 {{PLURAL:$1|revisión|revisiones}}.\nEsborralu pue perturbar les operaciones de la base de datos de {{SITENAME}};\nobra con precaución.", "deleteprotected": "Nun pues desaniciar esta páxina porque ta protexida.", "deleting-backlinks-warning": "Avisu: [[Special:WhatLinksHere/{{FULLPAGENAME}}|Otres páxines]] enllacen a, o trescluyen de, la páxina que tas a piques de desaniciar.", + "deleting-subpages-warning": "Avisu: La páxina que vas desaniciar tien [[Special:PrefixIndex/{{FULLPAGENAME}}/|{{PLURAL:$1|una subpáxina|$1 subpáxines|51=más de 50 subpáxines}}]].", "rollback": "Revertir ediciones", "rollbacklink": "revertir", "rollbacklinkcount": "revertir $1 {{PLURAL:$1|edición|ediciones}}", @@ -2291,6 +2325,7 @@ "sp-contributions-newonly": "Amosar namái les ediciones que son creaciones de páxines", "sp-contributions-hideminor": "Despintar les ediciones menores", "sp-contributions-submit": "Buscar", + "sp-contributions-outofrange": "Nun ye posible amosar nengún resultáu. El rangu de direcciones IP solicitáu ye mayor que la llende CIDR de /$1.", "whatlinkshere": "Lo qu'enllaza equí", "whatlinkshere-title": "Páxines qu’enllacien a «$1»", "whatlinkshere-page": "Páxina:", @@ -2579,7 +2614,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.", @@ -3348,7 +3383,7 @@ "fileduplicatesearch-noresults": "Nun s'alcontró dengún ficheru nomáu «$1».", "specialpages": "Páxines especiales", "specialpages-note-top": "Lleenda", - "specialpages-note": "* Páxines especiales normales.\n* Páxines especiales restrinxíes.", + "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", @@ -3467,6 +3502,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..aa5984cc1f 100644 --- a/languages/i18n/az.json +++ b/languages/i18n/az.json @@ -424,7 +424,7 @@ "loginsuccesstitle": "Daxil oldunuz", "loginsuccess": "'''\"$1\" adı ilə sistemə daxil oldunuz.'''", "nosuchuser": "\"$1\" adlı istifadəçi mövcud deyil.\nİstifadəçi adları hərflərin böyük və ya kiçik olmasına həssasdırlar.\nDüzgün yazdığınıza əmin olun, yaxud [[Special:CreateAccount|yeni hesab açın]].", - "nosuchusershort": "\"$1\" adında istifadəçi mövcud deyil.\nDüzgün yazdığına əmin ol.", + "nosuchusershort": "\"$1\" adlı istifadəçi mövcud deyil. Yazdığınızı yoxlayın.", "nouserspecified": "İstifadəçi adı daxil etməlisiniz.", "login-userblocked": "Bu istifadəçi bloklanıb. Sistemə giriş üçün icazə verilmir.", "wrongpassword": "Səhv parol. Təkrar yazın.", @@ -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,70 @@ "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-legend-heading": "Abreviaturalar siyahısı:", + "rcfilters-other-review-tools": "Digər yoxlama alətləri", + "rcfilters-group-results-by-page": "Dəyişiklikləri səhifələrə görə qruplaşdır", + "rcfilters-grouping-title": "Qruplaşdırma", + "rcfilters-activefilters": "Aktiv filtrlər", + "rcfilters-advancedfilters": "Geniş filtr", + "rcfilters-limit-title": "Göstərilməli dəyişikliklər", + "rcfilters-limit-shownum": "Son {{PLURAL:$1|dəyişikliyi|$1 dəyişikliyi}} göstər", + "rcfilters-days-title": "Son günlər", + "rcfilters-hours-title": "Son saatlar", + "rcfilters-days-show-days": "$1 {{PLURAL:$1|gün|gün}}", + "rcfilters-days-show-hours": "$1 {{PLURAL:$1|saat|saat}}", + "rcfilters-quickfilters": "Yaddaşdakı filtrlər", + "rcfilters-quickfilters-placeholder-title": "Yaddaşa verilmiş keçid yoxdur", + "rcfilters-quickfilters-placeholder-description": "Filtr nizamlamalarını yaddaşda saxlamaq və sonradan təkrar istifadə etmək üçün aşağıdakı Aktiv Filtrlər bölməsindəki əlfəcin nişanını tıqlayın.", + "rcfilters-savedqueries-remove": "Sil", + "rcfilters-savedqueries-new-name-label": "Ad", + "rcfilters-savedqueries-cancel-label": "Ləğv et", + "rcfilters-savedqueries-add-new-title": "Hazırkı filtr nizamlamalarını yaddaşa ver", + "rcfilters-restore-default-filters": "Standart filtrləri bərpa et", + "rcfilters-clear-all-filters": "Bütün filtrləri sil", + "rcfilters-show-new-changes": "Ən son dəyişiklikləri göstər", + "rcfilters-search-placeholder": "Son dəyişiklikləri filtrlə (siyahıdan seçin və ya yazın)", + "rcfilters-empty-filter": "Aktiv filtr yoxdur. Bütün redaktələr göstərilir.", + "rcfilters-filterlist-title": "Filtrlər", + "rcfilters-filterlist-feedbacklink": "Bu (yeni) filtrasiya alətləri barədə fikirlərinizi bizimlə bölüşün", + "rcfilters-highlightbutton-title": "Nəticələri vurğula", + "rcfilters-highlightmenu-title": "Rəng seçin", + "rcfilters-highlightmenu-help": "Bu xüsusiyyəti rəngləmək üçün rəng seçin", + "rcfilters-filtergroup-authorship": "Redaktələrin müəllifliyi", + "rcfilters-filter-editsbyself-label": "Öz dəyişiklikləriniz", + "rcfilters-filter-editsbyother-label": "Başqalarının dəyişiklikləri", + "rcfilters-filtergroup-userExpLevel": "İstifadəçi qeydiyyatı və təcrübəsi", + "rcfilters-filter-user-experience-level-registered-label": "Qeydiyyatlı", + "rcfilters-filter-user-experience-level-unregistered-label": "Qeydiyyatsız", + "rcfilters-filter-user-experience-level-newcomer-label": "Təcrübəsizlər", + "rcfilters-filter-user-experience-level-learner-label": "Öyrənənlər", + "rcfilters-filter-user-experience-level-experienced-label": "Təcrübəli istifadəçilər", + "rcfilters-filtergroup-automated": "Avtomatik redaktələr", + "rcfilters-filter-bots-label": "Bot", + "rcfilters-filter-humans-label": "İnsan (qeyri-bot)", + "rcfilters-filtergroup-significance": "Əhəmiyyətlilik", + "rcfilters-filter-minor-label": "Kiçik redaktələr", + "rcfilters-filter-major-label": "Adi redaktələr", + "rcfilters-filtergroup-watchlist": "İzləmə siyahısındakı səhifələr", + "rcfilters-filter-watchlist-watched-label": "İzləmə siyahısında olan", + "rcfilters-filter-watchlist-watchednew-label": "İzləmə siyahısında yeni redaktələr", + "rcfilters-filter-watchlist-notwatched-label": "İzləmə siyahısında olmayan", + "rcfilters-filtergroup-changetype": "Dəyişiklik növü", + "rcfilters-filter-pageedits-label": "Səhifə redaktələri", + "rcfilters-filter-newpages-label": "Səhifə yaradılmaları", + "rcfilters-filter-categorization-label": "Kateqoriya dəyişiklikləri", + "rcfilters-filter-logactions-label": "Qeydiyyatlı redaktələr", + "rcfilters-filter-logactions-description": "İnzibati tədbirlər, hesab yaradılmaları, səhifə silinmələri, yükləmələr…", + "rcfilters-filtergroup-lastRevision": "Son versiyalar", + "rcfilters-filter-lastrevision-label": "Hazırkı versiya", + "rcfilters-filter-previousrevision-label": "Sonuncu olmayan versiya", + "rcfilters-exclude-button-off": "Seçilənləri istisna et", + "rcfilters-exclude-button-on": "Seçilmişlərin çıxarılması", + "rcfilters-view-advanced-filters-label": "Genişləndirilmiş filtrlər", + "rcfilters-view-tags": "Etiketlənmiş redaktələr", + "rcfilters-view-namespaces-tooltip": "Nəticələri adlar fəzasına görə filtrlə", + "rcfilters-view-tags-tooltip": "Nəticələri redaktə etiketləri əsasında filtrlə", "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", @@ -1036,6 +1107,7 @@ "recentchangeslinked-summary": "Aşağıdakı siyahı, qeyd olunan səhifəyə (və ya qeyd olunan kateqoriyadakı səhifələrə) daxili keçid verən səhifələrdə edilmiş son dəyişikliklərin siyahısıdır.\n[[Special:Watchlist|İzləmə siyahınızdakı]] səhifələr '''qalın''' şriftlə göstərilmişdir.", "recentchangeslinked-page": "Səhifə adı:", "recentchangeslinked-to": "Qeyd olunan səhifədəki deyil, ona daxili keçid verən səhifələrdəki dəyişiklikləri göstər", + "recentchanges-page-added-to-category": "[[:$1]] kateqoriyaya əlavə edildi", "upload": "Fayl yüklə", "uploadbtn": "Sənəd yüklə", "reuploaddesc": "Return to the upload form.", @@ -1104,6 +1176,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 +1314,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 +1341,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 +1351,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 +1360,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 +1380,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 +1400,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 +1478,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 +1495,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", @@ -1580,6 +1665,7 @@ "ipbreason": "Səbəb:", "ipbreason-dropdown": "*Bloklama səbəbləri:\n** Yalan məlumatların əlavə edilməsi\n** Səhifənin məzmununun silinməsi\n** Xarici saytlara spam-keçidlər\n** Səhifəyə mənasız və yararsız əlavələrə görə\n** Hədə və təqiblərə görə\n** Təhqirə görə\n** Çoxsaylı hesabdan sui istifadəyə görə\n** Qadağan olunmuş istifadəçi adına görə", "ipbcreateaccount": "Hesab açmanı məhdudlaşdır", + "ipbenableautoblock": "Bu istifadəçinin istifadə etdiyi son IP-ünvanı və dəyişiklik etməyə çalışdığı sonrakı IP-ünvanları blokla", "ipbsubmit": "Bu istifadəçini blokla", "ipbother": "Başqa vaxt", "ipboptions": "2 saat:2 hours,1 gün:1 day,3 gün:3 days,1 həftə:1 week,2 həftə:2 weeks,1 ay:1 month,3 ay:3 months,6 ay:6 months,1 il:1 year,müddətsiz:infinite", @@ -1601,10 +1687,15 @@ "unblockip": "İstifadəçinin blokunu götür", "unblockiptext": "Əvvəlcədən bloklanmış bir IP ünvanına və ya istifadəçi adına yazma geri vermek için aşağıdakı formadan istifadə edin.", "ipusubmit": "Bu bloku götür", - "unblocked": "[[User:$1|$1]] - nin bloku götürüldü", - "unblocked-range": "$1-nin bloku götürüldü", - "unblocked-id": "$1-nin bloku götürüldü", + "unblocked": "[[User:$1|$1]] blokdan çıxarıldı", + "unblocked-range": "$1 blokdan çıxarıldı", + "unblocked-id": "$1 üzərindən blok 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 +1950,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", @@ -2375,7 +2468,7 @@ "compare-submit": "Qarşılaşdır", "dberr-problems": "Üzr istəyirik! Bu saytda texniki problemlər var.", "dberr-info": "(Məlumat bazası ilə əlaqə yoxdur: $1)", - "htmlform-invalid-input": "Girişinizin bir qismilə əlaqədəar problemlər var", + "htmlform-invalid-input": "Daxil etdiyiniz məlumatın bir qismilə əlaqədar problem var", "htmlform-select-badoption": "İşarə etdiyiniz xüsus keçərli deyil.", "htmlform-int-invalid": "Göstərdiyiniz ifadə tam ədəd deyil.", "htmlform-float-invalid": "Göstərdiyiniz ifadə ədəd deyil.", diff --git a/languages/i18n/azb.json b/languages/i18n/azb.json index b1441ff15b..76ee035884 100644 --- a/languages/i18n/azb.json +++ b/languages/i18n/azb.json @@ -19,7 +19,9 @@ "Mjbmr", "Alp Er Tunqa", "Matma Rex", - "Ilğım" + "Ilğım", + "ییلماز", + "Saraiki" ] }, "tog-underline": "باغلانتی‌لارین آلتینی خطله:", @@ -151,7 +153,7 @@ "category-file-count-limited": "بۇ بؤلمه‌ده، آشاغیداکی {{PLURAL:$1|فایل|$1 فایل}} واردیر.", "listingcontinuesabbrev": "(قالانی)", "index-category": "ایندئکس‌لشدیریلمیش صحیفه‌لر", - "noindex-category": "ایندئکس‌لشدیریلمه‌میش صحیفه‌لر", + "noindex-category": "ایندکس‌لشدیریلمه‌میش صفحه‌لر", "broken-file-category": "قیریلمیش فایل باغلانتیلاری اوْلان صحیفه‌لر", "about": "حاقیندا", "article": "ایچری‌لی صحیفه", @@ -179,6 +181,7 @@ "searcharticle": "گئت", "history": "صفحه‌‌نین گئچمیشی", "history_short": "گئچمیش", + "history_small": "گئچمیش", "updatedmarker": "سوْن باخیشیمدان سوْنرا یئنی‌لنیب‌دیر", "printableversion": "چاپ اۆچون نۆسخه", "permalink": "قالیجی لینک", @@ -385,8 +388,11 @@ "createacct-yourpasswordagain-ph": "رمزی یئنی‌دن یازین", "userlogin-remembermypassword": "منی ایچری‌ده ساخلا", "userlogin-signwithsecure": "آرخایین باغلانتی ایشلدین", + "cannotlogin-title": "گیرمک اوْلمور", + "cannotlogin-text": "گیرمک مۆمکون دئییل.", "cannotloginnow-title": "ایندی گیریش اوْلونمازدیر", "cannotloginnow-text": "$1-ی ایشلدرکن گیریش اوْلونمازدیر", + "cannotcreateaccount-title": "حساب یاراتماق اوْلمور", "yourdomainname": "سیزین دامنه:", "password-change-forbidden": "بو ویکی‌ده رمزلری دَییشه بیلنمه‌سینیز.", "externaldberror": "بیر دیتابیس دوغرولاما خطاسی اولدو، یوخسا سیزین ائشیک حسابینیزی گونجل‌لدمگه ایجازه‌نیز یوخدور.", @@ -461,7 +467,7 @@ "cannotchangeemail": "حساب ایمیل آدرسلری بو ویکی‌ده دَییشیلنمزلر.", "emaildisabled": "بو سایت ایمیل گؤندرنمز.", "accountcreated": "حساب یارادیلدی", - "accountcreatedtext": "[[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|دانیشیق]]) ایستیفاده‌چی حسابی یارادیلیب‌دیر.", + "accountcreatedtext": "[[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|دانیشیق]]) ایشلدن حسابی یارادیلیب‌دیر.", "createaccount-title": "{{SITENAME}} اوچون حساب یارادیلماسی", "createaccount-text": "بیر کس، سیزین ایمیل آدرسینیزه {{SITENAME}} ($4) سایتیندا «$2» آدی و «$3» رمزی ایله بیر حساب آچیب‌دیر. سیز گرک گیریش ائدیب و رمزینیزی ایندی دَییشدیره‌سیز.\n\nبو حساب یانلیش دوزلیب‌سه، بو مئساژا محل قویمایابیلرسیز.", "login-throttled": "سیزین چوخ گیریش چالیشماغینیز اولوب‌دور.\nلوطفاً یئنی‌دن چالیشماق‌دان اؤنجه بیر آز $1 دؤزون.", @@ -473,7 +479,7 @@ "pt-login": "گیریش ائت", "pt-login-button": "گیریش ائت", "pt-login-continue-button": "گیریشین دالینی توت", - "pt-createaccount": "حساب یارات", + "pt-createaccount": "حساب آچ", "pt-userlogout": "چیخیش", "php-mail-error-unknown": "پی‌اچ‌پی‌نین mail() فونکسیاسیندا تانینمامیش خطا.", "user-mail-no-addy": "ایمیل آدرسی اولماماق‌لا، ایمیل گؤندرمگه چالیشدی", @@ -626,7 +632,6 @@ "explainconflict": "سیز صحیفه‌‌نی رئداکته باشقا بیری ده ديَیشیکلیک ائتدی. \nيوخاریداکی يازی صحیفه‌‌نین بو آنکی حالینی گؤستریر. \nسیزین ديَیشیکلیکلری‌نین آلتا گؤستریلمیشدیر. سون دئغیشیکلئرینیزی يازی‌نین ایچینه داخیل ائتمه‌يینیز لازیم اولاجاق. \n«$1» ائ باسدیغینیزداع' ' يالنیزعع' يوخاریداکی يازی يازیلاجاق.", "yourtext": "یازینیز", "storedversion": "قئید ائدیلمیش نوسخه", - "nonunicodebrowser": "' 'دیققت: آختاریش برنامه نیز اویغون دئییل.\nصحیفه‌لری اعتبارلا دییشدیرمیینیزه ایجازه وئرمک اوچون: آسجیی اولمایان کاراکتئرلر دییشدیرمه قوتوسوندا اونالتیلیک کودلار اولا‌راق گؤرونه‌جک.' '", "editingold": "'دیققت! سیز بو صحیفه‌نین کؤهنه نوسخه سین دییشدیر ائدیرسینیز. مقالنی یادداشدا ساخلایاجاغینیز حالدا بو نوسخه سونرا ائدیلمیش هر بیر دییشیک‌لیک ایتیریله‌جک.'", "yourdiff": "فرق‌لر", "copyrightwarning": "خاهیش اولونور دقته آلاسینیز کی، {{SITENAME}}داکی بوتون فالیت‌لرینیز $2 لیسئنزیاسینا تابع اولدوغو حساب ائدیلیر (تفرروات اوچون باخ: $1). اگر یازدیق‌لارینیزین اساس‌لی شکیلده رئداکته ائدیلمه‌سینی و ایستنیلدیگی واخت باشقا یئره اؤتورولمه‌سینی ایستمیرسینیزسه، یازی‌لارینیزی بورادا درج ائتمیین.\n
    \nسیز عینی زاماندا سؤز وئریرسینیز کی، بو یازی‌لاری سیز اؤزونوز یازمیسینیز و یا اونلاری هامییا آچیق موهیت‌دن یا دا بونا بنزر منبع‌دن کؤچورموسونوز.\n\n----\n\n ایستیلئ=\"فونت-weight: بولد؛ فونت-سیزئ: 110%؛ جولور:رئد؛\">موللیف حقوق‌لاری ایله قورونموش هئچ بیر ایشی ایجازه‌سیز درج ائتمیین!", @@ -651,7 +656,7 @@ "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چوخ گومان کی، صحیفه سیلینمیش‌دیر.", @@ -715,7 +720,7 @@ "page_first": "ایلک", "page_last": "سون", "histlegend": "فرقلری سئچمه: موقاییسه ائتمک ایسته‌دیگینیز دییشیک‌لیکلرین یانینداکی گیرده دۆیمه‌لره علامت قویون و سوْنرا Enter-ی وۇروب یوْخسا آشاغیداکی دۆیمه‌نی وورون.
    \nآچیقلاما:'''({{int:cur}})''' =سون نوسخه ایله فرقلر ، '''({{int:last}})''' = قاباقکی نوسخه ایله فرقلر، '''{{int:minoreditletter}}''' = کیچیک دییشیک‌لیک.", - "history-fieldset-title": "گئچمیشی آختار", + "history-fieldset-title": "نۆسخه‌لر آختاریشی", "history-show-deleted": "تکجه سیلینَنلر", "histfirst": "ان اسکی", "histlast": "ان یئنی", @@ -863,6 +868,7 @@ "search-interwiki-caption": "قارداش پروژه‌لر", "search-interwiki-default": "$1 دان سونوجلار:", "search-interwiki-more": "(داها)", + "search-interwiki-more-results": "داها چوْخ نتیجه‌لر", "search-relatedarticle": "ایلگیلی", "searchrelated": "ایلگیلی", "searchall": "بوتون", @@ -879,6 +885,7 @@ "search-external": "ائشیک آختاریش", "searchdisabled": "{{SITENAME}} آختاریشی باغلانیب‌دیر.\nایندی گوگل ایله آختارا بیلرسینیز.\nدیقت ائدین کی اونون {{SITENAME}} ایندئکسی، کؤهنه اولا بیلر.", "search-error": "آختاراندا بیر خطا قاباغا گلدی: $1", + "search-warning": "آختاراندا بیر خطا قاباغا گلدی: $1", "preferences": "ترجیحلر", "mypreferences": "ترجیحلر", "prefs-edits": "دَییشمه‌لرین سایی:", @@ -987,8 +994,8 @@ "prefs-help-prefershttps": "سیزین بو ترجیحینیزین اثری سیزین سونراکی گیریشینیز دن سونرا اولاجاق.", "prefswarning-warning": "ترجیحلرینیزه اولان دَییشیک لر هله آرتیریلمیب.\nایر بو صفحه نین \"$1\" اوستونه باسیلمامیشدان اونجه ترک ائتسز ترجیحلرینیز آرتیریلمییاجاق.", "prefs-tabs-navigation-hint": "ایپ اوجو : سیز ائلیه بیلرسیز ساغ و سول جهت نیما کیلید لریندن نیشانه نه نین دولانماسی نیشانه لر لیستینده ایستفاده ائده سیز.", - "userrights": "ایستیفاده‌چی حاقلاری ایداره‌سی", - "userrights-lookup-user": "ایستیفاده‌چی گروپلاری ایداره‌سی", + "userrights": "ایشلدن حاقلاری", + "userrights-lookup-user": "بیر ایشلدن سئچ", "userrights-user-editname": "ایستیفاده‌چی آدی‌نیزی یازین", "editusergroup": "ایستیفاده‌چی قروپونو دَییشدیر", "editinguser": "ایستیفاده‌چی '[[User:$1|$1]]' $2 اوچون ایستیفاده‌چی حقوق‌لاری دییشدیریلیر", @@ -1002,6 +1009,8 @@ "userrights-nodatabase": "$1 وئریلنلر بازاسی يا مؤوجود دئيیل، يا دا لوکال دئيیل.", "userrights-changeable-col": "ديَیشدیره بیلدیگینیز قروپلار", "userrights-unchangeable-col": "ديَیشدیره بیلمه‌دیگینیز قروپلار", + "userrights-expiry-current": "$1-ده قۇرتولور", + "userrights-expiry-othertime": "آیری چاغ", "userrights-conflict": "ایستیفاده‌چی حاقلاری توققوشماسی! لوطفاً گوزله ین و دَییشدیرمه‌لرینیزی یئنی‌دن ائدین.", "group": "گروه:", "group-user": "ایستفاده‌چیلر", @@ -1092,6 +1101,7 @@ "right-override-export-depth": "ایچری باغلانتیلاری اولان صحیفه‌لری، چوخو ۵ درجه درینلیگی ایله، ایخراج ائت", "right-sendemail": "باشقا ایستیفاده‌چیلره ایمیل گؤندر", "grant-group-email": "ایمئیل گؤندر", + "grant-createaccount": "حساب یارات", "newuserlogpage": "ایشلدن یارادیلما ژورنالی", "newuserlogpagetext": "بۇ ایشلدن یارادماق لیستی‌دیر.", "rightslog": "ایشلدن حاقلاری ژورنالی", @@ -1716,7 +1726,7 @@ "unwatchthispage": "صحیفه ایزلمیی دایان‌دیر", "notanarticle": "مضمون صحیفه‌سی دئییل", "notvisiblerev": "باشقا ایستیفادی‌چی‌نین سون دییشیک‌لیگی سیلینیب", - "watchlist-details": "دانیشیق صفحه‌لرینی آیری سایمایاراق، {{PLURAL:$1|$1 صفحه‌نی}} ایزله‌ییرسینیز.", + "watchlist-details": "{{PLURAL:$1|$1 صفحه‌نی}} (دانیشیق صفحه‌لریله) ایزله‌ییرسینیز.", "wlheader-enotif": "ایمیل ایله بیلدیریش آچیلیب‌دیر.", "wlheader-showupdated": "سون گؤروشونوزدن سوْنرا ائدیلن دییشیکلیکلر '''قالین''' گؤرسدیلیب‌دیر.", "wlnote": "آشاغیداکی {{PLURAL:$1|بیر ديَیشیک‌لیک|$1 ديَیشیک‌لیک}} سون {{PLURAL:$2|ساعتدا|$2 ساعتدا}} ائدیلمیشدیر. $3، $4", @@ -1932,7 +1942,7 @@ "whatlinkshere-hideredirs": "$1 یول‌لاندیرمالاری", "whatlinkshere-hidetrans": "$1 علاوه‌لری", "whatlinkshere-hidelinks": "$1 باغلانتیلاری", - "whatlinkshere-hideimages": "فایل باغلانتیلارینی $1", + "whatlinkshere-hideimages": "$1 فایل باغلانتی‌سی", "whatlinkshere-filters": "سۆزگَجلر", "whatlinkshere-submit": "گئت", "autoblockid": "اوتوماتیک باغلانما #$1", @@ -2235,16 +2245,16 @@ "tooltip-n-randompage": "بیر تصادوفی صفحه گتیر", "tooltip-n-help": "آنلاماق یئری", "tooltip-t-whatlinkshere": "بۇرا باغلانان بۆتون ویکی صفحه‌لرین لیستی", - "tooltip-t-recentchangeslinked": "بۇ صفحه اوْنلارا باغلانان صفحه‌لرین سوْن دَییشیکلیک‌لری", + "tooltip-t-recentchangeslinked": "بۇ صفحه‌دن باغلانتی‌لی صفحه‌لرین سوْن دَییشیکلیک‌لری", "tooltip-feed-rss": "بو صحیفه‌‌ اوچون آراس‌اس يايیمی", "tooltip-feed-atom": "بو صحیفه‌‌ اوچون آتوم يايیمی", "tooltip-t-contributions": "{{GENDER:$1|بۇ ایشلدنین}} وئردیگی دییشیکلر لیستی", - "tooltip-t-emailuser": "بو ایستیفاده‌چی‌یه بیر ایمیل گؤندر", + "tooltip-t-emailuser": "بو ایشلدنه بیر ایمیل گؤندر", "tooltip-t-info": "بو صفحه‌یه گؤره آرتیق ایطلاعات", "tooltip-t-upload": "فایل‌لار یوکله", "tooltip-t-specialpages": "بوتون اؤزل صفحه‌لرین لیستی", "tooltip-t-print": "بو صفحه‌‌نین چاپ ائدیلن سۆرومو", - "tooltip-t-permalink": "صفحه‌نین بو سۆرومونه دَییشیلمز باغلانتی", + "tooltip-t-permalink": "صفحه‌نین بو نۆسخه‌سینه دَییشیلمز باغلانتی", "tooltip-ca-nstab-main": "مقاله‌یه باخین", "tooltip-ca-nstab-user": "ایشلدن صفحه‌سینه باخ", "tooltip-ca-nstab-media": "مئدیا-فايل", @@ -2254,7 +2264,7 @@ "tooltip-ca-nstab-mediawiki": "سیستم مئساژلرینه باخ", "tooltip-ca-nstab-template": "شابلونا باخ", "tooltip-ca-nstab-help": "یاردیم صفحه‌‌سی", - "tooltip-ca-nstab-category": "بؤلمه صحیفه‌‌سینی گؤستر", + "tooltip-ca-nstab-category": "بؤلمه صفحه‌‌سینی گؤستر", "tooltip-minoredit": "بو دییشیگی کیچیک دییشیک کیمی قئید ائت", "tooltip-save": "ديَیشیکلیکلرینیزی قئيد ائدین", "tooltip-preview": "لوطفاً صحیفه‌نی قئید ائتمک‌دن اؤنجه، دییشیکلرینیزی سیناق گؤستریش ایله باخین!", @@ -2298,6 +2308,7 @@ "pageinfo-length": "صفحه‌‌ اوزونلوغو (بايت)", "pageinfo-article-id": "صفحه آی‌دی-سی", "pageinfo-language": "صفحه مضمونونون دیلی", + "pageinfo-content-model": "صفحه‌نین ایچینده‌کیلرینین دۆزولوشو", "pageinfo-robot-policy": "بوتلارلا ایندِکسلنیر", "pageinfo-robot-index": "ایجازه‌لی", "pageinfo-robot-noindex": "ایجازه‌سیز", @@ -2368,7 +2379,7 @@ "show-big-image": "فایلین اصلی", "show-big-image-preview": "سیناق گؤستریشی اؤلچوسو: $1.", "show-big-image-other": "آیری {{PLURAL:$2|کیفیت|کیفیتلر}}: $1.", - "show-big-image-size": "$1 × $2 پیکسئل", + "show-big-image-size": "$1 × $2 پیکسل", "file-info-gif-looped": "ایلملنیب", "file-info-gif-frames": "$1 {{PLURAL:$1|فرامئ|چرچیوه}}", "file-info-png-looped": "ایلملنیب", @@ -2807,7 +2818,7 @@ "autosumm-replace": "صفحه‌‌نین مضمونونو ' $1' يازیسی ایله ديَیشدیریلدی", "autoredircomment": "[[$1]] صفحه‌‌سینه یوْللاندیریلیر", "autosumm-new": "صفحه‌‌نی ' $1' ایله ياراتدی", - "autosumm-newblank": "بوش صحفه یاراندی", + "autosumm-newblank": "بوش صفحه یاراندی", "lag-warn-normal": "$1 {{PLURAL:$1 | سانیيه‌دن | سانیيه‌ده}} يئنی ديَیشیکلیکلر بو سیياهیدا گؤرولمه‌يه.", "lag-warn-high": "وئریلنلر بازاسی سونوجوسونداکی هددیندن آرتیق گئجیکمه‌دن گؤره، $1 {{PLURAL:$1 | سانیيه‌دن | سانیيه‌دن}} يئنی ديَیشیکلیکلر بو سیياهیدا گؤرونمئيئبیلیر.", "watchlistedit-normal-title": "ایزله‌دیکلریم صفحه‌‌لری دَییشدیر", @@ -2874,8 +2885,8 @@ "version-libraries-version": "نوسخه‌", "version-libraries-description": "آچیقلاما", "version-libraries-authors": "یازارلار", - "redirect": "فایل، ایستیفاده‌چی، صفحه یا نوسخه آی‌دی-سی ایله یول‌لاندیرما", - "redirect-summary": "بو اؤزل صحیفه، بیر فایلا (فایل آدی ایله)، صفحه‌یه (نوسخه یا صفحه آی‌دی-سی ایله) یا ایستیفاده‌چی صفحه‌سینه (ایستیفاده‌چی نومره آی‌دی-سی ایله) یول‌لاندیریر. ایشلتمک: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]]، [[{{#Special:Redirect}}/revision/328429]]، یا [[{{#Special:Redirect}}/user/101]].", + "redirect": "فایل، ایشلدن، صفحه، نوسخه یا قئید ایله یول‌لاندیرما", + "redirect-summary": "بو اؤزل صفحه، بیر فایلا (فایل آدی ایله)، صفحه‌یه (نوسخه یا صفحه آی‌دی-سی ایله)، ایشلدن صفحه‌سینه (ایشلدن نومره آی‌دی-سی ایله) یا بیر قئیده (قئیدین آی‌دی‌سی ایله) یول‌لاندیریر. ایشلتمک: [[{{#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": "دَگَر:", @@ -2893,7 +2904,6 @@ "fileduplicatesearch-result-n": "«$1» فایلینین، {{PLURAL:$2|بیر|$2}} عینی کوپیسی واردیر.", "fileduplicatesearch-noresults": "\"$1\" آدیندا فایل تاپیلمادی.", "specialpages": "اؤزل صفحه‌لر", - "specialpages-note": "* نورمال اؤزل صفحه‌لر.\n* محدودلاشدیریلمیش اؤزل صفحه‌لر.", "specialpages-group-maintenance": "ساخلانیش گوزاریشلری", "specialpages-group-other": "آیری اؤزل صفحه‌لر", "specialpages-group-login": "گیریش / حساب یارات", @@ -2987,7 +2997,7 @@ "htmlform-user-not-exists": "$1 یوخدور.", "htmlform-user-not-valid": "$1 بیر دوزگون ایشلدن آدی دئییل.", "logentry-delete-delete": "$1، $3 صفحه‌سینی {{GENDER:$2|سیلدی}}", - "logentry-delete-restore": "$1، $3 صفحه‌سینی {{GENDER:$2|قایتاردی}}", + "logentry-delete-restore": "$1، $3 صفحه‌سینی {{GENDER:$2|قایتاردی}} ($4)", "logentry-delete-event": "$1، $3-ده $5 سیاهی اولایینین {{PLURAL:$5|گؤرونوشونو|گؤرونوشلرینی}} {{GENDER:$2|دَییشدیردی}}: $4", "logentry-delete-revision": "$1، $3 صفحه‌سینده $5 نوسخه‌نین {{PLURAL:گؤرونوشونو|گؤرونوشلرینی}} {{GENDER:$2|دَییشدیردی}}: $4", "logentry-delete-event-legacy": "$1، $3-ده سیاهی اولایلارینین گؤرونوشلرینی {{GENDER:$2|دَییشدیردی}}", @@ -3113,6 +3123,7 @@ "mw-widgets-dateinput-no-date": "تاریخ سئچیلمه‌ییب", "mw-widgets-titleinput-description-new-page": "صفحه هله‌لیک یوخدور", "mw-widgets-titleinput-description-redirect": "$1-ه داشی", + "randomrootpage": "تصادوفی آنا صفحه", "log-action-filter-block": "باغلانما نوعو:", "log-action-filter-managetags": "ایداره نوعو:", "log-action-filter-move": "حرکت نوعو:", diff --git a/languages/i18n/ba.json b/languages/i18n/ba.json index 44e67df928..ac3cdc631d 100644 --- a/languages/i18n/ba.json +++ b/languages/i18n/ba.json @@ -58,13 +58,14 @@ "tog-shownumberswatching": "Битте күҙәтеү исемлегенә өҫтәгән ҡулланыусылар һанын күрһәтергә", "tog-oldsig": "Хәҙерге имза:", "tog-fancysig": "Имзаның үҙ вики-тамғаһы (автоматик һылтанмаһыҙ)", - "tog-uselivepreview": "Тиҙ ҡарап алыуҙы ҡулланырға (JavaScript, эксперименталь)", + "tog-uselivepreview": "Тиҙ ҡарап алыуҙы ҡулланырға", "tog-forceeditsummary": "Төҙәтеүҙе тасуирлау юлы тултырылмаһа, мине киҫәт", "tog-watchlisthideown": "Үҙгәртеүҙеремде күҙәтеү исемлегенән йәшерергә", "tog-watchlisthidebots": "Боттар үҙгәртеүҙәрен күҙәтеү исемлегенән йәшерергә", "tog-watchlisthideminor": "Әҙ үҙгәрештәрҙе күҙәтеү исемлегенән йәшерергә", "tog-watchlisthideliu": "Танылған ҡулланыусыларҙың үҙгәртеүҙәрен күҙәтеү исемлегенән йәшерергә", "tog-watchlistreloadautomatically": "Һөҙгөс үҙгәргән һайын күҙәтеү исемлеген автоматик рәүештә яңыртырға (JavaScript кәрәк)", + "tog-watchlistunwatchlinks": "Күҙәтеү исемлегендәге яҙмаларға туранан-тура индереү/алыу (JavaScript кәрәк)", "tog-watchlisthideanons": "Аноним ҡулланыусыларҙың үҙгәртеүҙерен күҙәтеү исемлегенән йәшерергә", "tog-watchlisthidepatrolled": "Тикшерелгән үҙгәртеүҙәрҙе күҙәтеү исемлегенән йәшерергә", "tog-watchlisthidecategorization": "Биттәр категоризацияһын йәшереү", @@ -100,7 +101,7 @@ "february": "февраль", "march": "март", "april": "апрель", - "may_long": "май (һабанай)", + "may_long": "май", "june": "июнь", "july": "июль", "august": "август", @@ -143,7 +144,7 @@ "september-date": "Сентябрь $1", "october-date": "Октябрь $1", "november-date": "Ноябрь $1", - "december-date": "Сентябрь $1", + "december-date": "Декабрь $1", "period-am": "ТК", "period-pm": "ТС", "pagecategories": "{{PLURAL:$1|1=Категория|Категориялар}}", @@ -153,13 +154,13 @@ "category-empty": "\"Был категория әлегә буш.\"", "hidden-categories": "{{PLURAL:$1|Йәшерен категория|Йәшерен категориялар}}", "hidden-category-category": "Йәшерен категориялар", - "category-subcat-count": "{{PLURAL:$2|Был категорияла тик киләһе эске категория ғына бар.|Барлығы $2 категориянан, был категорияла киләһе {{PLURAL:$1|эске категория|$1 эске категория}} күрһәтелә.}}", + "category-subcat-count": "{{PLURAL:$2|Был категорияла тик киләһе эске категория ғына бар.|Барлығы $2 категориянан, был категорияла киләһе {{PLURAL:$1|эске категория|$1 эске категория}} күрһәтелә.}}", "category-subcat-count-limited": "Был категорияға киләһе {{PLURAL:$1|эске категория|$1 эске категория}} ингән.", "category-article-count": "{{PLURAL:$2|1=Был категорияла бер генә бит бар.|Категориялағы $2 биттең $1 бите күрһәтелгән.}}", "category-article-count-limited": "Был категорияла {{PLURAL:$1|$1 бит}} бар.", "category-file-count": "{{PLURAL:$2|Был категорияла бер генә файл бар.|Категориялағы $2 файлдың {{PLURAL:$1|$1 файлы күрһәтелгән}}.}}", "category-file-count-limited": "Был категорияла {{PLURAL:$1|$1 файл}} бар.", - "listingcontinuesabbrev": "(дауамы)", + "listingcontinuesabbrev": "дауамы", "index-category": "Индексланған биттәр", "noindex-category": "Индексланмаған биттәр", "broken-file-category": "Файлға һылтанмалары эшләмәгән биттәр", @@ -168,13 +169,13 @@ "newwindow": "(яңы биттә)", "cancel": "Кире алырға", "moredotdotdot": "Дауамы...", - "morenotlisted": "Был исемлек тулы түгел", + "morenotlisted": "Был исемлек тулы түгел.", "mypage": "Бит", "mytalk": "Әңгәмә", "anontalk": "Әңгәмә", "navigation": "Төп йүнәлештәр", "and": " һәм", - "faq": "ЙБҺ", + "faq": "ЙБҺ (ЧаВо)", "actions": "Ғәмәлдәр", "namespaces": "Исем арауыҡтары", "variants": "Варианттар", @@ -184,23 +185,24 @@ "tagline": "{{SITENAME}} проектынан", "help": "Белешмә", "search": "Эҙләү", - "search-ignored-headings": " #
    \n# Эҙләүҙәр инҡар иткән атамалар.\n# Атамаһы булған бит индексланғас та, үҙгәртмәләр үҙ көсөнә инәсәк.\n# Буш төҙәтеү менән һеҙ битте яңынан индекслата алаһығыҙ\n# Синтаксис шулай күренә:\n#   * Ошо символға «#» башланған юлдың аҙағына тиклем комментарий була\n#   * Һәр буш булмаған юл - инҡар ителгәндең атамаһы, быға регистр ҙа инә\nИҫкәрмәләр\nҺылтанмалар\nҠарағыҙ шулай уҡ\n#
    ", + "search-ignored-headings": " #
    \n# Эҙләүҙәр инҡар иткән атамалар.\n# Атамаһы булған бит индексланғас та, үҙгәртмәләр үҙ көсөнә инәсәк.\n# Буш төҙәтеү менән һеҙ битте яңынан индекслата алаһығыҙ\n# Синтаксис шулай күренә:\n#   * Ошо символға «#» башланған юлдың аҙағына тиклем комментарий була\n#   * Һәр буш булмаған юл - инҡар ителгәндең атамаһы, быға регистр ҙа инә\nИҫкәрмәләр\nҺылтанмалар\nҠарағыҙ шулай уҡ\n#
    ", "searchbutton": "Эҙләү", "go": "Күсеү", "searcharticle": "Күсеү", "history": "Бит тарихы", "history_short": "Тарих", + "history_small": "тарихы", "updatedmarker": "һуңғы инеүемдән һуң яңыртылған", "printableversion": "Баҫтырыу өлгөһө", "permalink": "Даими һылтанма", - "print": "Баҫыу", + "print": "Баҫтырыу", "view": "Ҡарау", "view-foreign": "$1 сайтында ҡарау", "edit": "Үҙгәртеү", "edit-local": "Локаль тасуирламаны үҙгәртергә", - "create": "Төҙөргә", + "create": "Төҙөү", "create-local": "Локаль тасуирлама өҫтәргә", - "delete": "Юҡ итергә", + "delete": "Юйырға", "undelete_short": "$1 {{PLURAL:$1|үҙгәртеүҙе}} тергеҙергә", "viewdeleted_short": "{{PLURAL:$1|1=1 юйылған үҙгәртеүҙе|$1 юйылған үҙгәртеүҙе}} ҡарау", "protect": "Һаҡларға", @@ -210,11 +212,11 @@ "talkpagelinktext": "әңг.", "specialpage": "Ярҙамсы бит", "personaltools": "Шәхси ҡоралдар", - "talk": "Әңгәмә", + "talk": "Фекер алышыу", "views": "Ҡарауҙар", "toolbox": "Ҡоралдар", "tool-link-userrights": "{{GENDER:$1|Ҡатнашыусы}} төркөмдәрен үҙгәртергә", - "tool-link-userrights-readonly": "{{GENDER:$1|Ҡатнашыусы|Ҡатнашыулар}} төркөмдәрен ҡарарға", + "tool-link-userrights-readonly": "{{GENDER:$1|Ҡатнашыусы}} төркөмдәрен ҡарарға", "tool-link-emailuser": "{{GENDER:$1|Ҡатнашыусыға}} хат яҙырға", "imagepage": "Файл битен ҡарарға", "mediawikipage": "Хәбәрҙәр битен ҡарарға", @@ -232,8 +234,8 @@ "jumpto": "Унда күсергә:", "jumptonavigation": "төп йүнәлештәр", "jumptosearch": "эҙләү", - "view-pool-error": "Ғәфү итегеҙ, хәҙерге ваҡытта серверҙар артыҡ тейәлгән.\nБыл битте ҡарарға теләүселәр бик күп.\nБыл биткә һуңғарак кереп ҡарағыҙ.\n\n$1", - "generic-pool-error": "Ғәфү итегеҙ, хәҙерге ваҡытта серверҙар көсөргәнешле эшләй.\nБыл болды ҡарарға теләүселәр бик күп.\nЗинһар, бер ни тиклем көтөгөҙ һәм һуңыраҡ тағы мөрәжәғәт итеп ҡарағыҙ.", + "view-pool-error": "Ғәфү итегеҙ, хәҙерге ваҡытта серверҙар көсөргәнешле эшләй.\nБыл битте ҡарарға теләүселәр бик күп.\nБыл биткә һуңғарак кереп ҡарағыҙ.\n\n$1", + "generic-pool-error": "Ғәфү итегеҙ, хәҙерге ваҡытта серверҙар көсөргәнешле эшләй.\nБыл болды ҡарарға теләүселәр бик күп.\nБер ни тиклем көтөгөҙ һәм һуңыраҡ тағы мөрәжәғәт итеп ҡарағыҙ.", "pool-timeout": "Блоклауҙы көтөү ваҡыты үтте", "pool-queuefull": "Һорауҙар сираты тулы", "pool-errorunknown": "Билдәһеҙ хата", @@ -259,12 +261,12 @@ "badaccess": "Кереү хатаһы", "badaccess-group0": "Һоратылған ғәмәлде үтәй алмайһығыҙ.", "badaccess-groups": "Һоратылған ғәмәлде киләһе {{PLURAL:$2|1=төркөм|төркөмдәр}} ҡулланыусылары ғына башҡара ала: $1.", - "versionrequired": "MediaWiki-ның $1 версияһы кәрәкле", + "versionrequired": "MediaWiki-ның $1 версияһы кәрәк", "versionrequiredtext": "Был бит менән эшләү өсөн MediaWiki-ның $1 версияһы кәрәк. [[Special:Version|Ҡулланылған версия тураһында мәғлүмәт битен]] ҡара.", "ok": "Тамам", "pagetitle": "{{SITENAME}} проектынан", "retrievedfrom": "Сығанағы — «$1»", - "youhavenewmessages": "Яңы $1 бар ($2).", + "youhavenewmessages": "{{PLURAL:$3|Һеҙгә}} $1 ($2) бар.", "youhavenewmessagesfromusers": "{{PLURAL:$4|Һеҙгә}} {{PLURAL:$3|$3 ҡатнашыусыһынан}} $1 килде ($2).", "youhavenewmessagesmanyusers": "Һеҙгә күп ҡатнашыусынан $1 бар ($2).", "newmessageslinkplural": "{{PLURAL:$1|1=яңы хәбәр|яңы хәбәр}}", @@ -542,7 +544,7 @@ "botpasswords-updated-body": "$1 роботы өсөн $2 ҡулланыусыһы серһүҙе яңыртылды.", "botpasswords-deleted-title": "Робот серһүҙе юйылды.", "botpasswords-deleted-body": "$1 роботы өсөн $2 ҡулланыусыһы серһүҙе юйылды.", - "botpasswords-newpassword": "Инеү өсөн яңы серһүҙ $1 — $2. Артабан ҡулланыу өсөн яһып алығыҙ.$3 ҡатнашыусы исеме $4 пароль сифаты)", + "botpasswords-newpassword": "Инеү өсөн яңы серһүҙ $1 — $2. Артабан ҡулланыу өсөн яҙып алығыҙ.
    (Иҫәп яҙмаһы менән ҡатнашыусының исеме бер булыуын талап иткән иҫке боттар өсөн, $3 ҡатнашыусы исеме итеп һәм $4 серһүҙ итеп ҡуллана алаһығыҙ.)", "botpasswords-no-provider": "BotPasswordsSessionProvider ғәмәлдә түгел.", "botpasswords-restriction-failed": "Робот серһүҙе менән бәйле сәбәптәр булғанға инеү башҡарылманы.", "botpasswords-invalid-name": "Күрһәтелгән ҡулланыусы исемендә робот $1 серһүҙен бүлеүсе тамға юҡ.", @@ -574,7 +576,11 @@ "passwordreset-emailelement": "Ҡулланыусы исеме: \n$1\n\nВаҡытлыса серһүҙ: \n$2", "passwordreset-emailsentemail": "Серһүҙҙе ташлау тураһындағы мәғлүмәт менән электрон почта аша хат ебәрелде.", "passwordreset-emailsentusername": "Әгәр был ҡатнашыусының исеменә бәйле электрон почтаһының адресы булһа, ул саҡта серһүҙҙе тергеҙеү өсөн хат ебәреләсәк.", + "passwordreset-nocaller": "Мөрәжәғәт сығанағы күрһәтелергә тейеш", + "passwordreset-nosuchcaller": "Мөрәжәғәт сығанағы юҡ: $1", + "passwordreset-ignored": "Серһүҙҙе ташлау эшләнмәне. Бәлки, бер провайдер ҙа көйләнмәгәндер?", "passwordreset-invalidemail": "Электрон почта адресы ҡабул ителмәй", + "passwordreset-nodata": "Ҡатнашыусы исеме лә, электрон почта адресы ла күрһәтелмәгән", "changeemail": "Электрон почта адресын үҙгәртергә", "changeemail-header": "Электрон почта адресын үҙгәртеү", "changeemail-no-info": "Был биткә туранан ирешеү өсөн һеҙгә системала танылыу кәрәк.", @@ -621,19 +627,20 @@ "preview": "Ҡарап сығыу", "showpreview": "Ҡарап сығырға", "showdiff": "Индерелгән үҙгәрештәр", - "blankarticle": "Иҫкәртеү: Һеҙ булдырасаҡ бит буш.\nӘгәр тағы ла «$1» кнопкаға баҫһағыҙ, шул уҡ йөкмәткеле бит яңынан барлыҡҡа киләсәк.", + "blankarticle": "Иҫкәртеү: Һеҙ булдырасаҡ бит буш.\nӘгәр тағы ла «$1» төймәһенә баҫһағыҙ, йөкмәткеһеҙ бит барлыҡҡа киләсәк.", "anoneditwarning": "Иғтибар! Һеҙ сайтта теркәлмәнегеҙ. Әгәр ҙә һеҙ ниндәй ҙә булһа төҙәтмәләр йәки үҙгәртүҙәр индерһәгеҙ, һеҙҙең IP-адрес башҡаларға ла күрһәтеләсәк. Сайтҡа [$1 керһәгеҙ] йәки [$2 ҡуллануысы яҙмаһын төҙөһәгеҙ], һеҙ индергән үҙгәртеүҙәр һеҙҙең ҡулланыусы яҙмағыҙға бәйләнгән була, шулай уҡ башҡа мөмкинлектәр ҙә тыуасаҡ.", "anonpreviewwarning": "''Һеҙ танылмағанһығыҙ. Яҙҙырыу ваҡытында IP-адресығыҙ был биттең үҙгәртеүҙәр тарихына яҙыласаҡ.''", "missingsummary": "'''Иҫкәртеү.''' Һеҙ үҙгәртеүҙергә ҡыҫҡа тасуирлама яҙманығыҙ. Ҡабаттан «Битте һаҡларға» төймәһенә баҫһағыҙ, үҙгәртеүҙәрегеҙ тасуирламаһыҙ һаҡланасаҡ.", "selfredirect": "Иғтибар: Һеҙ шул уҡ мәҡәләгә йүнәлтеү эшләйһегеҙ.\n «$1» төәмәһенә баҫһағыҙ тағы шул биткә йүнәлтеләсәк.", "missingcommenttext": "Зинһар, аҫҡа үҙ тасуирламағыҙҙы керетегеҙ.", "missingcommentheader": "'''Иҫкәртеү:''' Һеҙ был комментарий өсөн тема/исем яҙманығыҙ.\n«$1» төймәһенә ҡабат баҫыу менән үҙгәртеүҙерегеҙ исемһеҙ яҙыласаҡ.", - "summary-preview": "Буласаҡ тасуирлама:", - "subject-preview": "Тема/башлыҡты алдан ҡарау:", + "summary-preview": "Үҙгәртеүҙәр аңлатмаһын ҡарап сығыу:", + "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-адресығыҙ автоматик рәүештә блокланған. Сәбәбе, был адрес элек блокланған ҡулланыусыларҙың береһе тарафынан ҡулланылған. Блоклаусы хаким ($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|көйләүҙәр битендә]] эшләй алаһығыҙ.", @@ -688,7 +695,7 @@ "readonlywarning": "КИҪӘТЕҮ: Техник хеҙмәтләндереү сәбәпле мәғлүмәттәр базаһы блокланған, шунлыҡтан үҙгәртеүҙәрегеҙҙе хәҙер һаҡлай алмайһығыҙ.\nТексты аҙаҡтан ҡулланыу өсөн башҡа файлда һаҡлап тора алаһығыҙ.\n\nХаким белдергән сәбәп: $1", "protectedpagewarning": "'''КИҪӘТЕҮ: Һеҙ был битте үҙгәртә алмайһығыҙ, был хоҡуҡҡа хакимдәр генә эйә.'''\nБелешмә өсөн түбәндә һуңғы үҙгәртеү тураһында мәғлүмәт бирелә:", "semiprotectedpagewarning": "'''Киҫәтеү:''' был бит һаҡланған. Уны теркәлгән ҡулланыусылар ғына үҙгәртә ала.\nБелешмә өсөн түбәндә һуңғы үҙгәртеү тураһында мәғлүмәт бирелә:", - "cascadeprotectedwarning": "Киҫәтеү: Был битте тик хакимдәр генә үҙгәртә ала. Сөнки бит {{PLURAL:$1|каскадлы яҡлау исемлегенә индерелгән}}:", + "cascadeprotectedwarning": "Киҫәтеү: Был битте тик [[Special:ListGroupRights|махсус хоҡуҡлы]] ҡатнашыусылар ғына үҙгәртә ала. Сөнки бит {{PLURAL:$1|1=түбәндәге каскадлы яҡлау битенә индерелгән}}:", "titleprotectedwarning": "'''Киҫәтеү: Бындый исемле бит һаҡланған, уны үҙгәртеү өсөн [[Special:ListGroupRights|тейешле хоҡуҡҡа]] эйә булыу кәрәк.'''\nБелешмә өсөн түбәндә һуңғы үҙгәртеү тураһында мәғлүмәт бирелә:", "templatesused": "Был биттә ҡулланылған {{PLURAL:$1|1=ҡалып|ҡалыптар}}:", "templatesusedpreview": "Алдан ҡаралған биттә ҡулланылған {{PLURAL:$1|1=ҡалып|ҡалыптар}}:", @@ -705,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Бәлки ул юйылғандыр.", @@ -721,6 +728,8 @@ "invalid-content-data": "Тыйылған мәғлүмәт", "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": "викитекст", @@ -729,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}} булған ҡалыпты сығарыу эстәлекле биттәр.", @@ -739,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": "Төйөндәр һаны артҡан биттәр", @@ -774,7 +787,7 @@ "page_last": "аҙаҡҡы", "histlegend": "Айырма һайлау: сағыштырырға теләгән 2 версияны һайлап Enter-ға йәки биттең аҫҡы өлөшөндәге төймәгә баҫығыҙ.
    \nАңлатмалар: '''({{int:cur}})''' — хәҙерге версиянан айырма, '''({{int:last}})''' — алдағы версиянан айырма, '''{{int:minoreditletter}}''' — әҙ үҙгәреш яһалған.", "history-fieldset-title": "Үҙгәртеүҙәрҙе эҙләү", - "history-show-deleted": "Юйылғандар ғына", + "history-show-deleted": "Тик юйылған төҙәтеүҙәр", "histfirst": "Иң иҫкеләр", "histlast": "Иң һуңғылар", "historysize": "($1 {{PLURAL:$1|байт}})", @@ -927,9 +940,10 @@ "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": "Күберәк һөҙөмтә кәрәк", "search-relatedarticle": "Ҡағылышлы", "searchrelated": "ҡағылышлы", "searchall": "барыһы", @@ -947,6 +961,7 @@ "search-external": "Тышҡы эҙләү", "searchdisabled": "{{SITENAME}} эҙләүе ябыҡ.\nХәҙергә эҙләүҙе Google менән үтәй алаһығыҙ.\nТик унда {{SITENAME}} өсөн индекслауҙың иҫке булыуы мөмкинлеген онотмағыҙ.", "search-error": "Эҙләүҙә хата китте: $1", + "search-warning": "Эҙләү мәлендә хата китте:$1", "preferences": "Көйләүҙәр", "mypreferences": "Көйләүҙәр", "prefs-edits": "Төҙәтеүҙәр һаны:", @@ -966,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": "Башҡа көйләүҙәр", @@ -988,7 +1003,7 @@ "prefs-help-recentchangescount": "Һуңғы үҙгәртеүҙәрҙе, биттәр тарихын, журналдарҙы үҙ эсенә ала.", "prefs-help-watchlist-token2": "Был - күҙәтеүҙәрегеҙ исемлегенең веб-каналы өсөн йәшерен асҡыс.\nУны белеүселәр күҙәтеүҙәрегеҙ исемлеген уҡый аласаҡ, шуға уны бер кемгә лә әйтмәгеҙ. [[Special:ResetTokens|Уны ташларға теләһәгеҙ, ошонда баҫығыҙ]].", "savedprefs": "Һеҙҙең көйләүҙәрегеҙ һаҡланды.", - "savedrights": "{{GENDER:$1|$1}} ҡулланыусының хоҡуҡтары һаҡланды.", + "savedrights": "{{GENDER:$1|Ҡатнашыусы}} төркөмдәре һаҡланды.", "timezonelegend": "Ваҡыт бүлкәте:", "localtime": "Урындағы ваҡыт:", "timezoneuseserverdefault": "Сервер көйләүҙәрен ҡулланырға $1", @@ -1018,6 +1033,7 @@ "youremail": "Электрон почта :", "username": "{{GENDER:$1|Ҡулланыусы исеме}}:", "prefs-memberingroups": "{{GENDER:$2|Ағза}} {{PLURAL:$1|төркөмө|төркөмдәре}}:", + "group-membership-link-with-expiry": "$1($2 ҡәҙәре)", "prefs-registration": "Теркәлеү ваҡыты:", "yourrealname": "Һеҙҙең ысын исемегеҙ:", "yourlanguage": "Тышҡы күренештә ҡулланылған тел:", @@ -1056,22 +1072,32 @@ "prefs-help-prefershttps": "Был көйләү системаға киләһе танылыуҙан һуң ҡулланыласаҡ.", "prefswarning-warning": "Һеҙ көйләүҙәрегеҙгә әле һаҡланмаған үҙгәрештәр индерҙегеҙ. Әгәр \"$1\" баҫмайынса, биттән сыҡһағыҙ, көйләүҙәр яңыртылмай.", "prefs-tabs-navigation-hint": "Кәңәш: Һеҙ һулға, уңға баҫмағын ҡулланып, исемлектәге ҡушымталар араһында күсә алаһығыҙ", - "userrights": "Ҡулланыусы хоҡуҡтарын идаралау", - "userrights-lookup-user": "Ҡулланыусы төркөмдәрен идаралау", + "userrights": "Ҡатнашыусы хоҡуҡтары", + "userrights-lookup-user": "Ҡулланыусы һайлауы", "userrights-user-editname": "Ҡулланыусы исемен керетерегеҙ:", - "editusergroup": "{{GENDER:$1|ҡатнашыусы}} ҡатнашыусының төркөмдәрен үҙгәртеү", + "editusergroup": "Ҡатнашыусы төркөмдәрен тейәү", "editinguser": "{{GENDER:$1|ҡатнашыусы}} [[User:$1|$1]] $2 хоҡуҡтарын үҙгәртеү", - "userrights-editusergroup": "Ҡулланыусы төркөмдәрен идараларға", + "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": "Ҡулланыусылар", @@ -1174,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": "Иҫәп яҙмаһын булдырырға", @@ -1188,6 +1215,7 @@ "grant-highvolume": " Юғары әүҙемлектә мөхәррирләү", "grant-oversight": "Башҡа ҡатнашыусылар тәҙәтеүенән бит версияһын йәшерергә", "grant-patrol": "Бит үҙгәрештәрен күҙәтеү", + "grant-privateinfo": "Шәхси белешмәләргә инеү", "grant-protect": "Битте һаҡлау һәм һаҡты сисеү", "grant-rollback": "Биттеге үҙгәрештәрҙе кире ҡайтарыу", "grant-sendemail": "Башҡа ҡатнашыусыларға электрон почта аша хат ебәреү", @@ -1196,14 +1224,15 @@ "grant-basic": "Төп хоҡуҡтар", "grant-viewdeleted": "Юйылған файлдарҙы һәм биттерҙе тейәү", "grant-viewmywatchlist": "һеҙҙең күҙәтеүҙәр исемлеген байҡау", + "grant-viewrestrictedlogs": "рөхсәте сикле журналдағы яҙманы ҡарау", "newuserlogpage": "Яңы ҡулланыусы яҙмалары", "newuserlogpagetext": "Яңы теркәлгән ҡатнашыусылар яҙмалары журналы.", "rightslog": "Ҡулланыусының хоҡуҡтары көндәлеге", "rightslogtext": "Был — ҡулланыусы хоҡуҡтары үҙгәрештәре яҙмалары журналы", "action-read": "Был битте уҡыу", "action-edit": "Был битте үҙгәртеү", - "action-createpage": "Яңы бит яһау", - "action-createtalk": "Фекер алышыу битен яһау", + "action-createpage": "был битте яһау", + "action-createtalk": "был фекер алышыу битен яһау", "action-createaccount": "Был ҡулланыусы иҫәп яҙыуын яһау", "action-autocreateaccount": "Ҡатнашыусының тышҡы иҫәп яҙмаһы менән инергә", "action-history": "Был биттең тарихын ҡарарға", @@ -1219,11 +1248,13 @@ "action-upload_by_url": "Был файлды URL адрестан күсереү", "action-writeapi": "Яҙҙырыу өсөн API ҡулланыу", "action-delete": "Был битте юйыу", - "action-deleterevision": "Биттең был өлгөһөн юйыу", - "action-deletedhistory": "Был биттең юйҙырыуҙар тарихын ҡарау", + "action-deleterevision": "биттең өлгөләрен юйыу", + "action-deletelogentry": "журналдағы яҙманы юҡ итеү", + "action-deletedhistory": "биттең юйылған тарихын ҡарау", + "action-deletedtext": "текстың юйылған нөсхәһен ҡарау", "action-browsearchive": "Юйылған биттәрҙе эҙләү", - "action-undelete": "Юйылған был битте ҡабат тергеҙеү", - "action-suppressrevision": "Был йәшерелгән өлгөнө ҡарау һәм тергеҙеү", + "action-undelete": "биттәрҙе тергеҙеү", + "action-suppressrevision": "биттәрҙең йәшерелгән өлгөләрен ҡарау һәм тергеҙеү", "action-suppressionlog": "Был шәхси журналды ҡарау", "action-block": "Был ҡатнашыусыға мөхәррирләүҙе тыйыу", "action-protect": "Был биттең һаҡланыу дәрәжәһен үҙгәртеү", @@ -1238,6 +1269,7 @@ "action-userrights-interwiki": "Ҡатнашыусыларҙың башҡа Викиларҙағы хоҡуҡтарын үҙгәртеү", "action-siteadmin": "Мәғлүмәттәр базаһын асыу һәм ябыу", "action-sendemail": "электрон хат ебәреү", + "action-editmyoptions": "Көйләүҙәрегеҙҙе мөхәррирләү", "action-editmywatchlist": "һеҙҙең күҙәтеүҙәр исемлеген мөхәррирләү", "action-viewmywatchlist": "һеҙҙең күҙәтеүҙәр исемлеген байҡау", "action-viewmyprivateinfo": "һеҙҙең шәхси мәғлүмәтте байҡау", @@ -1247,6 +1279,7 @@ "action-applychangetags": "Һеҙҙең үҙгәрештәр ТЕГын булдырырға", "action-changetags": "Айырым үҙгәртеүҙәрҙә һәм журнал яҙмаланыда тег өҫтәү һәм юйыу", "action-deletechangetags": "билдәләрҙе мәғлүмәт базаһынан юйыу", + "action-purge": "был биттең кешын таҙартыу", "nchanges": "$1 {{PLURAL:$1|үҙгәртәү|үҙгәртеүҙәр}}", "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|һеҙҙең һуңғы визит}}", "enhancedrc-history": "тарих", @@ -1263,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": "Күрһәтергә", @@ -1306,13 +1457,13 @@ "recentchangeslinked-feed": "Бәйле үҙгәртеүҙәр", "recentchangeslinked-toolbox": "Бәйле үҙгәртеүҙәр", "recentchangeslinked-title": "\"$1\" битенә бәйле үҙгәртеүҙәр", - "recentchangeslinked-summary": "Был күрһәтелгән бит һылтанма яһаған (йәки күрһәтелгән категорияға кергән) һуңғы үҙгәртеүҙәр исемлеге.\n[[Special:Watchlist|Күҙәтеү исемлегегеҙгә]] керә торған биттәр '''ҡалын''' итеп күрһәтелгән.", + "recentchangeslinked-summary": "Был күрһәтелгән бит - һылтанма яһаған (йәки күрһәтелгән категорияға кергән) һуңғы үҙгәртеүҙәр исемлеге.\n[[Special:Watchlist|Күҙәтеү исемлегегеҙгә]] керә торған биттәр '''ҡалын''' итеп күрһәтелгән.", "recentchangeslinked-page": "Бит исеме:", "recentchangeslinked-to": "Киреһенсә, был биткә һылтанма яһаған биттәрҙәге үҙгәртеүҙәрҙе күрһәтергә", "recentchanges-page-added-to-category": "[[:$1]] категорияға өҫтәлгән", - "recentchanges-page-added-to-category-bundled": "[[:$1]] һәм [[Special:WhatLinksHere/$1|{{PLURAL:$2|one page|$2 pages}}]] категорияға өҫтәлгән", + "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": "Файлды тейәргә", @@ -1370,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": "Ошоға оҡшаған файл юйылған,ә исеме тыйылған булған. Яңынан тейәү алдынан администратор хоҡуғы булған кешенән тыйылған файлдарҙы ҡарап сығыуын һорарға кәрәк.", @@ -1382,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\" атрибуты ҡуйыу рөхсәт ителмәй.", @@ -1419,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": "Тейәргә", @@ -1489,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", @@ -1576,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]]''' файлын бөтә тарихы менән бергә юйырға йыйынаһығыҙ.", @@ -1632,6 +1791,8 @@ "pageswithprop-legend": "Үҙенсәлектәре ҡайтанан билдәләнгән биттәр", "pageswithprop-text": "Бында айырым үҙенсәлектәре ҡулдан яңыртып билдәләнгән биттәр һанала.", "pageswithprop-prop": "Үҙенсәлектең атамаһы:", + "pageswithprop-reverse": "Кире тәртиптә айырыу.", + "pageswithprop-sortbyvalue": "Сифаты буйынса айырыу", "pageswithprop-submit": "Табырға", "pageswithprop-prophidden-long": "Текст үҙенсәлегенең оҙон мәғәнәһе йәшерелгән ($1)", "pageswithprop-prophidden-binary": "ике тармаҡлы үҙенсәлектең мәғәнәһе йәшерелгән ($1)", @@ -1665,6 +1826,7 @@ "uncategorizedcategories": "Категорияланмаған категориялар", "uncategorizedimages": "Категорияланмаған файлдар", "uncategorizedtemplates": "Категорияланмаған ҡалыптар", + "uncategorized-categories-exceptionlist": "# Бында Special:UncategorizedCategories телгә алынырға тейеш булмаған категориялар теҙмәһе бар. Берәр юллап, «*» тамғаһынан башлап. Башҡа тамға (ара ҡалдырыуҙы ла ҡушып) менән башланған юлдар кире ҡағыла. Фекерҙәрегеҙ өсөн «#» ҡулланығыҙ.", "unusedcategories": "Ҡулланылмаған категориялар", "unusedimages": "Ҡулланылмаған файлдар", "wantedcategories": "Кәрәкле категориялар", @@ -1763,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": "Журналдар", @@ -1787,7 +1965,7 @@ "checkbox-select": "Һайланған: $1", "checkbox-all": "Барыһы", "checkbox-none": "Юҡ", - "checkbox-invert": "Әйләндерү", + "checkbox-invert": "Әйләндереү", "allpages": "Бөтә биттәр", "nextpage": "Киләһе бит ($1)", "prevpage": "Алдағы бит ($1)", @@ -1825,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": "Ҡатнашыусылар төркөмө хоҡуҡтары", @@ -1854,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, шуға күрә ҡайһы берҙәре тулыһынса күрһәтелмәне.", @@ -1889,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": "Күҙәтеү исемлеге", @@ -1900,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": "Был битте күҙәтергә", @@ -1941,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": "Битте юйырға", @@ -1973,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": "Биттең контент моделен мөхәррирләү", @@ -1996,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": "кире алырға", @@ -2008,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]] тип үҙгәрткән", @@ -2070,18 +2264,20 @@ "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": "ҡарарға/тергеҙергә", "undeleteviewlink": "ҡарарға", "undeleteinvert": "Һайланғандарҙы әйләндерергә", "undeletecomment": "Сәбәп:", - "cannotundelete": "Юйыуҙы кире алып булманы:\n$1", + "cannotundelete": "Һеҙҙең ҡайһы бер йәки бөтә тергеҙеүҙәр килеп сыҡманы: \n$1", "undeletedpage": "'''$1 бите тергеҙелде'''\n\nҺуңғы юйыуҙарҙы һәм тергеҙеүҙәрҙе ҡарау өсөн, [[Special:Log/delete|юйыу яҙмалары журналын]] ҡарағыҙ.", "undelete-header": "Һуңғы юйылған биттәрҙе [[Special:Log/delete|юйыу яҙмалары журналында]] ҡарағыҙ.", "undelete-search-title": "Юйылған биттәрҙе эҙләү", "undelete-search-box": "Юйылған биттәрҙе эҙләү", "undelete-search-prefix": "Ошолай башланған биттәрҙе күрһәтергә:", + "undelete-search-full": "Шундай атамалары булған биттәрҙе күрһәтергә:", "undelete-search-submit": "Эҙләү", "undelete-no-results": "Юйыу яҙмалары архивында кәрәкле биттәр юҡ.", "undelete-filename-mismatch": "$1 ваҡыт билдәһе менән файл өлгөһөн тергеҙеү мөмкин түгел: файл исеме тап килмәй", @@ -2098,7 +2294,7 @@ "tooltip-invert": "Һайланған исемдәр арауығындағы (һәм бәйле исемдәр арауығындағы, әгәр күрһәтелһә) биттәрҙәге үҙгәртеүҙәрҙе йәшерер өсөн был билдәне ҡуйығыҙ.", "tooltip-whatlinkshere-invert": "Был тамғаны һайланған исемдәр арауығындағы һылтанмаларҙы йәшереү өсөн ҡуйығыҙ.", "namespace_association": "Бәйле арауыҡ", - "tooltip-namespace_association": "Һайланған исемдәр арауығы менән бәйле әңгәмә(йәки тема) исем арауыҡтарын ҡушыр өсөн был билдәне ҡуйығыҙ.", + "tooltip-namespace_association": "Һайланған исемдәр арауығы менән бәйле әңгәмә (йәки тема) исем арауыҡтарын ҡушыр өсөн был билдәне ҡуйығыҙ.", "blanknamespace": "(Төп)", "contributions": "{{GENDER:$1|Ҡатнашыусы}} башҡарған эш", "contributions-title": "$1 исемле ҡатнашыусы башҡарған эш", @@ -2114,18 +2310,19 @@ "sp-contributions-newbies-sub": "Яңы иҫәп яҙмалары өсөн", "sp-contributions-newbies-title": "Яңы теркәлгән ҡатнашыусылар башҡарған эш", "sp-contributions-blocklog": "блоклау яҙмалары", - "sp-contributions-suppresslog": "Ҡулланыусыларҙың юйылған өлөшө", - "sp-contributions-deleted": "юйылған үҙгәртеүҙәр", + "sp-contributions-suppresslog": "{{GENDER:$1|Ҡатнашыусы}} юйылған өлөшө", + "sp-contributions-deleted": "{{GENDER:$1|Ҡатнашыусы}} юйылған үҙгәртеүҙәре", "sp-contributions-uploads": "тейәүҙәр", "sp-contributions-logs": "журналдар", "sp-contributions-talk": "фекерләшеү", - "sp-contributions-userrights": "ҡатнашыусы хоҡуҡтарын идаралау", + "sp-contributions-userrights": "{{GENDER:$1|Ҡатнашыусы}} ҡатнашыусы хоҡуҡтары менән идаралау", "sp-contributions-blocked-notice": "Әлеге ваҡытта был ҡатнашыусы бикле.\nТүбәндә бикләү яҙмаларынан һуңғы ҡатнашыусыны бикләү яҙмаһы килтерелгән:", "sp-contributions-blocked-notice-anon": "Әлеге ваҡытта был IP адрес бикле.\nТүбәндә бикләү яҙмаларынан һуңғы адресты бикләү яҙмаһы килтерелгән:", "sp-contributions-search": "Башҡарған эште эҙләү", "sp-contributions-username": "Ҡулланыусының IP-адресы йәки исеме:", "sp-contributions-toponly": "Һуңғы өлгөләрҙе генә күрһәтергә", "sp-contributions-newonly": "Яңы бит яһаған төҙәтеүҙәрҙе генә күрһәтергә", + "sp-contributions-hideminor": "Әҙ төҙәтеүҙәрҙе йәшерергә", "sp-contributions-submit": "Эҙлә", "whatlinkshere": "Бында һылтанмалар", "whatlinkshere-title": "«$1» битенә һылтанған биттәр", @@ -2187,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": "Иҫәп яҙыуҙарын бикләүҙе йәшер", @@ -2248,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": "Үҙегеҙ бикләнгән ваҡытта һеҙ башҡа ҡатнашыусыларҙы бикләй йәки бикте ала алмайһығыҙ.", @@ -2283,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": "Биттең исемен үҙгәртергә", @@ -2303,6 +2510,7 @@ "movelogpagetext": "Түбәндә — исемдәре үҙгәртелгән биттәр.", "movesubpage": "{{PLURAL:$1|ярҙамсы бит}}", "movesubpagetext": "Был биттә $1 {{PLURAL:$1|ярҙамсы бит}}.", + "movesubpagetalktext": "Фекер алышыу битендә $1 {{PLURAL: $ 1 | бәләкәй бит| бәләкәй биттәр}} бар. Улар аҫта күрһәтелгән.", "movenosubpage": "Был биткә бер бит тә кермәгән.", "movereason": "Сәбәп:", "revertmove": "кирегә", @@ -2404,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» битен импортлап булманы, сөнки һеҙгә ул битте яһау тыйылған.", @@ -2431,9 +2639,10 @@ "tooltip-pt-watchlist": "Һеҙ күҙәткән биттәр исемлеге", "tooltip-pt-mycontris": "{{GENDER:|Һеҙҙең}} төҙәтеүҙәр исемлеге", "tooltip-pt-anoncontribs": "Был IP-адрестан яһалған төҙәтеүҙәр", - "tooltip-pt-login": "Бында теркәлеү үтергә була, әммә был эш мәжбүри түгел.", + "tooltip-pt-login": "Бында теркәлеү үтергә була, әммә был эш мәжбүри түгел", + "tooltip-pt-login-private": "Был викиҙы ҡулланыу өсөн һеҙгә инергә кәрәк.", "tooltip-pt-logout": "Сығырға", - "tooltip-pt-createaccount": "Мотлаҡ булмаһа ла, Һеҙгә иҫәп яҙмаһы төҙөргө һәм системала танылырға тәҡдим итәбеҙ.", + "tooltip-pt-createaccount": "Мотлаҡ булмаһа ла, Һеҙгә иҫәп яҙмаһы төҙөргә һәм системала танылырға тәҡдим итәбеҙ", "tooltip-ca-talk": "Биттең эстәлеге тураһында фекерләшеү", "tooltip-ca-edit": "Был битте үҙгәртергә", "tooltip-ca-addsection": "Яңы бүлек эшләргә", @@ -2489,7 +2698,7 @@ "tooltip-watchlistedit-raw-submit": "Күҙәтеү исемлеген яңыртырға", "tooltip-recreate": "Битте юйылған булыуына ҡарамаҫтан тергеҙергә", "tooltip-upload": "Күсерә башларға", - "tooltip-rollback": "Бер баҫыу менән аҙаҡҡы мөхәррирләүсенең үҙгәртеүҙәрен кире ала.", + "tooltip-rollback": "Бер баҫыу менән аҙаҡҡы мөхәррирләүсенең үҙгәртеүҙәрен кире ала", "tooltip-undo": "\"Кире ал\" төҙәтеүҙе кире ала һәм төҙәтеү формаһын \"алдан байҡау\"ҙа күрһәтә. Һәм кире алыуҙың сәбәбен белдерергә була.", "tooltip-preferences-save": "Көйләүҙәрҙе һаҡларға", "tooltip-summary": "Ҡыҫҡаса тасуирлама керетегеҙ", @@ -2522,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": "Рөхсәт ителмәй", @@ -2558,6 +2769,7 @@ "pageinfo-category-pages": "Биттәр һаны", "pageinfo-category-subcats": "Категория бүлемдәре һаны", "pageinfo-category-files": "Файлдар һаны", + "pageinfo-user-id": "Ҡатнашыусыны раҫлау", "markaspatrolleddiff": "Тикшерелгән, тип билдәләргә", "markaspatrolledtext": "Бил битте тикшерелгән, тип билдәләргә", "markaspatrolledtext-file": "Был өлөгөнө патрулләнгән тип ҡуйырға", @@ -2574,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", @@ -2611,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 ваҡытынан башлап яңы файлдарҙы күрһәтергә", @@ -3002,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]", @@ -3010,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": "Биттең кэшы таҙартылғандан һун, уның һуңғы өлгөһө күрһәтеләсәк.", @@ -3073,6 +3296,7 @@ "timezone-local": "Локаль", "duplicate-defaultsort": "'''Иҫкәртеү:''' \"$2\" ғәҙәттәге тәпртипкә килтереү асҡысы элекке \"$1\" ғәҙәттәге тәртипкә килтереү асҡысын үҙгәртә.", "duplicate-displaytitle": "Иғтибар: Күрһәтелгән «$2» алдағы «$1» исемде ҡабатлай.", + "restricted-displaytitle": " Иғтибар: «$1» баш яҙмаһы кире ҡағылды, сөнки ул биттең ысын исеменә тап килмәй.", "invalid-indicator-name": "Хата: Биттең торошон күрһәтеүсе атрибут индикаторы name буш була алмай.", "version": "MediaWiki өлгөһө", "version-extensions": "Ҡуйылған киңәйтеүҙәр", @@ -3140,7 +3364,7 @@ "fileduplicatesearch-noresults": "\"$1\" исемле файл табылманы", "specialpages": "Махсус биттәр", "specialpages-note-top": "Легенда", - "specialpages-note": "* Ябай махсус биттәр.\n* Сикле махсус биттәр.\n* Кешланған махсус биттәр (иҫкергән булыуы мөмкин).", + "specialpages-note-restricted": "* Ябай махсус биттәр.\n* Сикләнгән махсус биттәр.", "specialpages-group-maintenance": "Техник хеҙмәтләндереү хисапламалары", "specialpages-group-other": "Башҡа махсус биттәр", "specialpages-group-login": "Танылыу йәки теркәлеү", @@ -3161,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": "Билдә исеме", @@ -3172,7 +3398,7 @@ "tags-actions-header": "Ғәмәлдәр", "tags-active-yes": "Эйе", "tags-active-no": "Юҡ", - "tags-source-extension": "Ҡушымта билдәләй", + "tags-source-extension": "Программа тәьминәте менән билдәләнә", "tags-source-manual": "Ҡатнашыусы йәки робот ҡулдан индерә", "tags-source-none": "Башҡа ҡулланылмай", "tags-edit": "үҙгәртергә", @@ -3181,14 +3407,14 @@ "tags-deactivate": "һүндерергә", "tags-hitcount": "$1 {{PLURAL:$1|1=үҙгәртеү|үҙгәртеү}}", "tags-manage-no-permission": "Тамға исемен үҙгәртергә хоҡуғығыҙ юҡ", - "tags-manage-blocked": "Һеҙгә блок ҡуйылған, тамғалар менән идара итә алмайһығыҙ.", + "tags-manage-blocked": "Блок ҡуйылғанға күрә, {{GENDER:$1|һеҙ}} тамғалар менән идара итә алмайһығыҙ.", "tags-create-heading": "Яңы тамға булдырырға", "tags-create-explanation": "яңы булдырылған билдәләр боттар һәм ҡатнашыусылар ҡуллана алырлыҡ итеп эшләнәсәк", "tags-create-tag-name": "Тамға исеме", "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|о киләһе иҫкәрмә|ы киләһе иҫкәрмә}}:", @@ -3204,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": "Сәбәп:", @@ -3216,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» тамғаһын юйып булмай", @@ -3256,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)", @@ -3279,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 юҡ", @@ -3320,7 +3566,7 @@ "logentry-patrol-patrol": "$1 $3 битенең $4 версияһын {{GENDER:$2|тикшерҙе}}.", "logentry-patrol-patrol-auto": "$1 $3 битенең $4 версияһын автоматик рәүештә {{GENDER:$2|тикшерҙе}}.", "logentry-newusers-newusers": " {{GENDER:$2|ҡатнашыусы}} $1 иҫәп яҙмаһы булдырҙы", - "logentry-newusers-create": "{{GENDER:$2|ҡатнашыусы}} $1 иҫәп яҙмаһы булдырҙы.", + "logentry-newusers-create": "{{GENDER:$2|ҡатнашыусы}} $1 иҫәп яҙмаһы булдырҙы", "logentry-newusers-create2": "$1 {{GENDER:$2|ҡатнашыусы}} $3 иҫәп яҙмаһын булдырҙы", "logentry-newusers-byemail": "$1 {{GENDER:$2|}} $3 иҫәп яҙмаһын булдырҙы һәм серһүҙ электрон почта аша ебәрелде", "logentry-newusers-autocreate": "Автоматик рәүештә {{GENDER:$2| ҡатнашыусының}} $1 иҫәп яҙмаһы яһалды", @@ -3330,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|күсерҙе}}", @@ -3379,7 +3625,7 @@ "api-error-emptypage": "Яңы буш биттәр яһау тыйыла.", "api-error-publishfailed": "Эске хата: сервер ваҡытлыса файлды һаҡлай алманы.", "api-error-stashfailed": "Эске хата: сервер ваҡытлыса файлды һаҡлай алманы.", - "api-error-unknown-warning": "Билдәһеҙ белдереү: \"$1\".", + "api-error-unknown-warning": "Билдәһеҙ киҫәтеү: «$1».", "api-error-unknownerror": "Билдәһеҙ хата: «$1»", "duration-seconds": "$1 {{PLURAL:$1|1=секунд|секунд}}", "duration-minutes": "$1 {{PLURAL:$1|1=минут|минут}}", diff --git a/languages/i18n/be-tarask.json b/languages/i18n/be-tarask.json index d5b0bee024..01d2ea38a8 100644 --- a/languages/i18n/be-tarask.json +++ b/languages/i18n/be-tarask.json @@ -46,13 +46,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": "Хаваць катэгарызацыю старонак", @@ -674,8 +675,8 @@ "explainconflict": "Нехта зьмяніў старонку падчас вашага рэдагаваньня.\nУ верхнім тэкставым акне знаходзіцца цяперашні зьмест старонкі.\nВашыя зьмены паказаныя ў ніжнім акне.\nВам трэба перанесьці вашыя зьмены ў цяперашні тэкст.\nКалі вы націсьніце «$1», будзе захаваны толькі тэкст верхняга вакна.", "yourtext": "Ваш тэкст", "storedversion": "Захаваная вэрсія", - "nonunicodebrowser": "Папярэджаньне: ваш браўзэр не падтрымлівае Unicode-кадаваньне.\nУ выніку гэтага ўсе сымбалі ў полі рэдагаваньня, ня ўключаныя ў ASCII, будуць замененыя на іх шаснаццаткавыя коды.", "editingold": "Папярэджаньне: вы рэдагуеце састарэлую вэрсію гэтай старонкі.\nКалі вы паспрабуеце захаваць яе, любыя зьмены, зробленыя пасьля гэтай вэрсіі, будуць страчаныя.", + "unicode-support-fail": "Падобна, што ваш браўзэр не падтрымлівае Юнікод. Ён неабходны для рэдагаваньня старонак, таму вашая праўка не была захаваная.", "yourdiff": "Адрозьненьні", "copyrightwarning": "Калі ласка, зьвярніце ўвагу на тое, што ўсе дадаткі і зьмены ў {{GRAMMAR:месны|{{SITENAME}}}} разглядаюцца як выдадзеныя ў адпаведнасьці з умовамі ліцэнзіі $2 (глядзіце падрабязнасьці на $1). Калі вы супраць таго, каб вашыя матэрыялы неабмежавана рэдагавалася і распаўсюджвалася, не дадавайце іх.
    \nВы таксама абавязуецеся, што ваш матэрыял напісаны асабіста вамі або зьяўляецца грамадзкім набыткам, альбо ўзяты з падобных вольных крыніцаў.\nНельга без дазволу дадаваць матэрыялы, абароненыя аўтарскім правам!", "copyrightwarning2": "Калі ласка, заўважце, што ўвесь унёсак ў {{GRAMMAR:вінавальны|{{SITENAME}}}} можа рэдагавацца, зьмяняцца і выдаляцца іншымі ўдзельнікамі.\nКалі вы з гэтым ня згодныя, калі ласка, не зьмяшчайце сюды Вашыя тэксты.
    \nРазьмяшчэньнем тут тэкстаў, вы дэкляруеце, што зьяўляецеся іх аўтарам, ці скапіявалі іх з крыніцы, якая дазваляе вольнае выкарыстаньне сваіх тэкстаў (дзеля падрабязнасьцяў глядзіце $1).\n\nНе зьмяшчайце тут без дазволу матэрыялы, якія ахоўваюцца аўтарскім правам!", @@ -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Падобна, што яна была выдаленая.", @@ -741,6 +742,7 @@ "parser-template-loop-warning": "Выяўлены цыкль у шаблёнах: [[$1]]", "template-loop-category": "Старонкі з цыклямі шаблёнаў", "template-loop-category-desc": "Старонка ўтрымлівае цыкль шаблёну, г. зн., шаблён уключае сам сябе рэкурсіўна.", + "template-loop-warning": "Папярэджаньне: гэтая старонка выклікае [[:$1]], які зьяўляецца прычынай цыклю шаблёнаў (бясконцы рэкурсіўны выклік).", "parser-template-recursion-depth-warning": "Перавышаны ліміт глыбіні рэкурсіі шаблёну ($1)", "language-converter-depth-warning": "Перавышанае абмежаваньне глыбіні канвэртару варыянтаў мовы ($1)", "node-count-exceeded-category": "Старонкі зь перавышанай колькасьцю вузлоў", @@ -970,7 +972,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": "Рознае", @@ -1010,6 +1012,7 @@ "timezoneregion-indian": "Індыйскі акіян", "timezoneregion-pacific": "Ціхі акіян", "allowemail": "Дазволіць атрыманьне лістоў ад іншых удзельнікаў і ўдзельніц", + "email-blacklist-label": "Забараніць гэтым удзельнікам дасылаць мне лісты электроннай поштай:", "prefs-searchoptions": "Пошук", "prefs-namespaces": "Прасторы назваў", "default": "па змоўчваньні", @@ -1051,6 +1054,7 @@ "prefs-editor": "Рэдактар", "prefs-preview": "Папярэдні прагляд", "prefs-advancedrc": "Дадатковыя налады", + "prefs-opt-out": "Адмовіцца ад паляпшэньняў", "prefs-advancedrendering": "Дадатковыя налады", "prefs-advancedsearchoptions": "Дадатковыя налады", "prefs-advancedwatchlist": "Дадатковыя налады", @@ -1285,9 +1289,20 @@ "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 {{PLURAL:$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": "Каб захаваць налады вашага фільтру і выкарыстаць іх пазьней, націсьніце на выяву закладкі ў зоне актыўнага фільтру ніжэй.", @@ -1299,43 +1314,41 @@ "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-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-registration": "Рэгістрацыя ўдзельнікаў", - "rcfilters-filter-registered-label": "Зарэгістраваныя", - "rcfilters-filter-registered-description": "Рэдактары, якія ўвайшлі ў сыстэму.", - "rcfilters-filter-unregistered-label": "Незарэгістраваныя", - "rcfilters-filter-unregistered-description": "Рэдактары, якія не ўвайшлі ў сыстэму", - "rcfilters-filter-unregistered-conflicts-user-experience-level": "Гэты фільтар канфліктуе з {{PLURAL:$2|1=наступным фільтрам|наступнымі фільтрамі}} дасьведчаных удзельнікаў, {{PLURAL:$2|1=які знаходзіць|якія знаходзяць}} толькі зарэгістраваных удзельнікаў: $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-user-experience-level-conflicts-unregistered": "Гэты фільтар досьведу знаходзіць толькі зарэгістраваных удзельнікаў, такім чынам фільтар канфліктуе зь фільтрам «Незарэгістраваныя».", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Фільтар «Незарэгістраваныя» канфліктуе з адным ці некалькімі фільтрамі ўзроўню досьведу, якія шукаюць толькі зарэгістраваных удзельнікаў. Канфліктныя фільтры пазначаныя ў разьдзеле актыўных фільтраў вышэй.", + "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": "Праўкі, зробленыя з дапамогай аўтаматызаваных інструмэнтаў.", @@ -1358,6 +1371,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": "Рэдагаваньні вікізьместу, абмеркаваньняў, апісаньняў катэгорыяў…", @@ -1370,18 +1388,28 @@ "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-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": "Пазначыць усе зьмены як прагледжаныя", + "rcfilters-watchlist-edit-watchlist-button": "Рэдагаваць ваш сьпіс назіраньня за старонкамі", + "rcfilters-watchlist-showupdated": "Зьмены старонак, якія вы не наведвалі пасьля гэтых зьменаў, пазначаныя тоўстым з адпаведнымі пазнакамі.", + "rcfilters-preference-label": "Схаваць палепшаную вэрсію апошніх зьменаў", + "rcfilters-preference-help": "Адкатвае рэдызайн інтэрфэйсу 2017 году і ўсе інструмэнты, дададзеныя з таго часу.", "rcnotefrom": "Ніжэй {{PLURAL:$5|знаходзіцца зьмена|знаходзяцца зьмены}} з $4 $3 (да $1 на старонку).", "rclistfromreset": "Скінуць выбар даты", "rclistfrom": "Паказаць зьмены з $2 $3", @@ -1438,6 +1466,7 @@ "uploadbtn": "Загрузіць файл", "reuploaddesc": "Скасаваць загрузку і вярнуцца да формы загрузкі", "upload-tryagain": "Даслаць зьмененае апісаньне файла", + "upload-tryagain-nostash": "Даслаць паўторна загружаны файл і зьмененае апісаньне", "uploadnologin": "Вы не ўвайшлі ў сыстэму", "uploadnologintext": "Вам трэба $1, каб загружаць файлы.", "upload_directory_missing": "Загрузачная дырэкторыя ($1) адсутнічае і ня можа быць створаная сэрвэрам.", @@ -1497,6 +1526,7 @@ "file-deleted-duplicate-notitle": "Файл, ідэнтычны гэтаму файлу, раней ужо быў выдалены, а назва файла была забароненая.\nВам трэба зьвярнуцца да некага з правамі прагляду зьвестак забароненых файлаў, каб прааналізаваць сытуацыю перад тым, як загружаць файл ізноў.", "uploadwarning": "Папярэджаньне", "uploadwarning-text": "Калі ласка, зьмяніце апісаньне файла ніжэй і паспрабуйце ізноў.", + "uploadwarning-text-nostash": "Калі ласка, загрузіце файл ізноў, зьмніце апісаньне ніжэй і паспрабуйце яшчэ раз.", "savefile": "Захаваць файл", "uploaddisabled": "Загрузка файлаў забароненая", "copyuploaddisabled": "Загрузка праз URL-адрас адключаная.", @@ -1658,7 +1688,7 @@ "listfiles_size": "Памер", "listfiles_description": "Апісаньне", "listfiles_count": "Вэрсіі", - "listfiles-show-all": "Уключаць старыя вэрсіі выяў", + "listfiles-show-all": "Уключаць старыя вэрсіі файлаў", "listfiles-latestversion": "Бягучая вэрсія", "listfiles-latestversion-yes": "Так", "listfiles-latestversion-no": "Не", @@ -1761,6 +1791,8 @@ "pageswithprop-legend": "Старонкі з уласьцівасьцямі старонак", "pageswithprop-text": "На гэтай старонцы адлюстроўваюцца старонкі, якія ўжываюць пэўную ўласьцівасьць старонкі.", "pageswithprop-prop": "Імя ўласьцівасьці:", + "pageswithprop-reverse": "Сартаваць у адваротным парадку", + "pageswithprop-sortbyvalue": "Сартаваць паводле значэньня ўласьцівасьці", "pageswithprop-submit": "Паказаць", "pageswithprop-prophidden-long": "доўгае тэкставае значэньне ўласьцівасьці схавана ($1)", "pageswithprop-prophidden-binary": "двайковае значэньне ўласьцівасьці схавана ($1)", @@ -1926,7 +1958,7 @@ "log": "Журналы падзеяў", "logeventslist-submit": "Паказаць", "all-logs-page": "Усе публічныя журналы падзеяў", - "alllogstext": "Сумесны паказ усіх журналаў падзеяў {{GRAMMAR:родны|{{SITENAME}}}}.\nВы можаце адфільтраваць вынікі па тыпе журналу, удзельніку ці старонцы.", + "alllogstext": "Сумесны паказ усіх журналаў падзеяў {{GRAMMAR:родны|{{SITENAME}}}}.\nВы можаце адфільтраваць вынікі па тыпе журналу, удзельніку (улічваецца рэгістар) ці старонцы (таксама ўлічваецца рэгістар).", "logempty": "Падобных запісаў у журнале няма.", "log-title-wildcard": "Шукаць назвы, якія пачынаюцца з гэтага тэксту", "showhideselectedlogentries": "Паказаць/схаваць выбраныя запісы ў журнале", @@ -2063,7 +2095,7 @@ "unwatchthispage": "Перастаць назіраць", "notanarticle": "Не старонка зьместу", "notvisiblerev": "Вэрсія была выдаленая", - "watchlist-details": "У Вашым сьпісе назіраньня $1 {{PLURAL:$1|старонка|старонкі|старонак}} за выключэньнем старонак абмеркаваньня.", + "watchlist-details": "У вашым сьпісе назіраньня $1 {{PLURAL:$1|старонка|старонкі|старонак}} (плюс старонкі размоваў).", "wlheader-enotif": "Апавяшчэньне па e-mail уключанае.", "wlheader-showupdated": "Старонкі, зьмененыя з часу вашага апошняга візыту, вылучаныя '''тоўстым''' шрыфтам.", "wlnote": "Ніжэй {{PLURAL:$1|паказаная $1 апошняя зьмена|паказаныя $1 апошнія зьмены|паказаныя $1 апошніх зьменаў}} за $2 {{PLURAL:$2|гадзіну|гадзіны|гадзінаў}}, па стане на $4 $3.", @@ -2098,6 +2130,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": "Выдаліць старонку", @@ -2126,6 +2159,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|рэдагаваньне|рэдагаваньні|рэдагаваньняў}}", @@ -2291,6 +2325,7 @@ "sp-contributions-newonly": "Паказваць толькі праўкі, якімі былі створаныя старонкі", "sp-contributions-hideminor": "Схаваць дробныя праўкі", "sp-contributions-submit": "Шукаць", + "sp-contributions-outofrange": "Немагчыма паказаць ніякія вынікі. Запытаны IP-дыяпазон большы чым CIDR-ліміт /$1.", "whatlinkshere": "Спасылкі на старонку", "whatlinkshere-title": "Старонкі, якія спасылаюцца на $1", "whatlinkshere-page": "Старонка:", @@ -2579,7 +2614,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» не была імпартаваная, бо Вы ня маеце правоў на яе стварэньне.", @@ -2638,7 +2673,7 @@ "tooltip-feed-rss": "RSS-стужка для гэтай старонкі", "tooltip-feed-atom": "Atom-стужка для гэтай старонкі", "tooltip-t-contributions": "Унёсак {{GENDER:$1|гэтага ўдзельніка|гэтай удзельніцы}}", - "tooltip-t-emailuser": "Даслаць ліст {{GENDER:$1|гэтаму ўдзельніку|гэтай удзельніцы}} па электроннай пошце", + "tooltip-t-emailuser": "Даслаць ліст электроннай поштай {{GENDER:$1|гэтаму ўдзельніку|гэтай удзельніцы}}", "tooltip-t-info": "Болей інфармацыі пра гэтую старонку", "tooltip-t-upload": "Загрузіць файлы", "tooltip-t-specialpages": "Сьпіс усіх спэцыяльных старонак", @@ -2691,7 +2726,7 @@ "pageinfo-title": "Інфармацыя пра «$1»", "pageinfo-not-current": "Даруйце, мы ня можам падаць гэтыя зьвесткі для старых вэрсіяў.", "pageinfo-header-basic": "Асноўныя зьвесткі", - "pageinfo-header-edits": "Рэдагаваньні", + "pageinfo-header-edits": "Гісторыя рэдагаваньняў", "pageinfo-header-restrictions": "Абарона старонкі", "pageinfo-header-properties": "Уласьцівасьці старонкі", "pageinfo-display-title": "Загаловак для адлюстраваньня", @@ -2702,7 +2737,7 @@ "pageinfo-language-change": "зьмяніць", "pageinfo-content-model": "Мадэль зьместу старонкі", "pageinfo-content-model-change": "зьмяніць", - "pageinfo-robot-policy": "Індэксацыя пашукавікамі", + "pageinfo-robot-policy": "Індэксацыя пошукавымі робатамі", "pageinfo-robot-index": "Дазволеная", "pageinfo-robot-noindex": "Не дазволеная", "pageinfo-watchers": "Колькасьць назіральнікаў і назіральніц", @@ -2713,11 +2748,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)", @@ -2727,7 +2762,7 @@ "pageinfo-toolboxlink": "Зьвесткі пра старонку", "pageinfo-redirectsto": "Перанакіроўвае на", "pageinfo-redirectsto-info": "інфармацыя", - "pageinfo-contentpage": "Лічыцца артыкулам", + "pageinfo-contentpage": "Лічыцца як старонка зь зьместам", "pageinfo-contentpage-yes": "Так", "pageinfo-protect-cascading": "Адсюль пачынаецца каскадная абарона", "pageinfo-protect-cascading-yes": "Так", @@ -3337,10 +3372,10 @@ "redirect-submit": "Перайсьці", "redirect-lookup": "Шукаць паводле:", "redirect-value": "Значэньне:", - "redirect-user": "Ідэнтыфікатара ўдзельніка", - "redirect-page": "Ідэнтыфікатар старонкі", + "redirect-user": "Ідэнтыфікатару ўдзельніка", + "redirect-page": "Ідэнтыфікатару старонкі", "redirect-revision": "Вэрсіі старонкі", - "redirect-file": "Імя файла", + "redirect-file": "Назва файлу", "redirect-logid": "ID журнала", "redirect-not-exists": "Значэньне ня знойдзена", "fileduplicatesearch": "Пошук дублікатаў файлаў", @@ -3353,7 +3388,7 @@ "fileduplicatesearch-noresults": "Файл з назвай «$1» ня знойдзены.", "specialpages": "Спэцыяльныя старонкі", "specialpages-note-top": "Легенда", - "specialpages-note": "* Звычайныя спэцыяльныя старонкі.\n* Спэцыяльныя старонкі з абмежаваным доступам.", + "specialpages-note-restricted": "* Звычайныя спэцыяльныя старонкі.\n* Спэцыяльныя старонкі з абмежаваным доступам.", "specialpages-group-maintenance": "Тэхнічныя справаздачы", "specialpages-group-other": "Іншыя спэцыяльныя старонкі", "specialpages-group-login": "Уваход / стварэньне рахунку", @@ -3472,6 +3507,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)", @@ -3851,8 +3893,19 @@ "changecredentials": "Зьмена ўліковых зьвестак", "changecredentials-submit": "Зьмяніць уліковыя зьвесткі", "changecredentials-invalidsubpage": "$1 не зьяўляецца слушным тыпам уліковых зьвестак.", + "changecredentials-success": "Вашыя ўліковыя зьвесткі былі зьмененыя.", "removecredentials": "Выдаленьне ўліковых зьвестак", "removecredentials-submit": "Выдаліць уліковыя зьвесткі", + "removecredentials-invalidsubpage": "$1 не зьяўляецца слушным тыпам уліковых зьвестак.", + "removecredentials-success": "Вашыя ўліковыя зьвесткі былі выдаленыя.", "credentialsform-provider": "Тып уліковых зьвестак:", - "credentialsform-account": "Назва рахунку:" + "credentialsform-account": "Назва рахунку:", + "cannotlink-no-provider-title": "Няма рахункаў для далучэньня", + "cannotlink-no-provider": "Няма рахункаў для далучэньня.", + "linkaccounts": "Далучэньне рахункаў", + "linkaccounts-success-text": "Рахунак быў далучаны.", + "linkaccounts-submit": "Далучыць рахункі", + "unlinkaccounts": "Адлучэньне рахункаў", + "unlinkaccounts-success": "Рахунак быў адлучаны.", + "authenticationdatachange-ignored": "Зьмена зьвестак аўтэнтыфікацыі не была апрацаваная. Магчыма, ня быў наладжаны правайдэр?" } diff --git a/languages/i18n/be.json b/languages/i18n/be.json index 9cd29acfc6..9a6dd509d5 100644 --- a/languages/i18n/be.json +++ b/languages/i18n/be.json @@ -30,7 +30,9 @@ "SamGold", "Liashko", "Mechanizatar", - "Artsiom91" + "Artsiom91", + "Andrus", + "Da voli" ] }, "tog-underline": "Падкрэсліваць спасылкі:", @@ -1296,6 +1298,8 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (гл. асобна [[Special:NewPages|новыя старонкі]])", "recentchanges-submit": "Паказаць", "rcfilters-activefilters": "Актыўныя фільтры", + "rcfilters-days-title": "Апошнія дні", + "rcfilters-hours-title": "Апошнія гадзіны", "rcfilters-savedqueries-rename": "Перайменаваць", "rcfilters-savedqueries-setdefault": "Устанавіць прадвызначаным", "rcfilters-savedqueries-unsetdefault": "Зняць прадвызначэнне", @@ -1308,20 +1312,20 @@ "rcfilters-clear-all-filters": "Ачысціць усе фільтры", "rcfilters-invalid-filter": "Недапушчальны фільтр", "rcfilters-filterlist-title": "Фільтры", - "rcfilters-filterlist-whatsthis": "Што гэта?", + "rcfilters-filterlist-whatsthis": "Як гэта працуе?", "rcfilters-highlightmenu-title": "Выбраць колер", "rcfilters-highlightmenu-help": "Выбраць колер для падсвечвання уласцівасці", - "rcfilters-filtergroup-registration": "Рэгістрацыя ўдзельніка", - "rcfilters-filter-registered-label": "Зарэгістраваны", - "rcfilters-filter-registered-description": "Залагіненыя рэдактары", - "rcfilters-filter-unregistered-label": "Незарэгістраваны", "rcfilters-filter-editsbyself-label": "Вашыя змены", "rcfilters-filter-editsbyself-description": "Ваш унёсак", "rcfilters-filter-editsbyother-label": "Змены іншых удзельнікаў", "rcfilters-filter-editsbyother-description": "Усе змены, акрамя Вашых", "rcfilters-filtergroup-userExpLevel": "Вопыт (толькі для зарэгістраваных удзельнікаў)", - "rcfilters-filter-user-experience-level-learner-description": "Болей дзён актыўнасці і правак, чым у «навічкоў», але меней чым у «дасведчаных удзельнікаў».", - "rcfilters-filter-user-experience-level-experienced-description": "Больш за 30 дзён актыўнасці і 500 правак.", + "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-description": "Зарэгістраваныя рэдактары з менш за 10 правак і 4 дзён актыўнасці.", + "rcfilters-filter-user-experience-level-learner-description": "Зарэгістраваныя рэдактары, вопыт якіх знаходзіцца паміж «навічкамі» і «дасведчанымі удзельнікамі».", + "rcfilters-filter-user-experience-level-experienced-description": "Зарэгістраваныя рэдактары з больш за 500 правак і 30 дзён актыўнасці.", "rcfilters-filter-bots-label": "Бот", "rcfilters-filter-humans-label": "Чалавек (не бот)", "rcfilters-filter-humans-description": "Праўкі, зробленыя людзьмі", @@ -1329,6 +1333,7 @@ "rcfilters-filter-unpatrolled-label": "Недагледжаны", "rcfilters-filtergroup-lastRevision": "Цяперашняя версія", "rcfilters-filter-lastrevision-label": "Актуальная версія", + "rcfilters-exclude-button-on": "За выключэннем выбранага", "rcnotefrom": "Ніжэй {{PLURAL:$5|паказана змяненне|паказаны змены}} з $3, $4 (не больш за $1).", "rclistfrom": "Паказаць змены з $3 $2", "rcshowhideminor": "$1 дробныя праўкі", @@ -3232,7 +3237,6 @@ "fileduplicatesearch-noresults": "Не знойдзены файл з іменем «$1».", "specialpages": "Адмысловыя старонкі", "specialpages-note-top": "Легенда", - "specialpages-note": "* Звычайныя адмысловыя старонкі.\n* Адмысловыя старонкі з абмежаваным доступам.\n* Закэшаваныя адмысловыя старонкі (могуць быць састарэлымі).", "specialpages-group-maintenance": "Звесткі аб працы", "specialpages-group-other": "Іншыя адмысловыя старонкі", "specialpages-group-login": "Прадстаўленне / рэгістрацыя", diff --git a/languages/i18n/bg.json b/languages/i18n/bg.json index 2c499082a4..ab2eabb251 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": "Възникна грешка в базата от данни при външното удостоверяване, или не ви е позволено да обновявате външната си сметка.", @@ -504,6 +508,7 @@ "createacct-another-realname-tip": "Истинското име е незадължително.\nВ случай, че бъде избрано да се попълни, то ще бъде използвано за да му се приписват приносите в уикито.", "pt-login": "Влизане", "pt-login-button": "Влизане", + "pt-login-continue-button": "Продължаване с влизането", "pt-createaccount": "Създаване на сметка", "pt-userlogout": "Излизане", "php-mail-error-unknown": "Неразпозната грешка във функция mail() на PHP.", @@ -528,6 +533,7 @@ "botpasswords-label-cancel": "Отказване", "botpasswords-label-delete": "Изтриване", "botpasswords-label-resetpassword": "Възстановяване на парола", + "botpasswords-bad-appid": "Името на бота „$1“ не е валидно.", "botpasswords-created-title": "Паролата на бота е създадена", "botpasswords-created-body": "Паролата на бот „$1“ на потребител „$2“ е създадена.", "botpasswords-updated-title": "Паролата на бота е обновена", @@ -665,7 +671,6 @@ "explainconflict": "Някой друг вече е променил тази страница, откакто започнахте да я редактирате.\nГорната текстова кутия съдържа текущия текст на страницата без вашите промени, които са показани в долната кутия.\nЗа да бъдат и те съхранени, е необходимо ръчно да ги преместите в горното поле, тъй като единствено текстът в него ще бъде съхранен при натискането на бутона „$1“.", "yourtext": "Вашият текст", "storedversion": "Съхранена версия", - "nonunicodebrowser": "Внимание: Браузърът ви не поддържа Уникод.\nЗа да можете спокойно да редактирате страници, всички знаци, невключени в ASCII-таблицата, ще бъдат заменени с шестнадесетични кодове.", "editingold": "Внимание: Редактирате остаряла версия на страницата.\nАко я съхраните, всякакви промени, направени след тази версия, ще бъдат изгубени.", "yourdiff": "Разлики", "copyrightwarning": "Обърнете внимание, че всички приноси към {{SITENAME}} се публикуват при условията на $2 (за подробности вижте $1).\nАко не сте съгласни вашата писмена работа да бъде променяна и разпространявана без ограничения, не я публикувайте.
    \nСъщо потвърждавате, че вие сте написали материала или сте използвали свободни ресурси — обществено достояние или друг свободен източник.\nАко сте ползвали чужди материали, за които имате разрешение, непременно посочете източника.\nНе публикувайте произведения с авторски права без разрешение!", @@ -691,7 +696,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Вероятно междувременно е била изтрита.", @@ -855,8 +860,8 @@ "mergehistory-fail-self-merge": "Изходната и целевата страница се еднакви.", "mergehistory-no-source": "Изходната страница $1 не съществува.", "mergehistory-no-destination": "Целевата страница $1 не съществува.", - "mergehistory-invalid-source": "Изходната страница трябва да има коректно име.", - "mergehistory-invalid-destination": "Целевата страница трябва да има коректно име.", + "mergehistory-invalid-source": "Изходната страница трябва да има валидно заглавие.", + "mergehistory-invalid-destination": "Целевата страница трябва да има валидно заглавие.", "mergehistory-autocomment": "Слята [[:$1]] в [[:$2]]", "mergehistory-comment": "Слята [[:$1]] в [[:$2]]: $3", "mergehistory-same-destination": "Изходната и целевата страница не могат да съвпадат", @@ -970,6 +975,7 @@ "recentchangescount": "Брой показвани редакции по подразбиране:", "prefs-help-recentchangescount": "Това включва последните промени, историите на страниците и дневниците.", "savedprefs": "Настройките ви бяха съхранени.", + "savedrights": "Потребителските групи на {{GENDER:$1|$1}} са запазени.", "timezonelegend": "Часова зона:", "localtime": "Местно време:", "timezoneuseserverdefault": "По подразбиране от уикито ($1)", @@ -987,6 +993,7 @@ "timezoneregion-indian": "Индийски океан", "timezoneregion-pacific": "Тихи океан", "allowemail": "Възможност за получаване на писма от други потребители", + "email-blacklist-label": "Забраняване на следните потребители да ми изпращат писма:", "prefs-searchoptions": "Търсене", "prefs-namespaces": "Именни пространства", "default": "по подразбиране", @@ -1169,6 +1176,7 @@ "grant-basic": "Основни права", "grant-viewdeleted": "Преглед на изтритите файлове и страници", "grant-viewmywatchlist": "Преглед на списъка ви за наблюдение", + "grant-viewrestrictedlogs": "Преглед на ограничените записки в дневника", "newuserlogpage": "Дневник на регистрациите", "newuserlogpagetext": "В този дневник се записват регистрациите на потребители.", "rightslog": "Дневник на потребителските права", @@ -1235,7 +1243,8 @@ "recentchanges-label-plusminus": "Размерът на страницата е променен с този брой байтове", "recentchanges-legend-heading": "Легенда:", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (вижте също [[Special:NewPages|списъка с нови страници]])", - "recentchanges-submit": "Покажи", + "recentchanges-submit": "Показване", + "rcfilters-legend-heading": "Списък на съкращенията:", "rcfilters-activefilters": "Активни филтри", "rcfilters-quickfilters": "Запазени филтри", "rcfilters-quickfilters-placeholder-title": "Няма запазени препратки", @@ -1255,23 +1264,22 @@ "rcfilters-invalid-filter": "Невалиден филтър", "rcfilters-empty-filter": "Няма активни филтри. Показани са всички редакции.", "rcfilters-filterlist-title": "Филтри", - "rcfilters-filterlist-whatsthis": "Какво е това?", + "rcfilters-filterlist-whatsthis": "Как работи това?", "rcfilters-filterlist-feedbacklink": "Оставете коментар за новите (бета) филтри", "rcfilters-highlightbutton-title": "Отбелязване на резултатите", "rcfilters-highlightmenu-title": "Изберете цвят", "rcfilters-highlightmenu-help": "Изберете цвят за отбелязване на свойството", "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": "По-малко от 10 редакции и 5 дни активност.", "rcfilters-filter-user-experience-level-learner-label": "Учещи се", @@ -1364,13 +1372,13 @@ "recentchanges-page-added-to-category-bundled": "[[:$1]] е добавена към категория, [[Special:WhatLinksHere/$1|към страницата сочат други страници]]", "recentchanges-page-removed-from-category": "[[:$1]] е премахната от категория", "upload": "Качи файл", - "uploadbtn": "Качване", - "reuploaddesc": "Връщане към формуляра за качване.", + "uploadbtn": "Качване на файл", + "reuploaddesc": "Връщане към формуляра за качване", "upload-tryagain": "Съхраняване на промененото описание на файла", "uploadnologin": "Не сте влезли", "uploadnologintext": "За да могат да бъдат качвани файлове е необходимо $1 в системата.", "upload_directory_missing": "Директорията за качване ($1) липсва и не може да бъде създадена на сървъра.", - "upload_directory_read_only": "Сървърът няма достъп за писане в директорията за качване „$1“.", + "upload_directory_read_only": "Сървърът няма права за писане в директорията за качване „$1“.", "uploaderror": "Грешка при качване", "upload-recreate-warning": "Внимание: Файл с това име вече е бил изтрит или преместен.\n\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 пиксела, ляво позициониране и „alt text“ за описание\n* [[{{ns:media}}:File.ogg]] за директна препратка, без файлът да бъде показван", @@ -1378,14 +1386,14 @@ "upload-preferred": "{{PLURAL:$2|Предпочитан файлов формат|Предпочитани файлови формати}}: $1.", "upload-prohibited": "{{PLURAL:$2|Непозволен файлов формат|Непозволени файлови формати}}: $1.", "uploadlogpage": "Дневник на качванията", - "uploadlogpagetext": "Списък на последните качвания.", + "uploadlogpagetext": "Списък на последните качвания.\nВижте [[Special:NewFiles|галерията на новите файлове]] за визуален преглед.", "filename": "Име на файл", "filedesc": "Описание", "fileuploadsummary": "Описание:", "filereuploadsummary": "Промени по файла:", "filestatus": "Авторско право:", "filesource": "Изходен код:", - "ignorewarning": "Съхраняване на файла въпреки предупреждението.", + "ignorewarning": "Съхраняване на файла въпреки предупреждението", "ignorewarnings": "Пренебрегване на всякакви предупреждения", "minlength1": "Имената на файловете трябва да съдържат поне един знак.", "illegalfilename": "Името на файла „$1“ съдържа знаци, които не са позволени в заглавия на страници. Преименувайте файла и се опитайте да го качите отново.", @@ -1397,7 +1405,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 +1416,7 @@ "unknown-error": "Възникна неизвестна грешка.", "tmp-create-error": "Грешка при създаването на временен файл.", "tmp-write-error": "Грешка при записа на временен файл.", - "large-file": "Не се препоръчва файловете да се по-големи от $1; този файл е $2.", + "large-file": "Не се препоръчва файловете да са по-големи от $1; този файл е $2.", "largefileserver": "Файлът е по-голям от допустимия от сървъра размер.", "emptyfile": "Каченият от вас файл е празен. Това може да е предизвикано от грешка в името на файла. Уверете се дали наистина желаете да го качите.", "windows-nonascii-filename": "Уикито не поддържа имена на файлове със специални знаци.", @@ -1453,7 +1461,7 @@ "upload-too-many-redirects": "Адресът съдържа твърде много пренасочвания", "upload-http-error": "Възникна HTTP грешка: $1", "upload-dialog-title": "Качване на файл", - "upload-dialog-button-cancel": "Отказване", + "upload-dialog-button-cancel": "Отказ", "upload-dialog-button-back": "Обратно", "upload-dialog-button-done": "Готово", "upload-dialog-button-save": "Съхраняване", @@ -1471,9 +1479,9 @@ "upload-form-label-own-work-message-generic-local": "Потвърждавам, че качвам този файл в съответствие с правилата и лицензионната политика на сайта {{SITENAME}}.", "upload-form-label-not-own-work-message-generic-local": "Ако не можете да заредите този файл в съответствие с правилата на сайта {{SITENAME}}, моля, затворете този прозорец и опитайте друг метод.", "upload-form-label-not-own-work-message-generic-foreign": "Ако не можете да качите този файл в съответствие с правилата на споделеното хранилище, моля, затворете този прозорец и опитайте друг метод.", - "backend-fail-notexists": "Файлът $1 не съществува.", - "backend-fail-delete": "Файлът $1 не може да бъде изтрит.", - "backend-fail-alreadyexists": "Файлът $1 вече съществува.", + "backend-fail-notexists": "Файлът „$1“ не съществува.", + "backend-fail-delete": "Файлът „$1“ не може да бъде изтрит.", + "backend-fail-alreadyexists": "Файлът „$1“ вече съществува.", "backend-fail-store": "Файлът „$1“ не може да бъде съхранен в „$2“.", "backend-fail-copy": "Файлът „$1“ не можа да бъде копиран в „$2“.", "backend-fail-move": "Файлът „$1“ не можа да бъде преместен в „$2“.", @@ -1513,7 +1521,7 @@ "http-curl-error": "Грешка при извличането на URL: $1", "http-bad-status": "Настъпи проблем по време на HTTP заявката: $1 $2", "upload-curl-error6": "Не е възможно достигането на указания URL адрес", - "upload-curl-error6-text": "Търсеният адрес не може да бъде достигнат. Проверете дали е написан вярно.", + "upload-curl-error6-text": "Търсеният адрес не може да бъде достигнат.\nПроверете дали е написан вярно и дали сайтът не е паднал.", "upload-curl-error28": "Времето за качване изтече", "upload-curl-error28-text": "Сайтът не отговаря твърде дълго.\nУбедете се, че сайтът работи, изчакайте малко и опитайте отново.\nВ краен случай опитайте през по-ненатоварено време.", "license": "Лицензиране:", @@ -1525,7 +1533,7 @@ "upload_source_file": "(файл на вашия компютър)", "listfiles-delete": "изтриване", "listfiles-summary": "Тази специална страница показва всички качени файлове.", - "listfiles_search_for": "Търсене по име на файла:", + "listfiles_search_for": "Търсене по име на файл:", "listfiles-userdoesnotexist": "Няма регистрирана потребителска сметка за „$1“.", "imgfile": "файл", "listfiles": "Списък на файловете", @@ -1896,7 +1904,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": "Показване", @@ -1986,7 +1994,7 @@ "protectedarticle": "защити „[[$1]]“", "modifiedarticleprotection": "смени нивото на защита на „[[$1]]“", "unprotectedarticle": "свали защитата на „[[$1]]“", - "movedarticleprotection": "преместване на настройките за защита от „[[$2]]“ на „[[$1]]“", + "movedarticleprotection": "премести настройките на защита от „[[$2]]“ на „[[$1]]“", "protect-title": "Смяна на нивото на защита на „$1“", "protect-title-notallowed": "Преглеждане нивото на защита за „$1“", "prot_1movedto2": "„[[$1]]“ преместена като „[[$2]]“", @@ -2996,6 +3004,7 @@ "autosumm-replace": "Заместване на съдържанието на страницата с „$1“", "autoredircomment": "Пренасочване към [[$1]]", "autosumm-new": "Нова страница: „$1“", + "autosumm-newblank": "Създаване на празна страница", "lag-warn-normal": "Промените от {{PLURAL:$1|последната $1 секунда|последните $1 секунди}} вероятно не са показани в списъка.", "lag-warn-high": "Поради голямото изоставане в сървърната синхронизация, промените от {{PLURAL:$1|последната $1 секунда|последните $1 секунди}} вероятно не са показани в списъка.", "watchlistedit-normal-title": "Редактиране на списъка за наблюдение", @@ -3087,7 +3096,6 @@ "fileduplicatesearch-noresults": "Не беше открит файл с име „$1“.", "specialpages": "Специални страници", "specialpages-note-top": "Легенда", - "specialpages-note": "* Обикновени специални страници.\n* Специални страници с ограничения.", "specialpages-group-maintenance": "Доклади по поддръжката", "specialpages-group-other": "Други специални страници", "specialpages-group-login": "Влизане / създаване на сметка", @@ -3135,7 +3143,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-below": "Искате ли да продължите със създаването на етикета?", @@ -3181,6 +3189,7 @@ "compare-invalid-title": "Посоченото заглавие е невалидно.", "compare-title-not-exists": "Посоченото заглавие не съществува.", "compare-revision-not-exists": "Посочената версия не съществува.", + "diff-form": "'''формуляр'''", "dberr-problems": "Съжаляваме! Сайтът изпитва технически затруднения.", "dberr-again": "Изчакайте няколко минути и опитайте да презаредите.", "dberr-info": "(Няма достъп до базата от данни: $1)", @@ -3216,6 +3225,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 +3234,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 +3254,9 @@ "logentry-newusers-create2": "$1 {{GENDER:$2|създаде}} потребителска сметка $3", "logentry-newusers-byemail": "$1 {{GENDER:$2|създаде}} потребителската сметка $3, като паролата за нея беше изпратена по е-поща", "logentry-newusers-autocreate": "Сметката $1 беше {{GENDER:$2|създадена}} автоматично", + "logentry-protect-move_prot": "$1 {{GENDER:$2|премести}} настройките на защита от $4 на $3", + "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 e93c8264a0..3ca3fd5caa 100644 --- a/languages/i18n/bho.json +++ b/languages/i18n/bho.json @@ -60,19 +60,19 @@ "editfont-monospace": "मोनोस्पेस्ड फोंट", "editfont-sansserif": "सैंस-सेरिफ फॉन्ट", "editfont-serif": "सेरिफ फॉन्ट", - "sunday": "इतवार", - "monday": "सोमवार", - "tuesday": "मंगलवार", - "wednesday": "बुधवार", - "thursday": "गुरुवार", - "friday": "शुक्रवार", - "saturday": "शनिवार", - "sun": "इत", + "sunday": "अतवार", + "monday": "सोमार", + "tuesday": "मंगर", + "wednesday": "बुध", + "thursday": "बियफे", + "friday": "शुक", + "saturday": "शनिच्चर", + "sun": "अत", "mon": "सोम", - "tue": "मंगल", + "tue": "मंगर", "wed": "बुध", - "thu": "गुरु", - "fri": "शुक्र", + "thu": "बिफे", + "fri": "शुक", "sat": "शनि", "january": "जनवरी", "february": "फरवरी", @@ -159,9 +159,9 @@ "navigation-heading": "नेविगेशन मेनू", "errorpagetitle": "खराबी", "returnto": "$1 पर लवटीं।", - "tagline": "भोजपुरी {{SITENAME}} से", + "tagline": "{{SITENAME}} से", "help": "मदद", - "search": "खोज", + "search": "खोज करीं", "search-ignored-headings": " #
    \n# हेडिंग जिनहन पर खोज करत समय धियान ना दिहल जाई।\n# एह हेडिंग वाला पन्ना जइसहीं सूचीबद्ध होखी, बदलाव प्रभावी हो जइहें।\n# आप एगो खाली संपादन (null edit) कइ के दुबारा सूचीकरण के लागू कर सकत बानी।\n# एकर सिंटेक्स अइसे बा कि:\n#   * Everything from a \"#\" character to the end of the line is a comment.\n#   * Every non-blank line is the exact title to ignore, case and everything.\nसंदर्भ\nबाहरी कड़ी\nइहो देखल जाय\n #
    ", "searchbutton": "खोजीं", "go": "जाईं", @@ -170,12 +170,12 @@ "history_short": "इतिहास", "history_small": "इतिहास", "updatedmarker": "हमरे अंतिम बेर देखले के बाद के बदलाव", - "printableversion": "छापे लायक संस्करण", + "printableversion": "छापे लायक वर्शन", "permalink": "स्थायी कड़ी", "print": "छापीं", "view": "देखीं", "view-foreign": "$1 पर देखीं", - "edit": "संपादन", + "edit": "संपादन करीं", "edit-local": "लोकल विवरण संपादन", "create": "बनाईं", "create-local": "लोकल विवरण जोड़ीं", @@ -208,7 +208,7 @@ "lastmodifiedat": "एह पन्ना पर आखिरी बेर संपादन $1 के $2 बजे भइल रहल।", "viewcount": "ई पन्ना {{PLURAL:$1|एक|$1}} बेर देखल गइल बा।", "protectedpage": "सुरक्षित पन्ना", - "jumpto": "इहाँ जाईं:", + "jumpto": "सीधे इहाँ जाईं:", "jumptonavigation": "नेविगेशन", "jumptosearch": "खोजीं", "view-pool-error": "माफ करीं, ए समय सर्वर पर बहुत ज्यादा लोड बढ़ गइल बा।\nए पन्ना के बहुते प्रयोगकर्ता लोग देखे के कोशिश कर रहल बा।\nए पन्ना के फिर से देखे से पहिले कृपया कुछ देर तक इंतजार करीं।\n\n$1", @@ -222,8 +222,8 @@ "aboutpage": "Project:बारे में", "copyright": "उपलब्ध सामग्री $1 के अधीन उपलब्ध बा जब तक की अलग से उल्लेख ना कइल गइल होखे।", "copyrightpage": "{{ns:project}}:कापीराइट सब", - "currentevents": "हाल के घटना सब", - "currentevents-url": "Project:हाल के घटना सब", + "currentevents": "हाल के घटना", + "currentevents-url": "Project:हाल के घटना", "disclaimers": "नामंजूरी", "disclaimerpage": "Project:सामान्य नामंजूरी", "edithelp": "संपादन में मदद", @@ -232,7 +232,7 @@ "mainpage-description": "मुख्य पन्ना", "policy-url": "Project:नीति", "portal": "समाज पन्ना", - "portal-url": "Project:सदस्य-समाज मुख्यपन्ना", + "portal-url": "Project:समाज पन्ना", "privacy": "गोपनीयता नीति", "privacypage": "Project:गोपनीयता नीति", "badaccess": "परमीशन खराबी", @@ -253,7 +253,7 @@ "viewsourceold": "स्रोत देखीं", "editlink": "संपादन", "viewsourcelink": "स्रोत देखीं", - "editsectionhint": "खंड के संपादन: $1", + "editsectionhint": "$1 खंड के संपादित करीं", "toc": "बिसयसूची", "showtoc": "देखीं", "hidetoc": "छिपाईं", @@ -278,7 +278,7 @@ "nstab-main": "पन्ना", "nstab-user": "प्रयोगकर्ता पन्ना", "nstab-media": "मीडिया पन्ना", - "nstab-special": "विशेष पन्ना", + "nstab-special": "खास पन्ना", "nstab-project": "प्रोजेक्ट पन्ना", "nstab-image": "फाइल", "nstab-mediawiki": "सनेसा", @@ -325,7 +325,7 @@ "delete-hook-aborted": "हुक द्वारा हटावे के कार्रवाई बीचे में छोड़ल गइल।\nबिना कौनों कारण बतवले।", "no-null-revision": "पन्ना \"$1\" खातिर नया खाली संसोधन ना बन सकल", "badtitle": "खराब टाइटिल", - "badtitletext": "अनुरोधित टाइटिल अवैध, खाली या गलत जुड़ल अंतर-भाषीय या अंतर-विकि टाइटिल बा।\nबुझात बा कि एह में टाइटिल में ना इस्तेमाल हो सके लायक एक या एक से ढेर कॅरेक्टर बा।", + "badtitletext": "अनुरोधित टाइटिल अवैध, खाली या गलत जुड़ल अंतरभाषी या अंतरविकि टाइटिल बा।\nबुझात बा कि एह में टाइटिल में ना इस्तेमाल हो सके लायक एक ठो या एक से ढेर करेक्टर बा।", "title-invalid-empty": "माँगल जा रहल पन्ना टाइटिल या त खाली बा या फिर कौनों नाँवस्थान के नाँव भर दिहल गइल बाटे।", "title-invalid-utf8": "माँगल जा रहल पन्ना टाइटिल में अइसन UTF-8 सीक्वेंस बा जेवन मान्य नइखे।", "title-invalid-interwiki": "माँगल जा रहल पन्ना टाइटिल में इंटरविकि कड़ी बा जेवन टाइटिल में ना प्रयोग कइल जा सकत बा।", @@ -422,7 +422,7 @@ "createacct-another-submit": "खाता बनाईं", "createacct-continue-submit": "खाता बनावल जारी राखीं", "createacct-another-continue-submit": "खाता बनावल जारी राखीं", - "createacct-benefit-heading": "{{SITENAME}} रउआ जइसन लोगन द्वारा बनावल गइल बा।", + "createacct-benefit-heading": "{{SITENAME}} रउवें जइसन लोगन द्वारा बनावल गइल बा।", "createacct-benefit-body1": "{{PLURAL:$1|संपादन}}", "createacct-benefit-body2": "{{PLURAL:$1|पन्ना}}", "createacct-benefit-body3": "हाल के {{PLURAL:$1|योगदानकर्ता}}", @@ -576,8 +576,8 @@ "resettokens-watchlist-token": "[[Special:Watchlist|आपके धियानसूची के पन्नन में बदलावसभ]] के वेब फीड (एटम/आरऍसऍस) खातिर टोकन", "resettokens-done": "टोकन रीसेट हो चुकल बा।", "resettokens-resetbutton": "चुनल गइल टोकन रीसेट करीं", - "bold_sample": "मोट अच्छर में", - "bold_tip": "मोट अच्छर में", + "bold_sample": "मोट अच्छर", + "bold_tip": "मोट अच्छर", "italic_sample": "तिरछा पाठ", "italic_tip": "तिरछा पाठ", "link_sample": "कड़ी टाइटिल", @@ -586,8 +586,8 @@ "extlink_tip": "बाहरी कड़ी (शुरू में http:// जरुर लगाईं)", "headline_sample": "हेडिंग पाठ", "headline_tip": "दुसरा लेवल के हेडिंग", - "nowiki_sample": "बिना-फॉरमेट कइल पाठ इहाँ डालीं", - "nowiki_tip": "विकि फॉरमेटिंग के अनदेखी करीं", + "nowiki_sample": "बिना-फारमेट कइल पाठ इहाँ डालीं", + "nowiki_tip": "विकि फारमेटिंग के अनदेखी करीं", "image_sample": "उदाहरण.jpg", "image_tip": "समाहित (एम्बेड कइल) फाइल", "media_sample": "उदाहरण.ogg", @@ -596,7 +596,7 @@ "hr_tip": "पड़ी लकीर (कम प्रयोग करीं)", "summary": "सारांश:", "subject": "बिसय:", - "minoredit": "छोट परिवर्तन", + "minoredit": "ई एगो छोट संपादन बा", "watchthis": "धियानसूची में डालीं", "savearticle": "पन्ना सहेजीं", "savechanges": "बदलाव सहेजीं", @@ -606,7 +606,7 @@ "showpreview": "झलक देखीं", "showdiff": "बदलाव देखीं", "blankarticle": "चेतावनी: आप एगो खाली पन्ना बनावे जा रहल बानी।\nयदि आप \"$1\" के फेर से दबायेब त पन्ना बिना कउनो सामग्री के बन जाई।", - "anoneditwarning": "चेतावनी: रउआँ आपन खाता में प्रवेश नइखीं कइले। अगर रउआँ कौनों बदलाव करब त राउर आईपी पता सभके लउकी। अगर रउआ [$1 खाता में प्रवेश करब] या [$2 नया खाता बनाइब] त, अउरी सुबिधा सब की संघे राउर संपादन के श्रेय भी राउर प्रयोगकर्तानाँव के मिली!", + "anoneditwarning": "चेतावनी: रउआँ आपन खाता में प्रवेश नइखीं कइले। अगर रउआँ कौनों बदलाव करब त राउर आईपी पता सभके लउकी। अगर रउआ [$1 खाता में प्रवेश करब] या [$2 नया खाता बनाइब] तब, अउरी सुबिधा सब की संघे राउर संपादन के श्रेय भी राउर प्रयोगकर्तानाँव के मिली!", "anonpreviewwarning": "''रउआँ खाता में प्रवेश नइखीं भइल। सहेजब तब ए पन्ना के संपादन इतिहास में राउर आईपी पता दर्ज हो जाई।\"", "missingsummary": "'''याद दियावल जात बा:'''रउआँ एगो संपादन सारांश नइखीं दिहले। अगर फिर \"$1\" पर क्लिक करब, त राउर संपादन एकरे बिना सहेजा जाई।", "selfredirect": "चेतावनी: आप ई पन्ना के खुदे एही पर अनुप्रेषण क रहल बानी।\nया त आप अनुप्रेषण खातिर गलत लक्ष्य देत बानी, या आप गलत पन्ना के संपादन करत बानी।\nएक बेर अउरी \"$1\" क्लिक करब त, ओइसहूँ ई अनुप्रेषण बना दिहल जाई।", @@ -619,20 +619,20 @@ "blockedtext": "'''राउर सदस्यनाम अथवा आइ॰पी पता अवरोधित कर दिहल गईल बा ।'''\n\nअवरोध $1 द्वारा करल गईल रहल।\nअवरोध के कारण बा ''$2''\n\n* अवरोध के आरंभ: $8\n* अवरोध के समाप्ति: $6\n* अवरोधित इकाई: $7\n\nइ अवरोध के बारे में चर्चा करे खातिर रउआ $1 या केहु अन्य [[{{MediaWiki:Grouppage-sysop}}|प्रबन्धक]] से संपर्क कर सकत बानी।\nअगर रउआ [[Special:Preferences|आपन वरीयता]] में वैद्य ई-मेल पता प्रविष्ट कइले होखब तबे 'इ प्रयोक्ता के ई-मेल भेजीं' वाला सुविधा के प्रयोग कर सकत बानी अउर रउआ एकर प्रयोग करे से ना रोकल गईल होखे।\nराउर हाल के आइ॰पी पता $3 ह अउर अवरोध क्रमांक #$5 ह।\nआपन कउनो भी प्रश्न में कृपया इ सब जानकारी भी शामिल करब।", "autoblockedtext": "राउर आइ॰पी पता अपने आप अवरुद्ध हो गईल बा काहे कि एकर प्रयोग केहु अन्य सदस्य द्वारा होत रहल,\nजे $1 द्वारा अवरोधित करल गईल रहलन। \nअवरोध करे के कारण बा:\n\n:''$2''\n\n* अवरोध प्रारंभ: $8\n* अवरोध समाप्ति: $6\n* अवरोधित सदस्य: $7\n\nअवरोध के चर्चा करे खातिर रउआ $1 या केहु अन्य [[{{MediaWiki:Grouppage-sysop}}|प्रबंधक]] से संपर्क कर सकत बानी।\n\nकृपया ध्यान रहे कि यदि रउआ \"इ सदस्य के ई-मेल भेजीं\" वाला सुविधा के प्रयोग करे के चाहत बानी त राउर [[Special:Preferences|वरीयता]] में वैद्य ई-मेल पता होखे के चाहीं अउर एकर प्रयोग रउआ खातिर अवरोधित ना भईल होखे।\n\nराउर हाल के आइ॰पी पता $3 ह अउर अवरोध क्रमांक #$5 ह।\nआपन कउनो भी प्रश्न में कृपया इ सब जानकारी शामिल करब।", "systemblockedtext": "राउर खाता या आइपी पता के मीडियाविकि द्वारा ऑटोमेटिक रूप से रोक दिहल गइल बा।\nएकरा खातिर कारण दिहल गइल बा:\n\n\n:$2\n\n* रोक के सुरुआत: $8\n* रोक समाप्त होखी: $6\n* रोक लगावे वाला: $7\n\nराउर वर्तमान आइपी पता $3 बा।\nअगर कौनों सवाल करीं तब ऊपर बतावल सगरी जानकारी देईं।", - "blockednoreason": "कउनो कारण उल्लेखित नईखे", - "whitelistedittext": "रउआ पन्ना सम्पादन करे खातिर $1 करे के पड़ी।", - "confirmedittext": "संपादन करे से पहिले आपके अापना ई-मेल पता प्रमाणित करावल जरुरी बा।\nकृपया आपन [[Special:Preferences|राउर पसन्द]] में जाके अापन ई-मेल पता दिहीं अउर उके प्रमाणित करीं।", - "nosuchsectiontitle": "खण्ड ना मिल सकल।", - "nosuchsectiontext": "आप एगो अइसन अनुभाग के सम्पादन करे के प्रयत्न कर रहल बानी जवन अस्तित्व में नइखे।\nसंभव बा कि जब आप पन्ना पढत या देखत रहनी तवने घड़ी उ के अपनी जगह से हिलावल गइल होखे या हटा दिहल गईल होई।", + "blockednoreason": "कवनो कारण नइखे बतावल गइल", + "whitelistedittext": "पन्ना पर संपादन करे खातिर $1 करीं।", + "confirmedittext": "संपादन करे से पहिले आपके आपन ईमेल पता प्रमाणित करावल जरुरी बा।\nआपन [[Special:Preferences|पसंद सेटिंग]] में जाके अापन ईमेल पता सेट करीं आ ओकरा के प्रमाणित करीं।", + "nosuchsectiontitle": "खंड ना मिलल", + "nosuchsectiontext": "आप एगो अइसन खंड के संपादन करे के कोसिस क रहल बानी जवन मौजूद नइखे।\nहो सकत बा कि जवना छन आप पन्ना देखत रहलीं ओही समय ई खंड घसका भा हटा दिहल गइल होखे।", "loginreqtitle": "खाता में प्रवेश जरुरी बा", "loginreqlink": "लॉग इन", "loginreqpagetext": "रउआ अन्य पन्ना देखे खातिर $1 करे के पड़ी।", - "accmailtitle": "गुप्त-शब्द भेजा गईल", + "accmailtitle": "गुप्तशब्द भेजाइल", "accmailtext": "[[User talk:$1|$1]] खातिर एगो यंत्र जनित गुप्तशब्द $2 के भेज दिहल गइल बा। खाता में प्रवेश कइला के बाद इ '''[[Special:ChangePassword|गुप्तशब्द बदल लीं]]'' वाला पन्ना पर बदलल जा सकत बा।", "newarticle": "(नया)", - "newarticletext": "रउआ एगो अइसन कड़ी के पन्ना के अनुसरण कइले बानी जवन अभी तक उपलब्ध नइखे।\nपन्ना बनावे खातिर, नीचे के बाकस में टाइप करे के शुरु करीं (ज्यादा जानकारी खातिर देखीं [$1 मदद पन्ना])।\nयदि रउआ अहिजा गलती से आ गइल बानी त, आपन ब्राउजर के '''बैक''' (Back) बटन दबाईं!", + "newarticletext": "रउआँ एगो अइसन कड़ी पकड़ के आइल बानी जवना से जुड़ल पन्ना अबहिन मौजूद नइखे।\nपन्ना बनावे खातिर नीचे के बाकस में टाइप करे शुरु करीं (ढेर जानकारी खातिर देखीं [$1 मदद पन्ना])।\nअगर रउआँ गलती से इहाँ आ गइल बानी, आपन ब्राउजर के '''बैक''' बटन दबाईं!", "anontalkpagetext": "----\nई अइसन बेनाम प्रयोगकर्ता के बातचीत पन्ना बा जे या त अभी खाता नइखे बनवले या खाता के इस्तेमाल नइखे करत।\nएही कारन ओह ब्यक्ति के पहिचान खातिर ई अंक वाला आइपी पता इस्तेमाल करे के परत बा।\nअइसन आइपी पता कई लोग के सझिया भी हो सकत बा।\nअगर आप बेनाम प्रयोगकर्ता बानी आ ई बुझाता कि कौनों बिना बात के कमेंट आपके ओर बा, [[Special:CreateAccount|खाता बनाईं]] या [[Special:UserLogin|लॉग इन]] करीं जेवना से भबिस्य में केहू रउवाँ पर केहू दूसर बेनाम प्रयोगकर्ता होखे के भरम न होखे।", - "noarticletext": "ए पन्ना मे अभी कौनों सामग्री नइखे।\nरउआँ दुसरा पन्ना में [[Special:Search/{{PAGENAME}}|ए टाइटिल के खोज]] कर सकत बानीं,\nया [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} या संबंधित लॉग खोज सकत बानी], बाकी रउआ के ई पन्ना बनावे के परमीशन नइखे।", + "noarticletext": "अबहिन एह पन्ना में कौनों सामग्री नइखे।\nरउआँ दुसरा पन्ना में [[Special:Search/{{PAGENAME}}|ए टाइटिल के खोज]] कर सकत बानीं,\nया [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} संबंधित लॉग खोज सकत बानी], बाकी रउआँ के ई पन्ना बनावे के परमीशन नइखे।", "noarticletext-nopermission": "ए पन्ना मे अभी कौनों सामग्री नइखे।\nरउआँ दुसरा पन्ना में [[Special:Search/{{PAGENAME}}|ए टाइटिल के खोज]] कर सकत बानीं,\nया [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} या संबंधित लॉग खोज सकत बानी], बाकी रउआ के ई पन्ना बनावे के परमीशन नइखे।", "missing-revision": "\"{{FULLPAGENAME}}\" पन्ना के संशोधन #$1 उपलब्ध नइखे।\n\nसाधारण रुप से इ एगो हटावल गइल पन्ना के पुरान लिंक पर क्लिक कइला से होखेला।\nअधिक जानकारी खातिर आप [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} हटावे के लॉग] देख सकत बानी।", "userpage-userdoesnotexist": "सदस्य खाता \"$1\" पंजीकृत नइखे।\nकृपया जाँच लीं कि आप इ पन्ना संपादित अथवा निर्मित करे के चाहत बानी कि ना।", @@ -657,7 +657,7 @@ "edit_form_incomplete": "संपादन के कुछ हिस्सा सर्वर ले ना पहुँच पावल ह; दोहरा के चेक करीं की राउर संपादन बदलल न होखे आ एक बेर फिर से सहेजे के कोसिस करीं।", "editing": "$1 संपादन", "creating": "$1 बनावे जा रहल बानी", - "editingsection": "$1 संपादन (खंड)", + "editingsection": "$1 (खंड) के संपादन कइल जात बा", "editingcomment": "$1 संपादन (नया खंड)", "editconflict": "संपादन अंतर्बिरोध: $1", "explainconflict": "आपके द्वारा संपादन सुरू कइला के बाद से केहू अउरी ए पन्ना में बदलाव क चुकल बाटे।\nऊपर के पाठ हिस्सा में लेख के पाठ के वर्तमान स्थिति देखावल जात बा।\nराउर संपादन नीचे के पाठ हिस्सा में देखावल गइल बा।\nरउआँ के आपन बदलाव एह पहिले से मौजूद पाठ में मिलावे के परी।\nखाली ऊपर की पाठ हिस्सा में लउकत पाठ सहेजल जाई अगर आप \"$1\" बटन दबाइब।", @@ -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ई कौनों कारन ना बतवलस।", @@ -749,11 +749,11 @@ "undo-summary-username-hidden": "केहू छिपल सदस्य द्वारा कइल बदलाव $1 वापस कइल गइल", "cantcreateaccount-text": "एह आइपी पता (IP address)($1) द्वारा नया खाता बनावे पर [[User:$3|$3]] द्वारा रोक लगावल गइल बा।\n\nएकरा खातिर $3 के दिहल कारण:$2", "cantcreateaccount-range-text": "आइपी पता बिस्तार (IP address range) $1 पर, जेवना में आपके आइपी ($4) भी बा, नया खाता बनावे पर [[User:$3|$3]] द्वारा रोक लगावल गइल बा।\n\nएकरा खातिर $3 के दिहल कारण बा:$2", - "viewpagelogs": "ए पन्ना खातिर लॉग कुल देखीं", + "viewpagelogs": "ए पन्ना खातिर लॉग देखीं", "nohistory": "ए पन्ना के कौनों संपादन इतिहास नइखे", "currentrev": "सबसे नया बदलाव", "currentrev-asof": "$1 ले भइल नया बदलाव", - "revisionasof": "$1 ले भइल नया बदलाव", + "revisionasof": "$1 तक ले भइल बदलाव", "revision-info": "{{GENDER:$6|$2}}$7 के द्वारा $1 के बदलाव", "previousrevision": "← पुरान बदलाव", "nextrevision": "नया बदलाव →", @@ -812,7 +812,7 @@ "revdelete-hide-text": "संशोधन पाठ्य", "revdelete-hide-image": "फाइल के सामग्री छुपाँईं", "revdelete-hide-name": "टारगेट आ पैरामीटर छिपाईं", - "revdelete-hide-comment": "सारांश सम्पादन", + "revdelete-hide-comment": "संपादन सारांश", "revdelete-hide-user": "सम्पादक के सदस्यनाम/आइ॰पी पता", "revdelete-hide-restricted": "डेटा के अउरी सदस्य सभ की साथै साथ प्रबंधक लोगन खातिर भी ढाँप दीं", "revdelete-radio-same": "(मत बदलीं)", @@ -844,10 +844,23 @@ "mergehistory-from": "स्रोत पन्ना:", "mergehistory-into": "लक्ष्य पन्ना:", "mergehistory-list": "विलय जोग्य संपादन इतिहास", + "mergehistory-go": "बिलय करे जोग संपादन देखावल जाव", "mergehistory-submit": "अवतरण विलय करीं", "mergehistory-empty": "कौनों अवतरण विलय नइखे कइल जा सकत।", "mergehistory-done": " $1 के $3 {{PLURAL:$3|अवतरण|अवतरण सभ}} सफलता से [[:$2]] में विलय भइल।", "mergehistory-fail": "इतिहास विलय करे में अक्षम, पन्ना आ एकर टाइम पैरामीटर चेक करीं।", + "mergehistory-fail-bad-timestamp": "समयमोहर अबैध बा।", + "mergehistory-fail-invalid-source": "स्रोत पन्ना अबैध बा।", + "mergehistory-fail-invalid-dest": "गंतब्य पन्ना अबैध बा।", + "mergehistory-fail-no-change": "इतिहास बिलय द्वारा कवनो रिवीजन के बिलय ना भइल। पन्ना आ टाइम पैरामीटर के दोबारा जाँच करीं।", + "mergehistory-fail-permission": "इतिहास बिलय खातिर पर्याप्त परमीशन नइखे।", + "mergehistory-fail-self-merge": "स्रोत आ गंतब्य पन्ना एकही बा।", + "mergehistory-fail-timestamps-overlap": "स्रोत रिवीजन या त गंतब्य रिवीजन के साथे ओभरलैप करत बा या बाद में आवत बा।", + "mergehistory-fail-toobig": "{{PLURAL:$1|रिवीजन|रिवीजन सभ}} के $1 के सीमा से ढेर रिवीजन घसकावे के पड़ी आ एही कारण इतिहास बिलय नइखे कइल जा सकत।", + "mergehistory-no-source": "स्रोत पन्ना $1 मौजूद नइखे।", + "mergehistory-no-destination": "गंतब्य पन्ना $1 मौजूद नइखे।", + "mergehistory-invalid-source": "स्रोत पन्ना एगो बैध टाइटिल होखे के चाहीं।", + "mergehistory-invalid-destination": "गंतब्य पन्ना एगो बैध टाइटिल होखे के चाहीं।", "mergehistory-autocomment": "[[:$1]] के [[:$2]] में विलय कइल गइल", "mergehistory-comment": "[[:$1]] के [[:$2]] में विलय कइल गइल: $3", "mergehistory-same-destination": "स्रोत आ लक्ष्य पन्ना एकही ना होखे सकत बा", @@ -857,10 +870,13 @@ "mergelogpagetext": "एक पन्ना इतिहास के दुसर पन्ना इतिहास में तुरंत विलय भइले के एगो सूची नीचे दिहल बा।", "history-title": "''$1'' के संशोधन इतिहास", "difference-title": "\"$1\" की अवतरण में अंतर", + "difference-title-multipage": "\"$1\" आ \"$2\" पन्ना सभ के बीच अंतर", + "difference-multipage": "(पन्नवन के बीच अंतर)", "lineno": "लाइन $1:", "compareselectedversions": "चुनल गइल संशोधन में अंतर देखीं", "showhideselectedversions": "चुनल गइल संशोधन के दृश्यता बदलीं", "editundo": "वापस लीं", + "diff-empty": "(कौनों अंतर नइखे)", "diff-multi-sameuser": "(एही सदस्य द्वारा कइल {{PLURAL:$1|बीच के एगो बदलाव|बीच के $1 बदलाव}} नइखे देखावल जात)", "searchresults": "खोज परिणाम", "searchresults-title": "$1 खातिर खोज परिणाम", @@ -879,17 +895,18 @@ "searchmenu-new": " ए विकि पर \"[[:$1]]\" नाँव के पन्ना बनाईं ! {{PLURAL:$2|0=|अपनी खोज से मिलल पन्ना भी देखीं|खोज के परिणाम भी देखीं।}}", "searchprofile-articles": "सामग्री पन्ना", "searchprofile-images": "मल्टीमीडिया", - "searchprofile-everything": "सब कुछ", - "searchprofile-advanced": "नामस्थान अनुसार", + "searchprofile-everything": "सबकुछ", + "searchprofile-advanced": "नाँवस्थान अनुसार", "searchprofile-articles-tooltip": "$1 में खोजीं", "searchprofile-images-tooltip": "फाइल खातिर खोज", "searchprofile-everything-tooltip": "सब जगह खोजीं (बातचीत पन्ना सहित)", - "searchprofile-advanced-tooltip": "विशेष नामस्थान में खोजीं", + "searchprofile-advanced-tooltip": "आपन जरूरत के नाँवस्थान में खोजीं", "search-result-size": "$1 ({{PLURAL:$2|1 शब्द|$2 शब्द}})", "search-redirect": "($1 से अनुप्रेषित)", "search-section": "(खंड $1)", "search-category": "(श्रेणी $1)", "search-suggest": "का राउर मतलब बा: $1", + "search-rewritten": "$1 खातिर रिजल्ट। एकरे जगह $2 खातिर खोज करीं।", "search-interwiki-caption": "साथी प्रोजेक्ट सभ से रिजल्ट", "search-interwiki-default": "$1 से परिणाम:", "search-interwiki-more": "(अउर)", @@ -898,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": "सन्दर्भ में खोजीं", @@ -906,19 +924,20 @@ "powersearch-togglenone": "कउनो ना", "search-external": "बाहरी खोज", "preferences": "वरीयता", - "mypreferences": "हमार सेटिंग", - "prefs-edits": "सम्पादन संख्या", - "prefsnologintext2": "आपन वरीयता में बदलाव लावे खातिर प्रवेश करीं।", - "prefs-skin": "त्वचा", - "skin-preview": "पूर्वावलोकन", - "datedefault": "वरीयता नईखे", - "prefs-user-pages": "सदस्य पन्ना", + "mypreferences": "पसंदसेटिंग", + "prefs-edits": "संपादन संख्या", + "prefsnologintext2": "आपन पसंदसेटिंग बदले खातिर खाता में प्रवेश करीं।", + "prefs-skin": "स्किन", + "skin-preview": "झलक", + "datedefault": "कौनो खास पसंद नइखे", + "prefs-labs": "लैब्स के चीज", + "prefs-user-pages": "प्रयोगकर्ता पन्ना", "prefs-personal": "प्रयोगकर्ता प्रोफाइल", "prefs-rc": "हाल के बदलाव", "prefs-watchlist": "धियानसूची", "prefs-editwatchlist": "धियानसूची संपादन", - "prefs-editwatchlist-label": "अपनी धियानसूची के चीज संपादित करीं:", - "prefs-editwatchlist-edit": "अपनी धियानसूची के टाइटिल देखीं आ हटाईं", + "prefs-editwatchlist-label": "आपन धियानसूची में सामिल एंट्री संपादित करीं:", + "prefs-editwatchlist-edit": "आपन धियानसूची में सामिल टाइटिल देखीं आ हटाईं", "prefs-editwatchlist-raw": "टटका धियानसूची संपादित करीं", "prefs-editwatchlist-clear": "आपन धियानसूची साफ करीं", "prefs-watchlist-days": "धियानसूची में देखावे खातिर दिन", @@ -936,12 +955,13 @@ "restoreprefs": "सगरी डिफाल्ट सेटिंग पहिले जइसन करीं (सगरी खंड में)", "prefs-editing": "संपादन", "searchresultshead": "खोज", + "stub-threshold": "आधार कड़ी फारमेटिंग($1) खातिर थ्रेशोल्ड:", "stub-threshold-sample-link": "नमूना", "stub-threshold-disabled": "अक्षम", - "recentchangesdays": "हाल में भइल परिवर्तन में देखावे खातिर दिन:", + "recentchangesdays": "हाल के बदलाव में देखावे खातिर दिन:", "recentchangesdays-max": "अधिकतम $1{{PLURAL:$1|दिन}}", "recentchangescount": "डिफाल्ट में देखावे खातिर संपादन संख्या:", - "prefs-help-recentchangescount": "एम्में हाल में भइल परिवर्तन, पन्ना इतिहास, आ लॉग सब बाटे।", + "prefs-help-recentchangescount": "एम्में हाल में भइल बदलाव, पन्ना के इतिहास, आ लॉग सब बाटे।", "savedprefs": "राउर वरीयताएँ सुरक्षित कर दिहल गईल।", "timezonelegend": "समय जोन:", "localtime": "लोकल समय:", @@ -1005,23 +1025,40 @@ "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|प्रयोगकर्ता}} मंडली सहेजीं", + "userrights-groupsmember": "सदस्यता हासिल बा:", + "userrights-groupsmember-auto": "निहित सदस्यता हासिल बा:", + "userrights-groups-help": "ई प्रयोगकर्ता कवना मंडली में रहिहें ई चीज आप बदल सकत बानी:\n* सही के निसान वाला बक्सा के मतलब बा एह मंडली में ई शामिल बाने।\n* बिना सही के निसान वाला बक्सा के मतलब बा एह मंडली में ई शामिल नइखें।\n* एक ठो * के चीन्हा अइसन अधिकार के सूचित करे ला जवना के आप एक बेर दे देइब त हटा नइखीं सकत, या एकरे ठीक उल्टा भी।\n* एक ठो # के चीन्हा सूचित करे ला कि एह मंडली के सदस्यता के खतम होखे के समय आप पाछे (बाद में) क सकत बानी लेकिन आगे नइखीं ले आ सकत।", "userrights-reason": "कारण:", - "group": "मंडली (ग्रुप):", + "userrights-no-interwiki": "अन्य विकि सभ पर सदस्य मंडली के संपादन करे खातिर रउवाँ लगे परमीशन नइखे।", + "userrights-changeable-col": "जवन मंडली आप बदल सकत बानी", + "userrights-unchangeable-col": "जवन मंडली आप नइखीं बदल सकत", + "userrights-expiry-current": "$1 के खतम होखी", + "userrights-expiry-none": "एक्सपायर ना होखी", + "userrights-expiry": "एक्सपायर हो जाई:", + "userrights-expiry-existing": "वर्तमान में एकरा एक्सपायर होखे के टाइम बा: $3, $2", + "userrights-expiry-othertime": "अन्य समय:", + "userrights-expiry-options": "1 दिन:1 दिन,1 हप्ता:1 हप्ता,1 महीना:1 महीना,3 महीना:3 महीना,6 महीना:6 महीना,1 बरिस:1 बरिस", + "userrights-invalid-expiry": "मंडली \"$1\" खातिर एक्सपायरी समय अबैध बा।", + "group": "मंडली:", "group-user": "सदस्य", - "group-autoconfirmed": "खुद परीक्षित सदस्य", + "group-autoconfirmed": "सोतःपरमाणित प्रयोगकर्ता", "group-bot": "बॉट", "group-sysop": "प्रबंधक", "group-bureaucrat": "ब्यूरोक्रेट", "group-suppress": "सप्रेसर", "group-all": "(सब)", "group-user-member": "{{GENDER:$1|सदस्य}}", - "group-autoconfirmed-member": "{{GENDER:$1|खुद अस्थापित सदस्य}}", + "group-autoconfirmed-member": "{{GENDER:$1|सोतःपरमाणित प्रयोगकर्ता}}", "group-bot-member": "{{GENDER:$1|बॉट}}", "group-sysop-member": "{{GENDER:$1|प्रबंधक}}", "group-bureaucrat-member": "{{GENDER:$1|प्रशासक}}", "group-suppress-member": "{{GENDER:$1|सप्रेस}}", "grouppage-user": "{{ns:project}}:सदस्य सभ", - "grouppage-autoconfirmed": "{{ns:project}}:खुद अस्थापित सदस्य सभ", + "grouppage-autoconfirmed": "{{ns:project}}:सोतःपरमाणित प्रयोगकर्ता", "grouppage-bot": "{{ns:project}}:बॉट सभ", "grouppage-sysop": "{{ns:project}}:प्रबंधक सभ", "grouppage-bureaucrat": "{{ns:project}}:प्रशासक सभ", @@ -1031,7 +1068,7 @@ "right-createpage": "पन्ना बनाईं (बातचीत पन्ना की अलावा)", "right-createtalk": "बातचीत पन्ना बनाईं", "right-createaccount": "नया सदस्य खाता बनाईं", - "right-minoredit": "छोट संपादन चिह्नित करीं", + "right-minoredit": "संपादन छोट चिह्नित करीं", "right-move": "पन्ना स्थानांतरण करीं", "right-move-subpages": "पन्नवन के उनहन की उपपन्नवन की संघे स्थानांतरित करीं", "right-move-rootuserpages": "मूल (root) सदस्य पन्नवन के स्थानांतरित करीं", @@ -1039,14 +1076,14 @@ "right-movefile": "फाइल सब स्थानांतरित करीं", "right-suppressredirect": "स्थानांतरण करत घरी मूल पन्ना से पुनर्निदेश मत बनाईं", "right-upload": "फाइल अपलोड करीं", - "right-reupload": "पुरान फाइल की ऊपर नया लादीं", - "right-reupload-own": "खुदे लादल फाइल पर नया फाइल लादीं", - "right-reupload-shared": "लोकल में साझा मीडिया भण्डार के फाइल सभ के ओवरराइड करीं", + "right-reupload": "मौजूद फाइल पर ओभरराइट करीं", + "right-reupload-own": "खुद के अपलोड कइल फाइल ओभरराइट करीं", + "right-reupload-shared": "साझा मीडिया भंडार के फाइल सभ के लोकल ओवरराइड करीं", "right-upload_by_url": "यूआरयल से फाइल अपलोड करीं", "right-purge": "बिना पुछले कौनों पन्ना के साइट कैश के फिर लोड करीं", - "right-autoconfirmed": "आइ पी आधारित रेट के सीमा से प्रभावित ना होखे", + "right-autoconfirmed": "आइपी-आधारित रेट सीमा से ना परभावित", "right-bot": "ऑटोमेटेड प्रोसेस मानल जाय", - "right-writeapi": "API लेखन के इस्तेमाल", + "right-writeapi": "एपीआइ लेखन के इस्तेमाल", "right-delete": "पन्ना हटाईं", "right-bigdelete": "लंबा इतिहास वाला पन्ना हटाईं", "right-deletelogentry": "लॉग आइटम के हटाईं या वापस करीं", @@ -1086,7 +1123,9 @@ "action-movefile": "ई फाइल स्थानांतरित करीं", "action-upload": "इ फाइल अपलोड करीं", "action-reupload": "पहिले से मौजूद ए फाइल पर दूसर लादीं", - "action-delete": "ई पन्ना के मिटाईं", + "action-delete": "ए पन्ना के मिटाईं", + "action-deleterevision": "रिवीजन मेटाईं", + "action-deletelogentry": "लॉग के एंट्री मेटाईं", "action-unwatchedpages": "ध्यानसूची में जवन पन्ना नइखे ओकर सूची देखीं", "enhancedrc-history": "इतिहास", "recentchanges": "हाल के बदलाव", @@ -1156,7 +1195,7 @@ "rcshowhidecategorization": "$1 पन्ना श्रेणीकरण", "rcshowhidecategorization-show": "देखावल जाय", "rcshowhidecategorization-hide": "छिपावल जाय", - "rclinks": "पछिला $2 दिन में भइल $1 बदलाव देखावल जाय", + "rclinks": "पछिला $2 दिन में भइल $1 सभसे ताजा बदलाव देखावल जाय", "diff": "अंतर", "hist": "इतिहास", "hide": "छिपावल जाय", @@ -1176,7 +1215,7 @@ "recentchangeslinked-feed": "संबंधित बदलाव", "recentchangeslinked-toolbox": "संबंधित बदलाव", "recentchangeslinked-title": "\"$1\" संबंधी बदलाव", - "recentchangeslinked-summary": "ई एगो पन्ना बिसेस से (या एगो श्रेणी बिसेस की सदस्य से) जुड़ल पन्नवन में हाल में भइल बदलाव के एगो लिस्ट हवे। \n[[Special:Watchlist|आपकी धियानसूची]] के पन्ना सब मोट अच्छर में लउकत बाटे।", + "recentchangeslinked-summary": "ई एगो पन्ना बिसेस से (या एगो श्रेणी बिसेस की सदस्य से) जुड़ल पन्नवन में हाल में भइल बदलाव के एगो लिस्ट हवे। \n[[Special:Watchlist|आपकी धियानसूची]] के पन्ना सब मोट अच्छर में लउकत बाने।", "recentchangeslinked-page": "पन्ना नाँव:", "recentchangeslinked-to": "एकरे बजाय ए पन्ना से जुड़ल पन्नवन मे भइल बदलाव देखावल जाय", "recentchanges-page-added-to-category": "[[:$1]] श्रेणी में जोड़ल गइल", @@ -1184,7 +1223,7 @@ "uploadlogpage": "लदनी (अपलोड) के लॉग", "uploadlogpagetext": "नीचे हाल में अपलोड करल गइल फाइलन के सूची बा।\nदृश्य अवलोकन खातिर [[Special:NewFiles|नया फाइलन के गैलरी]] देखीं।", "filename": "फाइलनाँव", - "filedesc": "छोट विवरण (सारांश)", + "filedesc": "सारांश", "fileuploadsummary": "सारांश:", "filereuploadsummary": "फाइल बदलाव:", "filestatus": "कापीराइट स्टेटस", @@ -1247,7 +1286,7 @@ "listfiles_count": "संस्करण", "listfiles-latestversion": "वर्तमान संस्करण", "file-anchor-link": "फाइल", - "filehist": "पन्ना के इतिहास", + "filehist": "फाइल के इतिहास", "filehist-help": "ओ समय ई फाइल कइसन लउके ई देखे खातिर कौनों तारीख/समय पर क्लिक करीं।", "filehist-deleteall": "सब मिटाईं", "filehist-deleteone": "मिटाईं", @@ -1256,7 +1295,7 @@ "filehist-thumb": "चिप्पी रूप", "filehist-thumbtext": "$1 ले के संस्करण के चिप्पी रूप।", "filehist-nothumb": "बिन थम्बनेल", - "filehist-user": "सदस्य", + "filehist-user": "प्रयोगकर्ता", "filehist-dimensions": "आयाम", "filehist-filesize": "फाईल के आकार", "filehist-comment": "टिप्पणी", @@ -1273,7 +1312,7 @@ "shared-repo-from": "$1 से", "shared-repo": "एगो आवटिंत भंडार गृह", "shared-repo-name-wikimediacommons": "विकिमीडिया कॉमन्स", - "upload-disallowed-here": "आप ए फाइल पर ओवरराइट ना कर सकत बानीं", + "upload-disallowed-here": "आप ए फाइल पर ओवरराइट ना कर सकत बानीं।", "filerevert": "पुन: निर्देशित $1", "filerevert-legend": "पुन: निर्देशित फाईल", "filerevert-comment": "कारण:", @@ -1284,9 +1323,9 @@ "filedelete-success": "'''$1''' के मिटा दिहल गईल बा।", "filedelete-nofile": "'''$1''' उपलब्ध नईखे।", "mimesearch": "MIME खोज", - "unwatchedpages": "ध्यान न दिहल गइल पन्ना", - "listredirects": "पुनर्निर्देशन के सूची", - "unusedtemplates": "बिना प्रयोग के खाँचा", + "unwatchedpages": "बिना धियानसूची में जोड़ल पन्ना", + "listredirects": "अनुप्रेषण पन्ना सभ के लिस्ट", + "unusedtemplates": "बिना इस्तेमाल टेम्पलेट", "randompage": "अट्रेंडम पन्ना", "randomincategory": "श्रेणी में अनियमित पन्ना", "randomincategory-nopages": "[[:Category:$1|$1]] श्रेणी में कउनो पन्ना नइखे।", @@ -1330,7 +1369,7 @@ "nimagelinks": "Used on $1 {{PLURAL:$1|पन्ना|पन्ना सभ}}", "ntransclusions": "used on $1 {{PLURAL:$1|पन्ना|पन्ना सभ}}", "specialpage-empty": "एह रिपोर्ट खातिर कौनों रिजल्ट नइखे", - "lonelypages": "अनाथ पन्ना", + "lonelypages": "अकेल छूटल पन्ना", "lonelypagestext": "ई पन्ना कुल कौनों दूसर पन्ना से नइखें जुड़ल न कौनों में ट्रांसक्लूड बाड़ें", "uncategorizedpages": "बिना श्रेणी के पन्ना", "uncategorizedcategories": "बिना श्रेणी के श्रेणी", @@ -1338,11 +1377,11 @@ "uncategorizedtemplates": "बिना श्रेणी के टेम्पलेट", "unusedcategories": "बिना इस्तेमाल श्रेणी", "unusedimages": "बिना इस्तेमाल फाइल", - "wantedcategories": "श्रेणी चाहत बा", - "wantedpages": "पन्ना चाहत बा", - "wantedfiles": "जरुरत के फाईलसभ", + "wantedcategories": "जरूरत के श्रेणी सभ", + "wantedpages": "जरूरत के पन्ना सभ", + "wantedfiles": "जरूरत के फाइल सभ", "wantedfiletext-nocat-noforeign": "ई फाइल सभ इस्तेमाल में बाटे बाकी मौजूद नइखे।", - "wantedtemplates": "टेम्पलेट जिनहन के जरूरत बा", + "wantedtemplates": "जरूरत के टेम्पलेट सब", "mostlinked": "पन्ना जहाँ सभसे ढेर कड़ी आ के जुड़त बा", "mostlinkedcategories": "सबसे अधिक से जुड़ल श्रेणी", "mostlinkedtemplates": "सभसे ढेर ट्रांसक्लूड पन्ना", @@ -1350,11 +1389,11 @@ "mostimages": "पन्ना जिनहन पर सभसे ढेर फाइल बा", "mostinterwikis": "पन्ना जिनहन में सभसे ढेर इंटरविकि कड़ी बा", "mostrevisions": "सभसे ढेर बदलाव इतिहास वाला पन्ना", - "prefixindex": "सगरी पन्ना जिनहन में उपसर्ग बा", + "prefixindex": "सुरुआती अक्षर अनुसार पन्ना खोजीं", "prefixindex-namespace": "सगरी पन्ना जिनहन में उपसर्ग ($1 नाँवस्थान) बा", "prefixindex-submit": "देखीं", - "shortpages": "छोट पन्ना", - "longpages": "लमहर पन्ना", + "shortpages": "सभसे छोट पन्ना सब", + "longpages": "सभसे लमहर पन्ना सब", "deadendpages": "अंतिम छोर पर छूटल पन्ना", "protectedpages": "सुरक्षित पन्ना", "protectedpages-noredirect": "अनुप्रेषण छिपाईं", @@ -1378,10 +1417,12 @@ "usereditcount": "$1 {{PLURAL:$1|संपादन|संपादन सभ}}", "newpages": "नया पन्ना", "newpages-username": "प्रयोगकर्तानाँव:", - "ancientpages": "पुरान पन्ना", + "ancientpages": "सबसे पुरान संशोधन वाला पन्ना", "move": "स्थानांतरण", "movethispage": "एह पन्ना के स्थानांतरण करीं", - "suppress": "ओवरसाइटर", + "pager-newer-n": "{{PLURAL:$1|नया 1|नया $1}}", + "pager-older-n": "{{PLURAL:$1|पुरान 1|पुरान $1}}", + "suppress": "सप्रेस", "apihelp": "एपीआइ (API) मदद", "apihelp-no-such-module": "मॉड्युल $1 ना मिलल।", "booksources": "किताबी स्रोत", @@ -1414,6 +1455,7 @@ "watch": "धियानसूची में डालीं", "watchthispage": "ई पन्ना ध्यानसूची में डालीं", "unwatch": "धियानसूची से हटाईं", + "wlshowlast": "पछिला $1 घंटा $2 दिन देखावल जाय", "watching": "ध्यानसूची में जाते हुए", "unwatching": "ध्यानसूची से हटते हुए", "created": "बनावल गईल", @@ -1423,6 +1465,7 @@ "rollbacklinkcount": "रोलबैक $1 {{PLURAL:$1|संपादन|संपादन सब}}", "protectlogpage": "सुरक्षा लॉग", "protectlogtext": "नीचे पन्ना सुरक्षा में भइल बदलावकुल के सूची बा।\nहाल में सुरक्षित पन्नन के सूची खातिर [[Special:ProtectedPages|सुरक्षित पन्नन के सूची]] देखीं।", + "protectedarticle": "\"[[$1]]\" सुरक्षित कइल गइल", "restriction-move": "स्थानांतरण", "restriction-create": "बनावे पर", "restriction-upload": "अपलोड", @@ -1434,14 +1477,15 @@ "undeletelink": "देखीं/बहाल करीं", "namespace": "नाँवस्थान:", "invert": "चुनाव पलटीं", - "tooltip-invert": "चुनल गइल नामस्थान की संघे बदलाव छिपावे खातिर ए बाकस के चिन्हित करीं (सम्बन्धित नामस्थान के भी, अगर चिन्हित होखे)", - "namespace_association": "संबंधित नामस्थान", - "tooltip-namespace_association": "चुनल गइल नामस्थान से जुड़ल बातचीत या बिसय नामस्थान के शामिल करे खातिर ए बाकस के चिन्हित करीं", + "tooltip-invert": "चुनल गइल नाँवस्थान के बदलाव छिपावे खातिर ए बाकस के चिन्हित करीं (संबंधित नाँवस्थान के भी, अगर चिन्हित होखे)", + "namespace_association": "संबंधित नाँवस्थान", + "tooltip-namespace_association": "चुनल गइल नाँवस्थान से जुड़ल बातचीत या बिसय नाँवस्थान के शामिल करे खातिर ए बाकस के चिन्हित करीं", "blanknamespace": "(मुख्य)", - "contributions": "{{GENDER:$1|सदस्य}} योगदान", + "contributions": "{{GENDER:$1|प्रयोगकर्ता}} के योगदान", "contributions-title": " $1 खातिर प्रयोगकर्ता योगदान", - "mycontris": "हमार योगदान", + "mycontris": "योगदान", "anoncontribs": "योगदान", + "contribsub2": "{{GENDER:$3|$1}} ($2) खातिर", "nocontribs": "ई मानदंड से मिलत जुलत कौनो बदलाव ना मिलल।", "uctop": "(वर्तमान)", "month": "महीना से (आ ओ से पहिले):", @@ -1451,18 +1495,23 @@ "sp-contributions-newbies-title": "नया खाता खातिर प्रयोगकर्ता के योगदान।", "sp-contributions-blocklog": "ब्लॉक लॉग", "sp-contributions-deleted": "नष्ट प्रयोगकर्ता के योगदान।", + "sp-contributions-uploads": "अपलोड", "sp-contributions-logs": "लॉग", "sp-contributions-talk": "बातचीत", "sp-contributions-userrights": "प्रयोगकर्ता अधिकार प्रबन्धन", "sp-contributions-blocked-notice": "ई प्रयोगकर्ता के ई समय निष्क्रीय करल गईल बा।\nनविनतम नष्ट लौग प्रविष्टी उद्धरण खातिर निचे दिहल बा:", + "sp-contributions-search": "योगदान खातिर खोज करीं", + "sp-contributions-username": "आइपी पता भा प्रयोगकर्तानाँव:", + "sp-contributions-newonly": "खाली उहे संपादन देखीं जेकरा से नया पन्ना बनल होखे", + "sp-contributions-submit": "खोजीं", "whatlinkshere": "इहाँ का जुड़ल बा", "whatlinkshere-title": "पन्ना जेवन \"$1\" से जुड़ल बा", "whatlinkshere-page": "पन्ना:", - "linkshere": "नीचे के सब पन्ना '''[[:$1]]''' से जुड़ल बा:", + "linkshere": "[[:$1]] से नीचे दिहल पन्ना जुड़ल बाने:", "nolinkshere": "'''[[:$1]]''' से कौनो पन्ना नईखे जुड़ल।", "nolinkshere-ns": "चुनल गईल सन्दर्भ में '''[[:$1]]''' से कौनो पन्ना ना जुड़ेला।", "isredirect": "अनुप्रेषित पन्ना", - "istemplate": "ट्रांस्क्ल्यूजन", + "istemplate": "ट्रांस्क्लूजन", "isimage": "फाइल कड़ी", "whatlinkshere-prev": "{{PLURAL:$1|पछिला|पछिला $1}}", "whatlinkshere-next": "{{PLURAL:$1|अगिला|अगिला $1}}", @@ -1470,12 +1519,13 @@ "whatlinkshere-hideredirs": "$1 अनुप्रेषण", "whatlinkshere-hidetrans": "$1 ट्रांसक्लूजन", "whatlinkshere-hidelinks": "$1 कड़ी", - "whatlinkshere-hideimages": "$1 फ़ाइल लिंक", + "whatlinkshere-hideimages": "$1 फाइल कड़ी", "whatlinkshere-filters": "छननी", "blockip": "{{GENDER:$1|सदस्य}} अवरोधित करीं", "ipboptions": "२ घंटे:2 hours,१ दिन:1 day,३ दिन:3 days,१ हफ्ता:1 week,२ हफ्ते:2 weeks,१ महिना:1 month,३ महिने:3 months,६ महिने:6 months,१ साल:1 year,हमेशा खातिर:infinite", "blocklist": "अवरोधित प्रयोगकर्तासभ", - "blocklink": "रोक दीं", + "infiniteblock": "अनिश्चितकाल", + "blocklink": "रोक लगाईं", "unblocklink": "ताला खोलीं", "change-blocklink": "ब्लॉक बदलीं", "contribslink": "योगदान", @@ -1484,7 +1534,7 @@ "movelogpage": "स्थानांतरण लॉग", "revertmove": "पिछलका स्थिति", "export": "पन्ना निर्यात करीं", - "thumbnail-more": "बढ़ाईं", + "thumbnail-more": "फइलाईं", "filemissing": "फाईल गायब", "import": "पन्ना आयात करीं", "importinterwiki": "दुसरा विकि से आयात करीं", @@ -1511,64 +1561,69 @@ "import-logentry-upload-detail": "$1 {{PLURAL:$1|संशोधन|संशोधनसभ}} लावल गइल", "tooltip-pt-userpage": "{{GENDER:|राउर सदस्य}} पन्ना", "tooltip-pt-mytalk": "{{GENDER:|राउर}} बातचीत पन्ना", - "tooltip-pt-preferences": "{{GENDER:|राउर}} पसंद", + "tooltip-pt-preferences": "{{GENDER:|राउर}} पसंद के सेटिंग", "tooltip-pt-watchlist": "राउर धियानसूची में पन्ना सब के लिस्ट", "tooltip-pt-mycontris": "{{GENDER:|राउर}} योगदान के एगो लिस्ट", - "tooltip-pt-login": "रउआ के खाता मे प्रवेश (लॉग इन) खातिर उत्साहित कइल जात बा, बाकि ई जरूरी नइखे", + "tooltip-pt-login": "रउआँ से खाता मे प्रवेश करे के आगरह बा; हालाँकि, ई जरूरी नइखे", "tooltip-pt-logout": "लॉग आउट", - "tooltip-pt-createaccount": "हमनी के सुझाव बा की आप खाता बनाईं आ लॉग इन करीं, बाकी ई जरूरी नइखे", - "tooltip-ca-talk": "सामग्री पन्ना की बारे में बात-चीत", + "tooltip-pt-createaccount": "हमनी के सलाह बा की आप खाता बनाईं आ खाता में प्रवेश करीं; हालाँकि, ई जरूरी नइखे", + "tooltip-ca-talk": "सामग्री पन्ना की बारे में बातचीत", "tooltip-ca-edit": "ए पन्ना के संपादन करीं", "tooltip-ca-addsection": "एगो नया खंड शुरु करीं", - "tooltip-ca-viewsource": "ए पन्ना के सुरक्षित कइ दिहल गइल बा। आप एकर स्रोत देख सकत बानी।", + "tooltip-ca-viewsource": "ई पन्ना सुरक्षित कइल गइल बा। आप एकर स्रोत देख सकत बानी।", "tooltip-ca-history": "ए पन्ना के पछिला संशोधन", "tooltip-ca-protect": "इ पन्ना के संरक्षित करीं।", "tooltip-ca-unprotect": "ई पन्ना के सुरक्षा बदलीं।", "tooltip-ca-delete": "ई पन्ना मिटाईं", - "tooltip-ca-move": "ए पन्ना के स्थानांतरण करीं", + "tooltip-ca-move": "एह पन्ना के स्थानांतरण करीं", "tooltip-ca-watch": "ए पन्ना के अपनी धियानसूची में जोड़ीं", - "tooltip-search": "{{SITENAME}} खोजीं", - "tooltip-search-go": "अगर पन्ना मौजूद होखे त ठीक एही नाँव की पन्ना पर जाईं", - "tooltip-search-fulltext": "ए शब्द/वाक्य खातिर पन्ना खोजीं", + "tooltip-ca-unwatch": "ई पन्ना अपना धियानसूची से हटाईं", + "tooltip-search": "{{SITENAME}} में खोजीं", + "tooltip-search-go": "अगर ठीक एही नाँव के पन्ना मौजूद होखे तब ओहपर जाईं", + "tooltip-search-fulltext": "अइसन पन्ना खोजीं जिनहन में ई पाठ (शब्द भा वाक्य) बाटे", "tooltip-p-logo": "मुख्य पन्ना पर जाईं", "tooltip-n-mainpage": "मुख्य पन्ना पर जाईं", "tooltip-n-mainpage-description": "मुख्य पन्ना पर जाईं", "tooltip-n-portal": "प्रोजेक्ट की बारे में, रउआँ का कर सकत बानी, कौनों चीज कहाँ खोजब", - "tooltip-n-currentevents": "वर्तमान के घटना पर पृष्ठभूमी जानकारी खोजीं", - "tooltip-n-recentchanges": "विकि पर तुरंत भइल बदलाव के लिस्ट", + "tooltip-n-currentevents": "हाल में घटित घटना सभ से जुड़ल जानकारी देखल जाय", + "tooltip-n-recentchanges": "एह विकि पर हाल में भइल बदलाव सभ के लिस्ट", "tooltip-n-randompage": "कौनों एगो पन्ना अट्रेंडम लोड करीं", - "tooltip-n-help": "जगह पता लगावे खातिर", + "tooltip-n-help": "जानकारी हासिल करे खातिर जगह", "tooltip-t-whatlinkshere": "इहाँ जुड़े वाला सब विकि पन्नवन के लिस्ट", "tooltip-t-recentchangeslinked": "ए पन्ना से जुड़ल पन्नवन पर तुरंत भइल बदलाव", "tooltip-feed-atom": "ए पन्ना खातिर एटम फीड", "tooltip-t-contributions": "{{GENDER:$1|एह सदस्य}} के योगदान के एक ठो लिस्ट", "tooltip-t-upload": "फाइल अपलोड करीं", - "tooltip-t-specialpages": "खास पन्नवन के लिस्ट", - "tooltip-t-print": "ए पन्ना के छापे लायक संस्करण", + "tooltip-t-specialpages": "सगरी खास पन्नवन के लिस्ट", + "tooltip-t-print": "ए पन्ना के छापे लायक वर्शन", "tooltip-t-permalink": "ए पन्ना के संशोधन खातिर स्थायी कड़ी।", "tooltip-ca-nstab-main": "सामग्री पन्ना देखीं", - "tooltip-ca-nstab-user": "सदस्य-पन्ना देखीं", + "tooltip-ca-nstab-user": "प्रयोगकर्ता पन्ना देखीं", "tooltip-ca-nstab-special": "ई एगो खास पन्ना ह, एकर संपादन ना हो सकेला", + "tooltip-ca-nstab-project": "प्रोजेक्ट पन्ना देखीं", "tooltip-ca-nstab-image": "फाइल के पन्ना देखीं", "tooltip-ca-nstab-template": "टेम्पलेट देखीं", "tooltip-ca-nstab-category": "श्रेणी के पन्ना देखीं", - "tooltip-save": "बदलाव के सहेजीं", - "tooltip-preview": "आपन द्वारा कियल गइल बदलाव के देखीं, संजोये से पहले ईका इस्तेमाल करीं!", - "tooltip-diff": "देखाईं कि पाठ में आप कवन बदलाव कइलीं", - "tooltip-rollback": "\"वापिस लीं\" ए पन्ना के पछिला संपादन करे वाला के कइल बदलाव एकही क्लिक में हटा देला", - "tooltip-undo": "\"पलटीं\" ए संपादन के पलट देला आ संपादन फार्म के नमूना (प्रीव्यू) मोड में खोलेला। ई छोट विवरण (सारांश) में कारण जोड़े के सुबिधा देला।", - "tooltip-summary": "अपनी संपादन के छोट विवरण (सारांश) लिखीं", + "tooltip-save": "जवन बदलाव कइलीं ओकरा के सहेजीं", + "tooltip-preview": "जवन बदलाव कइलीं ओकर झलक देखीं। सहेजे से पहिले एकर इस्तेमाल करे के आगरह बा।", + "tooltip-diff": "देखीं कि पाठ में आप का बदलाव कइले बानी", + "tooltip-rollback": "\"रोलबैक\" एह पन्ना पर सभसे अंतिम संपादन करे वाला संपादक के कइल बदलाव(सभ) एकही क्लिक में वापस लवटा देला", + "tooltip-undo": "\"वापस लीं\" ए संपादन के पलट देला आ संपादन फार्म के झलक देखावे वाला मोड में खोलेला। ई छोट सारांश में कारण जोड़े के मोका देला।", + "tooltip-summary": "संछेप में एगो सारांश लिखीं", "simpleantispam-label": "स्पैम-बिरोधी रोक (Anti-spam check)\nएके मत भरीं!", - "pageinfo-toolboxlink": "पन्ना के जानकारी", + "pageinfo-length": "पन्ना लंबाई (बाइट में)", + "pageinfo-subpages-name": "एह पन्ना के उपपन्ना संख्या", + "pageinfo-magic-words": "जादुई शब्द {{{{PLURAL:$1||शब्द|शब्द}}}} ($1)", + "pageinfo-toolboxlink": "पन्ना से जुड़ल जानकारी", "previousdiff": "← पुरान संपादन", "nextdiff": "नया संपादन →", "file-info-size": "$1 × $2 पिक्सेल, फाइल साइज: $3, MIME टाइप: $4", "file-nohires": "ए से उच्च गुणवत्ता उपलब्ध नइखे।", - "svg-long-desc": "एसवीजी फाइल, नॉमिनल्ली $1 x $2 पिक्सल्स, फाइल के आकार $3", + "svg-long-desc": "एसवीजी फाइल, नॉमिनली $1 x $2 पिक्सल, फाइल के आकार: $3", "show-big-image": "ओरिजनल फाइल", "show-big-image-preview": "ए नमूना के साइज: $1.", "show-big-image-other": "अउरी {{PLURAL:$2|resolution|रिजोल्यूशन}}: $1.", - "show-big-image-size": "$1 × $2 पिक्सल", + "show-big-image-size": "$1 × $2 पिक्सेल", "file-info-gif-looped": "लूप्ड", "file-info-gif-frames": "$1 {{PLURAL:$1|फ्रेम}}", "file-info-png-looped": "लूप्ड", @@ -1578,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": "अवयव प्रति बीट", @@ -1603,11 +1659,15 @@ "namespacesall": "सगरी", "monthsall": "सगरी", "confirmemail": "ईमेल पता कन्फर्म करीं", + "imgmultipagenext": "अगिला पन्ना →", + "imgmultigo": "जाईं!", + "imgmultigoto": "$1 पन्ना पर जाईं", "autoredircomment": "पन्ना [[$1]] पर अनुप्रेषित कइल गइल", "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|बात करीं]])", "version-no-ext-name": "[अज्ञात नाम]", "fileduplicatesearch": "नकल प्रति फाइल खोजीं", "specialpages": "खास पन्ना", + "specialpages-group-maintenance": "रखरखाव रिपोर्ट", "specialpages-group-login": "प्रवेश / खाता निर्माण", "specialpages-group-changes": "तुरंत भइल परिवर्तन आ लॉगसभ", "specialpages-group-media": "मीडिया रिपोर्ट आ अपलोडसभ", @@ -1621,7 +1681,8 @@ "revdelete-unrestricted": "प्रबंधक पर से प्रतिबंध समाप्त", "logentry-move-move": "$1 पन्ना $3 के $4 पर {{GENDER:$2|स्थानांतरण कइलें}}", "logentry-newusers-create": "खाता $1 {{GENDER:$2|बनावल गइल}}", - "searchsuggest-search": "खोजीं", + "logentry-upload-upload": "$1 {{GENDER:$2|अपलोड कइलें}} $3", + "searchsuggest-search": "{{SITENAME}} में खोजीं", "expandtemplates": "टेम्पलेट बिस्तार", "mediastatistics": "मीडिया सांख्यिकी" } diff --git a/languages/i18n/bn.json b/languages/i18n/bn.json index f86f88f215..8e1aa35692 100644 --- a/languages/i18n/bn.json +++ b/languages/i18n/bn.json @@ -64,13 +64,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": "পাতার শ্রেণীবদ্ধকরণ লুকিয়ে রাখা হোক", @@ -676,7 +677,7 @@ "sitejspreview": "'''মনে রাখুন আপনি আপনার ব্যবহারকারী জাভাস্ক্রিপ্ট কেবলমাত্র প্রাকদর্শন করছেন।'''\n'''এটা এখনও সংরক্ষণ করা হয়নি!'''", "userinvalidcssjstitle": "'''সতর্কীকরণ:''' \"$1\" নামে কোন আবরণ নেই। মনে রাখবেন, পছন্দমাফিক .css এবং .js পাতাগুলি ছোট হাতের শিরোনাম ব্যবহার করে, যেমন {{ns:user}}:Foo/vector.css; কিন্তু এরকম শিরোনাম নয়: {{ns:user}}:Foo/Vector.css", "updated": "(হালনাগাদ)", - "note": "'''নোট:'''", + "note": "টীকা:", "previewnote": "'''খেয়াল করুন, এটি একটি প্রাকদর্শন মাত্র।'''\nআপনার পরিবর্তন এখনও সংরক্ষণ করা হয়নি!", "continue-editing": "সম্পাদনা করুন", "previewconflict": "এই প্রাকদর্শনটি সম্পাদনা ক্ষেত্রের উপরের অংশটির টেক্সট সংরক্ষণ করলে যেরকম দেখাবে, তা দেখাচ্ছে।", @@ -692,7 +693,6 @@ "explainconflict": "আপনি পাতাটি সম্পাদনা শুরু করার পর অন্য কেউ পাতাটিতে পরিবর্তন এনেছে।\nপাঠ্য এলাকার উপরের অংশে বর্তমানে পাঠ যেভাবে আছে তা দেখানো হয়েছে।\nআপনার পরিবর্তনগুলি পাঠ্য এলাকার নিচের অংশে দেখানো হয়েছে।\nআপনাকে আপনার পরিবর্তনগুলি বর্তমানে বিদ্যমান পাঠ্যের সাথে মিলিয়ে দিতে হবে।\nআপনি \"$1\" চাপলে শুধুমাত্র পাঠ্য এলাকার উপরের অংশটি সংরক্ষিত হবে।", "yourtext": "আপনার লেখা বিষয়বস্তু", "storedversion": "সংরক্ষিত সংস্করণ", - "nonunicodebrowser": "'''সতর্কীকরণ: আপনার ব্রাউজার ইউনিকোড-বন্ধুভাবাপন্ন নয়। আপনি যাতে বিপদ ছাড়াই পাতা সম্পাদনা করতে পারেন, সে জন্য সমাধান আছে: অ-আস্কি ক্যারেক্টারগুলি হেক্সাডেসিমাল কোড হিসেবে দেখানো হবে।'''", "editingold": "'''সতর্কীকরণ: আপনি এই পাতাটির একটি পুরনো সংস্করণ সম্পাদনা করছেন।\nযদি আপনি এটি সংরক্ষণ করেন, তবে ঐ সংস্করণের পরবর্তী অন্য সব সংশোধন হারিয়ে যাবে।'''", "yourdiff": "পার্থক্য", "copyrightwarning": "অনুগ্রহ করে লক্ষ্য করুন {{SITENAME}}-তে সমস্ত অবদান $2-এর আওতায় প্রাপ্য (বিস্তারিত $1-তে দেখুন)। আপনার জমা দেয়া লেখা যে কেউ হৃদয়হীনভাবে সম্পাদনা করতে এবং যথেচ্ছভাবে পুনর্বিতরণ করতে পারেন। আপনি যদি এ ব্যাপারে একমত না হন, তাহলে এখানে আপনার লেখা জমা দেবেন না।
    \nআপনি আরো প্রতিজ্ঞা করছেন যে, এই লেখাগুলো আপনি নিজে লিখেছেন, বা সাধারণের ব্যবহারের জন্য উন্মুক্ত কোন উৎস থেকে সংগ্রহ করেছেন।\n'''স্বত্ব সংরক্ষিত কোন লেখা স্বত্বাধিকারীর অনুমতি ছাড়া এখানে জমা দেবেন না!'''", @@ -701,7 +701,7 @@ "longpageerror": "'''ত্রুটি: আপনার জমা দেয়া টেক্সটের পরিমাণ {{PLURAL:$1|এক কিলোবাইট|$1 কিলোবাইট}}, যা সর্বোচ্চ সীমা {{PLURAL:$2|এক কিলোবাইটের|$2 কিলোবাইটের}} চেয়ে বেশি।'''\nএটি সংরক্ষণ করা সম্ভব নয়।", "readonlywarning": "সতর্কবার্তা: রক্ষণাবেক্ষণের জন্য ডাটাবেজ অবরুদ্ধ রাখা হয়েছে, তাই এই মুহূর্তে আপনি আপনার সম্পাদনা সংরক্ষণ করতে পারবেন না।\nআপনি চাইলে লেখাটি প্রতিলিপি করে কোন টেক্সট ফাইলে সেঁটে ভবিষ্যতের জন্য সংরক্ষণ করতে পারেন।\n\nযে সিস্টেম প্রশাসক ডাটাবেজটি অবরুদ্ধ করেছেন তিনি এই ব্যাখ্যা দিয়েছেন: $1", "protectedpagewarning": "'''সতর্কীকরণ: এই পাতাটি বন্ধ করা হয়েছে; কেবলমাত্র প্রশাসক মর্যাদার ব্যবহারকারীরাই এটি সম্পাদনা করতে পারবেন।'''\nআপনার সুবিধার্থে পাতাটির সাম্প্রতিক সংরক্ষণ লগের বিবরণ নিচে দেওয়া হলো।", - "semiprotectedpagewarning": "'''নোট:''' এই পাতাটির ব্যবহার নিয়ন্ত্রণ করা হয়েছে তাই নিবন্ধনকৃত ব্যবহারকারী এটি সম্পাদনা করতে পারবেন।\nআপনার সুবিধার্থে পাতাটির সাম্প্রতিক সংরক্ষণ লগের বিবরণ নিচে দেওয়া হলো।", + "semiprotectedpagewarning": "টীকা: এই পাতাটির ব্যবহার নিয়ন্ত্রণ করা হয়েছে তাই নিবন্ধনকৃত ব্যবহারকারী এটি সম্পাদনা করতে পারবেন।\nআপনার সুবিধার্থে পাতাটির সাম্প্রতিক লগের বিবরণ নিচে দেওয়া হলো:", "cascadeprotectedwarning": "সতর্কীকরণ: এই পাতাটি সুরক্ষিত, ফলে এটি শুধুমাত্র [[Special:ListGroupRights|নির্দিষ্ট অধিকারপ্রাপ্ত]] ব্যবহারকারীগণ সম্পাদনা করতে পারেন, কারণ এটি নিচের প্রপাতাকার-সুরক্ষিত {{PLURAL:$1|পাতায়|পাতাসমূহে}} অন্তর্ভুক্ত আছে:", "titleprotectedwarning": "'''সতর্কীকরণ: এই পাতাটির ব্যবহার সীমিত করা হয়েছে, যাতে কেবলমাত্র [[Special:ListGroupRights|এই নির্দিষ্ট অনুমতিপ্রাপ্ত]] ব্যবহারকারী এটি তৈরি করতে পারেন।'''\nআপনার সুবিধার্থে পাতাটির সাম্প্রতিক সংরক্ষণ লগের বিবরণ নিচে দেওয়া হলো।", "templatesused": "এই পাতায় ব্যবহৃত {{PLURAL:$1|টেমপ্লেট|টেমপ্লেটসমূহ}}:", @@ -721,8 +721,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সম্ভবতঃ পাতাটি মুছে ফেলা হয়েছে।", @@ -754,7 +754,7 @@ "duplicate-args-category-desc": "এই পাতায় টেমপ্লেট আহ্বান উপস্থিত রয়েছে যা সদৃশ আর্গুমেন্ট ব্যবহার করেছে, যেমন {{foo|bar=1|bar=2}} বা {{foo|bar|1=baz}}।", "expensive-parserfunction-warning": "'''সতর্ক হোন:''' এই পাতাটি অনেক বেশি পরিমাণে এক্সপেনসিভ পার্সার ফাংশন কল রয়েছে।\n\nএটি $2-এর চেয়ে কম পরিমাণ {{PLURAL:$2|কল|কল}} থাকা উচিত, যেখানে মোট কলের সংখ্যা {{PLURAL:$1|বর্তমানে $1|বর্তমানে $1}}।", "expensive-parserfunction-category": "অনেক বেশি পরিমাণে এক্সপেনসিভ পার্সার ফাংশন কল থাকা পাতাসমূহ", - "post-expand-template-inclusion-warning": "'''সতর্ক হোন:''' টেমপ্লেটের ইনক্লুড আকার অনেক বেশি।\nকিছু টেমপ্লেট সংযুক্ত করা নাও যেতে পারে।", + "post-expand-template-inclusion-warning": "সতর্ক হোন: টেমপ্লেটের অন্তর্ভুক্তির আকার অনেক বেশি।\nকিছু টেমপ্লেট সংযুক্ত করা নাও যেতে পারে।", "post-expand-template-inclusion-category": "যেসকল স্থানে টেমপ্লেট অন্তর্ভুক্তির আকার অতিক্রম করে গেছে সেই পাতাগুলো", "post-expand-template-argument-warning": "' ' ' সাবধান: ' ' ' এই পাতাটিতে অন্তত একটি ফর্মা যুক্তি আছে যা একটি খুব বড় বিস্তার আকার ধারণ করেছে।\nতাই এই আর্গুমেন্টটি বাদ দেওয়া হয়েছে।", "post-expand-template-argument-category": "বাদ ফর্মা আর্গুমেন্ট ধারণকারী পাতা", @@ -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,11 +1306,22 @@ "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": "শেষ {{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": "আপনার ছাঁকনির সেটিং সংরক্ষণ করতে ও পরে পুনরায় ব্যবহার করতে, নীচে, সক্রিয় ছাঁকনি এলাকায় বুকমার্ক আইকনে ক্লিক করুন।", "rcfilters-savedqueries-defaultlabel": "ছাঁকনি সংরক্ষণ", "rcfilters-savedqueries-rename": "নামান্তর", "rcfilters-savedqueries-setdefault": "পূর্ব-নির্ধারিত হিসেবে নির্ধারন করুন", @@ -1319,15 +1330,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": "একটি রং নির্বাচন করুন", @@ -1335,27 +1348,23 @@ "rcfilters-filterlist-noresults": "কোনও ছাঁকনি পাওয়া যায়নি", "rcfilters-noresults-conflict": "কোনও ফলাফল পাওয়া যায়নি কারণ অনুসন্ধানের মাপকাঠিগুলির মধ্যে সংঘর্ষ আছে", "rcfilters-state-message-subset": "এই ছাঁকনিটির কোন প্রভাব নেই কারণ এর ফলাফলগুলি নিম্নোক্ত বৃহত্তর পরিধির {{PLURAL:$2|ছাঁকনিটির|ছাঁকনিগুলির}} মধ্যে অন্তর্ভুক্ত আছে (আলোকপাত করে এটিকে আলাদা করে দেখার চেষ্টা করুন): $1", - "rcfilters-state-message-fullcoverage": "কোন দলের সমস্ত ছাঁকনি নির্বাচন করা এবং কোন ছাঁকনিই নির্বাচন না করা একই কথা, তাই এই ছাঁকনিটির কোন প্রভাব নেই। এই দলে অন্তর্ভুক্ত ছাঁকনিগুলি হল: $1", - "rcfilters-filtergroup-registration": "ব্যবহারকারী নিবন্ধন", - "rcfilters-filter-registered-label": "নিবন্ধিত", - "rcfilters-filter-registered-description": "প্রবেশকৃত সম্পাদকবৃন্দ।", - "rcfilters-filter-unregistered-label": "অনিবন্ধিত", - "rcfilters-filter-unregistered-description": "যেসব সম্পাদক অ্যাকাউন্টে প্রবেশ করেননি।", - "rcfilters-filter-unregistered-conflicts-user-experience-level": "এই ছাঁকনিটির সাথে নিম্নোক্ত ব্যবহারকারী অভিজ্ঞতা {{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-filtergroup-user-experience-level-conflicts-unregistered": "অভিজ্ঞতা ছাঁকনিগুলি কেবলমাত্র নিবন্ধিত ব্যবহারকারীদের খুঁজে বের করে, তাই এই ছাঁকনিটি \"অনিবন্ধিত\" ছাঁকনিটির সাথে সংঘর্ষে আছে।", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "\"অনিবন্ধিত\" ছাঁকনিটি এক বা তার অধিক অভিজ্ঞতা ছাঁকনির সাথে সংঘর্ষে আছে, যে ছাঁকনিগুলি কেবলমাত্র নিবন্ধিত ব্যবহারকারীদের খুঁজে বের করে। সংঘর্ষরত ছাঁকনিগুলিকে উপরের \"সক্রিয় ছাঁকনিসমূহ\" এলাকাতে চিহ্নিত করা হয়েছে।", + "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": "স্বয়ংক্রিয় সরঞ্জাম দিয়ে করা সম্পাদনা।", @@ -1373,8 +1382,14 @@ "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-seen-label": "দেখা পরিবর্তন", "rcfilters-filtergroup-changetype": "পরিবর্তনের ধরন", "rcfilters-filter-pageedits-label": "পাতার সম্পাদনা", "rcfilters-filter-pageedits-description": "উইকি বিষয়বস্তু, আলোচনা, বিষয়শ্রেণীর বিবরণ... ইত্যাদিতে সম্পাদনা", @@ -1389,13 +1404,20 @@ "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-lastrevision-description": "শুধুমাত্র একটি পাতার সর্বশেষ সাম্প্রতিক পরিবর্তন।", + "rcfilters-filter-previousrevision-label": "সর্বশেষ সংশোধন নয়", + "rcfilters-filter-previousrevision-description": "সব পরিবর্তন যা \"সর্বশেষ সংশোধন\" নয়।", "rcfilters-filter-excluded": "বর্জিত", + "rcfilters-tag-prefix-namespace-inverted": "$1 :নয়", + "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-watchlist-markseen-button": "দেখা হিসাবে সব পরিবর্তন চিহ্নিত করুন", + "rcfilters-preference-label": "সাম্প্রতিক পরিবর্তনের উন্নত সংস্করণটি লুকান", "rcnotefrom": "$2টা থেকে সংঘটিত পরিবর্তনগুলি (সর্বোচ্চ $1টি দেখানো হয়েছে)।", "rclistfromreset": "তারিখ নির্বাচন পুনঃস্থাপন করুন", "rclistfrom": "$2, $3 তারিখের পর সংঘটিত নতুন পরিবর্তনগুলো দেখাও", @@ -1450,7 +1472,7 @@ "autochange-username": "মিডিয়াউইকি স্বয়ংক্রিয় পরিবর্তন", "upload": "আপলোড", "uploadbtn": "ফাইল আপলোড করুন", - "reuploaddesc": "আপলোড বাতিল করো এবং আপলোড ফর্মে ফেরত যাও।", + "reuploaddesc": "আপলোড বাতিল করুন এবং আপলোড ফর্মে ফেরত যান", "upload-tryagain": "পরিবর্তিত ফাইল বর্ণনা জমা দিন", "uploadnologin": "আপনি প্রবেশ করেননি", "uploadnologintext": "ফাইল আপলোড করতে হলে আপনাকে অবশ্যই $1 করতে হবে।", @@ -1470,7 +1492,7 @@ "filereuploadsummary": "ফাইলের পরিবর্তনসমূহ:", "filestatus": "কপিরাইট অবস্থা:", "filesource": "উৎস:", - "ignorewarning": "সতর্কীকরণ উপেক্ষা করেই ফাইল সংরক্ষণ করা হোক।", + "ignorewarning": "সতর্কীকরণ উপেক্ষা করেই ফাইল সংরক্ষণ করুন", "ignorewarnings": "সমস্ত সতর্কীকরণ উপেক্ষা করা হোক", "minlength1": "ফাইলের নাম কমপক্ষে এক বর্ণের হতে হবে।", "illegalfilename": "\"$1\" ফাইলনামটিতে এমন কিছু ক্যারেক্টার আছে যেগুলি পাতার শিরোনামে ব্যবহার করা অবৈধ। অনুগ্রহ করে ফাইলটি নতুন করে নামকরণ করুন এবং তারপর আপলোড করার চেষ্টা করুন।", @@ -1486,7 +1508,7 @@ "file-too-large": "আপনার জমাকৃত ফাইলটি অনেক বড়।", "filename-tooshort": "ফাইল নামটি খুব ছোট।", "filetype-banned": "এই ধরনের ফাইল নিষিদ্ধ।", - "verification-error": "এই ফাইলের ফাইল ভ্যালিডেশন উত্তীর্ণ হয়নি।", + "verification-error": "এই ফাইলটি ফাইল যাচাইকরণে উত্তীর্ণ হয়নি।", "hookaborted": "যে পরিবর্তনটি আপনি করার চেষ্টা করেছিলেন তা এক্সটেনশন দ্বারা বাতিল করা হয়েছে।", "illegal-filename": "ফাইলের এই নামটি গ্রহণযোগ্য নয়।", "overwrite": "বিদ্যমান কোনো ফাইল প্রতিস্থাপন গ্রহণযোগ্য নয়।", @@ -1672,7 +1694,7 @@ "listfiles_size": "আকার", "listfiles_description": "বিবরণ", "listfiles_count": "সংস্করণ", - "listfiles-show-all": "ছবির পুরাতন সংস্করণ সংযোজন", + "listfiles-show-all": "ফাইলের পুরাতন সংস্করণ সংযোজন", "listfiles-latestversion": "বর্তমান সংস্করণ", "listfiles-latestversion-yes": "হ্যাঁ", "listfiles-latestversion-no": "না", @@ -1975,7 +1997,7 @@ "linksearch-pat": "অনুসন্ধান প্যাটার্ন:", "linksearch-ns": "নামস্থান:", "linksearch-ok": "অনুসন্ধান", - "linksearch-text": "\"*.wikipedia.org\" এর মত ওয়াইল্ড কার্ড ব্যবহার করা যেতে পারে।\nনূন্যতম একটি টপ লেভেল ডোমেইন প্রয়োজন, যেমন \"*.org\"।
    \nযে সকল {{PLURAL:$2|প্রোটোকল|প্রোটোকলসমূহ}} সমর্থন করে: $1 (প্রোটোকল উল্লেখ করা না হলে http:// ডিফল্ট হিসাবে ব্যবহৃত হবে)।", + "linksearch-text": "\"*.wikipedia.org\" এর মত ওয়াইল্ড কার্ড ব্যবহার করা যেতে পারে।\nনূন্যতম একটি শীর্ষ স্তরের ডোমেইন প্রয়োজন, যেমন \"*.org\"।
    \nযে সকল {{PLURAL:$2|প্রোটোকল|প্রোটোকলসমূহ}} সমর্থন করে: $1 (প্রোটোকল উল্লেখ করা না হলে ডিফল্ট হিসাবে http:// ব্যবহৃত হবে)।", "linksearch-line": "$2 থেকে $1 এ লিংক করা হয়েছে", "linksearch-error": "হোস্ট নামের শুরুতে কেবলমাত্র ওয়াইল্ডকার্ড ব্যবহার করা যায়।", "listusersfrom": "সেই সব ব্যবহারকারী দেখাও যাদের নাম এই অক্ষর দিয়ে শুরু:", @@ -2078,7 +2100,7 @@ "unwatchthispage": "নজর সরিয়ে নিন", "notanarticle": "বিষয়বস্তু পাতা নয়", "notvisiblerev": "অপর একজন ব্যবহারকারী কর্তৃক প্রণীত সর্বশেষ সংস্করণটি অপসারিত হয়েছে", - "watchlist-details": "আপনার নজরতালিকাতে {{PLURAL:$1|$1টি পাতা}} আছে (আলাপ পাতাগুলি গণনায় না ধরে)।", + "watchlist-details": "আপনার নজরতালিকায় {{PLURAL:$1|$1টি পাতা}} আছে (আলাপ পাতাসহ)।", "wlheader-enotif": "ইমেল বিজ্ঞপ্তি সক্রিয় করা আছে।", "wlheader-showupdated": "আপনার শেষ আগমনের পর থেকে যেসব পাতায় পরিবর্তন হয়েছে সেগুলি '''গাঢ়''' করে দেখানো হয়েছে।", "wlnote": "নিচে $3, $4 তারিখ থেকে বিগত {{PLURAL:$2|১ ঘন্টায়|$2 ঘন্টায়}} সংঘটিত {{PLURAL:$1|শেষ ১টি পরিবর্তন|শেষ $1টি পরিবর্তন}} দেখানো হল।", @@ -2113,6 +2135,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": "পাতা মুছুন", @@ -2141,6 +2164,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টি {{PLURAL:$1|সম্পাদনা}} রোলব্যাক করুন", @@ -2237,7 +2261,7 @@ "undeletepage": "মুছে ফেলা পাতাগুলি দেখুন ও ফিরিয়ে আনুন", "undeletepagetitle": "'''[[:$1|$1]] এর অপসারিত সংস্করণগুলোর সমন্বয়ে দেখানো হচ্ছে'''।", "viewdeletedpage": "মুছে ফেলা হয়েছে, এমন পাতাগুলো দেখুন", - "undeletepagetext": "নিচের {{PLURAL:$1|পাতাটি মুছে ফেলা হয়েছে কিন্তু এটি|$1 পাতাগুলি মুছে ফেলা হয়েছে কিন্তু এগুলি}} এখনও আর্কাইভে আছে ও পুনরুদ্ধার করা সম্ভব। আর্কাইভ পর্যায়ক্রমিকভাবে পরিষ্কার করা হতে পারে।", + "undeletepagetext": "নিচের {{PLURAL:$1|পাতাটি মুছে ফেলা হয়েছে কিন্তু এটি|$1টি পাতা মুছে ফেলা হয়েছে কিন্তু এগুলি}} এখনও আর্কাইভে আছে ও পুনরুদ্ধার করা সম্ভব। আর্কাইভ পর্যায়ক্রমিকভাবে পরিষ্কার করা হতে পারে।", "undelete-fieldset-title": "সংশোধন পুনরুদ্ধার", "undeleteextrahelp": "সম্পূর্ণ পাতাটি পুনরুদ্ধার করার জন্য সবগুলি টিকবাক্স অনির্বাচিত করুন এবং '''''{{int:undeletebtn}}''''' বোতামে ক্লিক করুন।\nনির্বাচিত পুনরুদ্ধারের জন্য যেসব সংশোধন পুনরুদ্ধার করতে চান, তার পাশের বাক্সে টিক দিন এবং '''''{{int:undeletebtn}}''''' বোতামে ক্লিক করুন।", "undeleterevisions": "$1{{PLURAL:$1|টি সংশোধন}} অপসারিত", @@ -2394,7 +2418,7 @@ "noautoblockblock": "স্বয়ংক্রিয় বাধাদান নিষ্ক্রিয় করা হয়েছে", "createaccountblock": "অ্যাকাউন্ট সৃষ্টিতে বাধা দেওয়া হয়েছে", "emailblock": "ই-মেইল বাধা দেয়া হয়েছে", - "blocklist-nousertalk": "নিজের আলাপের পাতা সম্পাদনা করতে পারে না", + "blocklist-nousertalk": "নিজস্ব আলাপ পাতা সম্পাদনা করতে পারবে না", "ipblocklist-empty": "বাধাতালিকা খালি।", "ipblocklist-no-results": "অনুরুদ্ধ আইপি ঠিকানা বা ব্যবহারকারী নামটির উপর কোন বাধা নেই।", "blocklink": "বাধা দাও", @@ -2527,7 +2551,7 @@ "export-addcat": "যোগ", "export-addnstext": "নামস্থান থেকে পাতা যুক্ত করুন:", "export-addns": "যোগ", - "export-download": "ফাইল হিসেবে সংরক্ষণ করা হোক", + "export-download": "ফাইল হিসেবে সংরক্ষণ করুন", "export-templates": "টেমপ্লেট অন্তর্ভুক্তি", "export-pagelinks": "সম্পর্কিত পাতাগুলো এই ধাপ পর্যন্ত যুক্ত করো:", "export-manual": "হাতেকরে পাতা যোগ করুন:", @@ -2594,7 +2618,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\" পাতাটি আমদানি করা যায়নি কারণ আপনার এটি তৈরী করার অনুমতি নেই।", @@ -3437,7 +3461,7 @@ "fileduplicatesearch-noresults": "\"$1\" নামের কোনো ফাইল খুঁজে পাওয়া যায়নি।", "specialpages": "বিশেষ পাতাসমূহ", "specialpages-note-top": "ব্যাখ্যা", - "specialpages-note": "* সাধারণ বিশেষ পাতাসমূহ।\n* সীমাবদ্ধ বিশেষ পাতা।", + "specialpages-note-restricted": "* সাধারণ বিশেষ পাতাসমূহ।\n* সীমাবদ্ধ বিশেষ পাতাসমূহ।", "specialpages-group-maintenance": "রক্ষণাবেক্ষণের কার্যবিবরণীসমূহ", "specialpages-group-other": "অন্যান্য বিশেষ পাতাসমূহ", "specialpages-group-login": "প্রবেশ/নতুন অ্যাকাউন্ট", @@ -3556,6 +3580,11 @@ "compare-invalid-title": "আপনার প্রদেয় শিরোনামটি সঠিক নয়।", "compare-title-not-exists": "আপনার কাঙ্ক্ষিত শিরোনামটি নেই।", "compare-revision-not-exists": "আপনার কাঙ্ক্ষিত সংস্করণটি নেই।", + "diff-form": "পার্থক্য", + "diff-form-submit": "পার্থক্য দেখান", + "permanentlink": "স্থায়ী সংযোগ", + "permanentlink-revid": "সংশোধন আইডি", + "permanentlink-submit": "এই সংশোধনে যান", "dberr-problems": " দুঃখিত! এই সাইটটি বর্তমানে কারীগরী অসুবিধার মুখোমুখি হয়েছে।", "dberr-again": "কয়েক মিনিট পর পুনরায় পরিদর্শনের চেষ্টা করুন।", "dberr-info": "(ডেটাবেজ প্রবেশ করা সম্ভব হয়নি: $1)", @@ -3964,5 +3993,6 @@ "undelete-cantedit": "আপনি এই পাতাটি ফিরিয়ে আনতে পারবেন না কারণ আপনার এই পাতাটি সম্পাদনা করার অনুমতি নেই।", "undelete-cantcreate": "আপনি এই পাতাটি ফিরিয়ে আনতে পারবেন না কারণ এই নামে কোন পাতা বিদ্যমান নেই ও আপনার এই পাতাটি তৈরি করার অনুমতি নেই।", "pagedata-title": "পাতার উপাত্ত", + "pagedata-not-acceptable": "কোন মিলে যাওয়া বিন্যাস পাওয়া যায় নি। সমর্থিত MIME ধরনগুলি হল: $1", "pagedata-bad-title": "অপ্রযোজ্য শিরোনাম: \"$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 0423c05a6c..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.", @@ -356,7 +356,7 @@ "title-invalid-too-long": "Zatraženi naziv stranice je predugačak. Ne smije biti duži od {{PLURAL:$1|bajta|bajtova}} u UTF-8 kodiranju.", "title-invalid-leading-colon": "Zahtjevani naslov stranice sadrži nevažeću dvotačku na početku.", "perfcached": "Sljedeći podaci su keširani i možda neće biti u potpunosti ažurirani. Keš sadrži najviše {{PLURAL:$1|jedan rezultat|$1 rezultata}}.", - "perfcachedts": "Sljedeći podaci nalaze se u memoriji i posljednji put ažurirani su $1. Keš sadrži najviše {{PLURAL:$4|jedan rezultat|$4 rezultata}}.", + "perfcachedts": "Sljedeći podaci su keširani i posljednji put ažurirani na datum $2 u $3. Keš sadrži najviše {{PLURAL:$4|jedan rezultat|$4 rezultata}}.", "querypage-no-updates": "Ažuriranje ove stranice je isključeno.\nPodaci koji se ovdje nalaze ne moraju biti aktuelni.", "viewsource": "Prikaži izvor", "viewsource-title": "Prikaz izvora stranice $1", @@ -938,7 +938,7 @@ "search-suggest": "Jeste li mislili: $1", "search-rewritten": "Prikazujem rezultate za $1. Umjesto toga potraži $2.", "search-interwiki-caption": "Rezultati s bratskih projekata", - "search-interwiki-default": "$1 rezultati:", + "search-interwiki-default": "Rezultati sa $1:", "search-interwiki-more": "(više)", "search-interwiki-more-results": "više rezultata", "search-relatedarticle": "Povezano", @@ -946,7 +946,7 @@ "searchall": "sve", "showingresults": "Dolje {{PLURAL:$1|je prikazan 1 rezultat|su prikazana $1 rezultata|je prikazano '''$1''' rezultata}} počev od #$2.", "showingresultsinrange": "Ispod {{PLURAL:$1|je prikazan 1 rezultat|su prikazana $1 rezultata|je prikazano $1 rezultata}}, u rasponu od $2 do $3.", - "search-showingresults": "{{PLURAL:$4|Rezultat $1 od $3|Rezultati $1 - $2 od $3}}", + "search-showingresults": "{{PLURAL:$4|Rezultat $1 od $3|Rezultati $1–$2 od $3}}", "search-nonefound": "Nisu pronađeni rezultati koji odgovaraju upitu.", "search-nonefound-thiswiki": "Nisu pronađeni rezultati koji odgovaraju upitu na ovom sajtu.", "powersearch-legend": "Napredna pretraga", @@ -1044,7 +1044,7 @@ "gender-unknown": "Kad Vas spominje, softver će pokušati izbjegavati rod kad god je to moguće", "gender-male": "On uređuje wiki stranice", "gender-female": "Ona uređuje wiki stranice", - "prefs-help-gender": "Postavljanje ovih podešavanja nije obavezno.\nSoftver koristi ove vrijednosti za vaše naslovljanje i ispravke gramatičkog roda u porukama softvera. Ova će informacija biti javna.", + "prefs-help-gender": "Ova postavka nije obavezna.\nSoftver koristi datu vrijednost da bi Vam se obratio i spomenuo Vas drugima koristeći odgovarajući gramatički rod.\nPodatak će biti javan.", "email": "E-pošta", "prefs-help-realname": "Pravo ime nije obavezno.\nAko izaberete da date ime, biće korišteno za pripisivanje vašem radu.", "prefs-help-email": "Adresa e-pošte nije obavezna, ali je potrebna u slučaju ponovnog postavljanja šifre, ako je zaboravite.", @@ -1283,7 +1283,7 @@ "recentchanges": "Nedavne izmjene", "recentchanges-legend": "Postavke nedavnih izmjena", "recentchanges-summary": "Na ovoj stranici možete pratiti nedavne izmjene.", - "recentchanges-noresult": "Nema izmjena u zadanom vremenu za zadane kriterije.", + "recentchanges-noresult": "Nema izmjena u izabranom periodu koji odgovaraju kriterijima.", "recentchanges-feed-description": "Na ovoj stranici možete pratiti nedavne izmjene.", "recentchanges-label-newpage": "Nova stranica", "recentchanges-label-minor": "Manja izmjena", @@ -1293,9 +1293,17 @@ "recentchanges-legend-heading": "Legenda:", "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-activefilters": "Aktivni filteri", "rcfilters-advancedfilters": "Napredni filteri", - "rcfilters-quickfilters": "Sačuvane postavke filtera", + "rcfilters-limit-title": "Izmjena za prikaz", + "rcfilters-limit-shownum": "Prikaži posljednjih $1 izmjena", + "rcfilters-days-title": "Nedavni dani", + "rcfilters-hours-title": "Nedavni sati", + "rcfilters-days-show-days": "$1 {{PLURAL:$1|dan|dana}}", + "rcfilters-days-show-hours": "$1 {{PLURAL:$1|sat|sata|sati}}", + "rcfilters-quickfilters": "Sačuvani filteri", "rcfilters-quickfilters-placeholder-title": "Zasad nema sačuvanih linkova", "rcfilters-quickfilters-placeholder-description": "Da sačuvate postavke filtera da biste ih kasnije ponovo upotrijebili, kliknite na ikonu markera pod \"Aktivni filterima\" ispod.", "rcfilters-savedqueries-defaultlabel": "Sačuvani filteri", @@ -1320,20 +1328,16 @@ "rcfilters-filterlist-noresults": "Nema filtera", "rcfilters-noresults-conflict": "Nije pronađen nijedan rezultat jer su kriteriji pretrage sukobljeni", "rcfilters-state-message-fullcoverage": "Izabiranje svih filtera u grupi isto je kao da niste izabrali nijedan, tako da ovaj filter nema nikakvog efekta. Grupa sadrži: $1", - "rcfilters-filtergroup-registration": "Registracija korisnika", - "rcfilters-filter-registered-label": "Registrirani", - "rcfilters-filter-registered-description": "Prijavljeni korisnici.", - "rcfilters-filter-unregistered-label": "Anonimni", - "rcfilters-filter-unregistered-description": "Neprijavljeni korisnici.", - "rcfilters-filter-unregistered-conflicts-user-experience-level": "Ovaj filter u sukobu je sa sljedećim {{PLURAL:$2|filterom|filterima}}, koji {{PLURAL:$2|pronalazi|pronalaze}} samo registrirane korisnike: $1", "rcfilters-filtergroup-authorship": "Autorstvo doprinosa", "rcfilters-filter-editsbyself-label": "Vaše izmjene", "rcfilters-filter-editsbyself-description": "Vaši vlastiti doprinosi.", "rcfilters-filter-editsbyother-label": "Tuđe izmjene", "rcfilters-filter-editsbyother-description": "Sve izmjene osim Vaših.", "rcfilters-filtergroup-userExpLevel": "Korisničko iskustvo (samo za registrirane)", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Filteri za iskustvo pronalaze samo registrirane korisnike, tako da je ovaj filter u sukobu s filterom \"Anonimni\".", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Filter \"Anonimni\" u sukobu je s jednim ili više filtera za iskustvo budući da oni pronalaze samo registrirane korisnike. Sukobljeni filteri označeni su pod \"Aktivnim filterima\" iznad.", + "rcfilters-filter-user-experience-level-registered-label": "Registrirani", + "rcfilters-filter-user-experience-level-registered-description": "Prijavljeni korisnici.", + "rcfilters-filter-user-experience-level-unregistered-label": "Anonimni", + "rcfilters-filter-user-experience-level-unregistered-description": "Neprijavljeni korisnici.", "rcfilters-filter-user-experience-level-newcomer-label": "Novajlije", "rcfilters-filter-user-experience-level-newcomer-description": "Manje od 10 izmjena i 4 dana aktivnosti.", "rcfilters-filter-user-experience-level-learner-label": "Učenici", @@ -1370,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", @@ -1380,7 +1384,12 @@ "rcfilters-filter-previousrevision-description": "Sve izmjene koje nisu najnovije na stranici.", "rcfilters-filter-excluded": "Izuzeto", "rcfilters-tag-prefix-namespace-inverted": ":ne $1", + "rcfilters-exclude-button-off": "Izuzmi izabrano", + "rcfilters-exclude-button-on": "Izuzimam izabrano", "rcfilters-view-tags": "Označene izmjene", + "rcfilters-view-namespaces-tooltip": "Filtriraj rezultate po imenskom prostoru", + "rcfilters-view-tags-tooltip": "Filtriraj rezultate po oznakama", + "rcfilters-liveupdates-button": "Ažuriraj uživo", "rcnotefrom": "Ispod {{PLURAL:$5|je izmjena|su izmjene}} od $3, $4 (do $1 prikazano).", "rclistfromreset": "Resetiraj izbor datuma", "rclistfrom": "Prikaži nove izmjene počev od $3 u $2", @@ -1700,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.", @@ -2416,7 +2425,7 @@ "move-page": "Premjesti $1", "move-page-legend": "Premjesti stranicu", "movepagetext": "Korištenjem ovog formulara možete preimenovati stranicu, premještajući cijelu historiju na novo ime.\nČlanak pod starim imenom postat će stranica koja preusmjerava na članak pod novim imenom. \nMožete automatski izmijeniti preusmjerenje do izvornog naslova.\nAko se ne odlučite na to, provjerite [[Special:DoubleRedirects|dvostruka]] ili [[Special:BrokenRedirects|neispravna preusmjeravanja]].\nDužni ste provjeriti da svi linkovi i dalje nastave voditi na prave stranice.\n\nImajte na umu da članak neće biti premješten ako već postoji članak pod imenom na koje ga namjeravate preusmjeriti osim u slučaju stranice za preusmjeravanje koja nema nikakvih starih izmjena.\nTo znači da možete vratiti stranicu na prethodno mjesto ako pogriješite, ali ne možete zamijeniti postojeću stranicu.\n\nNapomena:\nOvo može biti drastična i neočekivana promjena kad su u pitanju popularne stranice.\nMolimo da dobro razmislite prije no što premjestite stranicu.", - "movepagetext-noredirectfixer": "Koristeći donji obrazac, preimenovat ćete stranicu i premjestiti cijelu njenu historiju na novi naziv.\nStari naziv postat će preusmjerenje na novi naziv.\nMolimo da provjerite postoje li [[Special:DoubleRedirects|dvostruka]] ili [[Special:BrokenRedirects|nedovršena preusmjerenja]].\nVi ste za to odgovorni te morate provjeriti jesu li linkovi ispravni i vode li tamo kamo bi trebali voditi.\n\nImajte na umu da stranica '''neće''' biti premještena ako već postoji stranica s tim imenom, osim ako je prazna ili je preusmjerenje ili nema ranije historije.\nOvo znači da možete preimenovati stranicu nazad gdje je ranije bila preimenovana ako ste pogriješili, ali ne možete ponovo preimenovati postojeću stranicu.\n\nNapomena:\nImajte na umu da premještanje popularnog članka može biti\ndrastična i neočekivana promjena za korisnike; molimo da budete sigurni da ste shvatili posljedice prije no što nastavite.", + "movepagetext-noredirectfixer": "Koristeći donji obrazac, preimenovat ćete stranicu i premjestiti cijelu njenu historiju na novi naziv.\nStari naziv postat će preusmjerenje na novi naziv.\nMolimo da provjerite postoje li [[Special:DoubleRedirects|dvostruka]] ili [[Special:BrokenRedirects|nedovršena preusmjerenja]].\nVi ste za to odgovorni te morate provjeriti jesu li linkovi ispravni i vode li tamo kamo bi trebali voditi.\n\nImajte na umu da stranica '''neće''' biti premještena ako već postoji stranica s tim imenom, osim ako je prazna ili je preusmjerenje ili nema ranije historije.\nOvo znači da možete preimenovati stranicu nazad gdje je ranije bila preimenovana ako ste pogriješili, ali ne možete ponovo preimenovati postojeću stranicu.\n\nNapomena:\nOvo može biti drastična i neočekivana promjena za popularnu stranicu;\ndobro razmislite o posljedicama prije nego što nastavite.", "movepagetalktext": "Ako označite ovu kutijicu, odgovarajuća stranica za razgovor, ako postoji, automatski će biti premještena na novi naziv, osim ako već postoji sadržaj na odredišnoj stranici za razgovor.\n\nU tom slučaju, morat ćete ručno premjestiti ili prekopirati stranicu ako to želite.", "moveuserpage-warning": "Upozorenje: Premještate korisničku stranicu. Imajte u vidu da će samo stranica biti premještena, a sam korisnik neće biti preimenovan.", "movecategorypage-warning": "Upozorenje: Premještate stranicu kategorije. Imajte na umu da će samo stranica biti premještena i da sve stranice u staroj kategoriji neće biti ponovo kategorirane u novu kategoriju.", @@ -2683,7 +2692,7 @@ "pageinfo-visiting-watchers": "Broj korisnika koji prate ovu stranica i koji su je posjetili zbog najnovijih izmjena", "pageinfo-few-watchers": "Manje od $1 {{PLURAL:$1|pratioca|pratilaca}}", "pageinfo-few-visiting-watchers": "Moguće je da postoji korisnik koji prati i posjećuje nedavne izmjene", - "pageinfo-redirects-name": "Broj preusmjeravanja na ovu stranicu", + "pageinfo-redirects-name": "Broj preusmjerenja na ovu stranicu", "pageinfo-subpages-name": "Podstranice ove stranice", "pageinfo-subpages-value": "$1 ($2 {{PLURAL:$2|preusmjerenje|preusmjerenja}}; $3 {{PLURAL:$3|nepreusmjerenje|nepreusmjerenja}})", "pageinfo-firstuser": "Korisnik koji je napravio stranicu", @@ -3368,7 +3377,6 @@ "fileduplicatesearch-noresults": "Nije pronađena datoteka s imenom \"$1\".", "specialpages": "Posebne stranice", "specialpages-note-top": "Legenda", - "specialpages-note": "* Normalne posebne stranice.\n* Zaštićene posebne stranice.", "specialpages-group-maintenance": "Izvještaji za održavanje", "specialpages-group-other": "Ostale posebne stranice", "specialpages-group-login": "Prijava / otvaranje računa", @@ -3487,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)", @@ -3528,7 +3537,7 @@ "htmlform-user-not-exists": "$1 ne postoji.", "htmlform-user-not-valid": "$1 nije ispravno korisničko ime.", "logentry-delete-delete": "$1 {{GENDER:$2|obrisao|obrisala}} je stranicu $3", - "logentry-delete-delete_redir": "$1 {{GENDER:$2|obrisao|obrisala}} je preusmjerenje $3 prepisivanjem", + "logentry-delete-delete_redir": "$1 {{GENDER:$2|obrisao|obrisala}} je preusmjerenje $3 presnimavanjem", "logentry-delete-restore": "$1 {{GENDER:$2|vratio|vratila}} je stranicu $3 ($4)", "logentry-delete-restore-nocount": "$1 {{GENDER:$2|vratio|vratila}} je stranicu $3", "restore-count-revisions": "{{PLURAL:$1|1 izmjena|$1 izmjene|$1 izmjena}}", @@ -3749,7 +3758,7 @@ "mw-widgets-titleinput-description-new-page": "stranica još ne postoji", "mw-widgets-titleinput-description-redirect": "preusmjerava na $1", "mw-widgets-categoryselector-add-category-placeholder": "Dodaj kategoriju...", - "mw-widgets-usersmultiselect-placeholder": "Dodaj više...", + "mw-widgets-usersmultiselect-placeholder": "Dodaj još...", "date-range-from": "Od datuma:", "date-range-to": "Do datuma:", "sessionmanager-tie": "Ne možete istovremeno koristiti nekoliko vrsta provjera autentičnosti: $1.", diff --git a/languages/i18n/ca.json b/languages/i18n/ca.json index ce07b06311..c098ec6039 100644 --- a/languages/i18n/ca.json +++ b/languages/i18n/ca.json @@ -56,7 +56,9 @@ "Jaumeortola", "Kippelboy", "Syum90", - "Xð" + "Xð", + "Abella", + "Pierpao" ] }, "tog-underline": "Subratlla els enllaços:", @@ -86,13 +88,14 @@ "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", "tog-watchlisthideminor": "Amaga les edicions menors de la llista de seguiment", "tog-watchlisthideliu": "Amaga a la llista les edicions d'usuaris registrats", "tog-watchlistreloadautomatically": "Recarrega la llista de seguiment automàticament sempre que canviï un filtre (cal JavaScript)", + "tog-watchlistunwatchlinks": "Afegeix enllaços directes per a seguir o deixar de seguir les entrades de la llista de seguiment (cal Javascript per a la funcionalitat d'alternar)", "tog-watchlisthideanons": "Amaga a la llista les edicions d'usuaris anònims", "tog-watchlisthidepatrolled": "Amaga edicions patrullades de la llista de seguiment", "tog-watchlisthidecategorization": "Amaga la categorització de les pàgines", @@ -183,9 +186,9 @@ "hidden-category-category": "Categories ocultes", "category-subcat-count": "{{PLURAL:$2|Aquesta categoria només té la següent subcategoria.|Aquesta categoria conté {{PLURAL:$1|la següent subcategoria|les següents $1 subcategories}}, d'un total de $2.}}", "category-subcat-count-limited": "Aquesta categoria conté {{PLURAL:$1|la següent subcategoria|les següents $1 subcategories}}.", - "category-article-count": "{{PLURAL:$2|Aquesta categoria només té la següent pàgina.|{{PLURAL:$1|La següent pàgina és|Les següents $1 pàgines són}} dins d'aquesta categoria, d'un total de $2.}}", + "category-article-count": "{{PLURAL:$2|Aquesta categoria només conté la pàgina següent.|{{PLURAL:$1|La pàgina és|Les $1 pàgines són}} dins d'aquesta categoria, d'un total de $2.}}", "category-article-count-limited": "{{PLURAL:$1|La següent pàgina és|Les següents $1 pàgines són}} dins la categoria actual.", - "category-file-count": "{{PLURAL:$2|Aquesta categoria només té el següent fitxer.|{{PLURAL:$1|El següent fitxer és|Els següents $1 fitxers són}} dins d'aquesta categoria, d'un total de $2.}}", + "category-file-count": "{{PLURAL:$2|Aquesta categoria només conté el fitxer següent.|{{PLURAL:$1|El fitxer és|Els $1 fitxers són}} dins d'aquesta categoria, d'un total de $2.}}", "category-file-count-limited": "{{PLURAL:$1|El següent fitxer és|Els següents $1 fitxers són}} dins la categoria actual.", "listingcontinuesabbrev": " cont.", "index-category": "Pàgines indexades", @@ -252,14 +255,14 @@ "viewhelppage": "Visualitza la pàgina d'ajuda", "categorypage": "Visualitza la pàgina de la categoria", "viewtalkpage": "Visualitza la pàgina de discussió", - "otherlanguages": "En altres llengües", + "otherlanguages": "En altres idiomes", "redirectedfrom": "(S'ha redirigit des de: $1)", "redirectpagesub": "Pàgina de redirecció", "redirectto": "Redirigeix a:", "lastmodifiedat": "La pàgina va ser modificada per darrera vegada el $1 a les $2.", "viewcount": "S'ha visitat aquesta pàgina {{PLURAL:$1|una vegada|$1 vegades}}.", "protectedpage": "Pàgina protegida", - "jumpto": "Dreceres ràpides:", + "jumpto": "Salta a:", "jumptonavigation": "navegació", "jumptosearch": "cerca", "view-pool-error": "Disculpeu, els servidors es troben sobrecarregats.\nMassa usuaris estan tractant d'accedir a aquesta pàgina.\nPer favor, esperau una mica abans de tornar a accedir a aquesta pàgina.\n\n$1", @@ -270,13 +273,13 @@ "pool-servererror": "El servei de recompte de la reserva no és disponible ($1).", "poolcounter-usage-error": "Error d'ús: $1", "aboutsite": "Quant al projecte {{SITENAME}}", - "aboutpage": "Project:Quant a", + "aboutpage": "Project:Quant al", "copyright": "El contingut està disponible sota la llicència $1 si no s'indica el contrari.", "copyrightpage": "{{ns:project}}:Drets d'autor", "currentevents": "Actualitat", "currentevents-url": "Project:Actualitat", - "disclaimers": "Avís general", - "disclaimerpage": "Project:Avís general", + "disclaimers": "Renúncies", + "disclaimerpage": "Project:Descàrrec general", "edithelp": "Ajuda per a l'edició", "helppage-top-gethelp": "Ajuda", "mainpage": "Pàgina principal", @@ -323,7 +326,7 @@ "feed-invalid": "La subscripció no és vàlida pel tipus de sindicament.", "feed-unavailable": "Els canals de sindicació no estan disponibles", "site-rss-feed": "Canal RSS $1", - "site-atom-feed": "Canal Atom $1", + "site-atom-feed": "Font Atom $1", "page-rss-feed": "«$1» RSS Feed", "page-atom-feed": "Canal Atom «$1»", "feed-atom": "Atom", @@ -721,7 +724,6 @@ "explainconflict": "Algú més ha canviat aquesta pàgina des que l'heu editada.\nL'àrea de text superior conté el text de la pàgina com existeix actualment.\nEls vostres canvis es mostren en l'àrea de text inferior.\nHaureu de fusionar els vostres canvis en el text existent.\n'''Només''' el text de l'àrea superior es desarà quan premeu el botó «$1».", "yourtext": "El vostre text", "storedversion": "Versió emmagatzemada", - "nonunicodebrowser": "Alerta: El vostre navegador no és compatible amb Unicode.\nS'ha activat una alternativa que us permetrà modificar pàgines amb seguretat: els caràcters que no són ASCII us apareixeran en la caixa d'edició com a codis hexadecimals.", "editingold": "'''AVÍS: Esteu editant una revisió desactualitzada de la pàgina.\nSi la deseu, es perdran els canvis que hàgiu fet des de llavors.'''", "yourdiff": "Diferències", "copyrightwarning": "Si us plau, tingueu en compte que totes les contribucions per al projecte {{SITENAME}} es consideren com a publicades sota els termes de la llicència $2 (vegeu-ne més detalls a $1). Si no desitgeu la modificació i distribució lliure dels vostres escrits sense el vostre consentiment, no els poseu ací.
    \nA més a més, en enviar el vostre text, doneu fe que és vostra l'autoria, o bé de fonts en el domini públic o recursos lliures similars. Heu de saber que aquest '''no''' és el cas de la majoria de pàgines que hi ha a Internet.\n'''No feu servir textos amb drets d'autor sense permís!'''", @@ -750,8 +752,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 +1022,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,46 +1339,63 @@ "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-limit-shownum": "Mostra {{PLURAL:$1|el darrer canvi| els darrers $1 canvis}}", + "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-highlighted-filters-list": "Destacat: $1", + "rcfilters-quickfilters": "Filtres desats", "rcfilters-quickfilters-placeholder-title": "Encara no s’ha desat cap enllaç", + "rcfilters-quickfilters-placeholder-description": "Per desar els teus filtres i usar-los després, premeu l'icona de marcador de pàgina a l'àrea de Filtres Actius, més avall.", "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-apply-and-setdefault-label": "Crear filtre predeterminat", "rcfilters-savedqueries-cancel-label": "Cancel·la", "rcfilters-savedqueries-add-new-title": "Desa els paràmetres de filtres actuals", "rcfilters-restore-default-filters": "Restaura els filtres per defecte", "rcfilters-clear-all-filters": "Esborra tots els filtres", + "rcfilters-show-new-changes": "Mostra els nous canvis", "rcfilters-search-placeholder": "Filtra els canvis recents (navegueu o comenceu a escriure)", "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-filterlist-feedbacklink": "Comenta'ns què et semblen aquestes (noves) eines per filtrar", "rcfilters-highlightbutton-title": "Ressalta els resultats", "rcfilters-highlightmenu-title": "Selecciona un color", "rcfilters-highlightmenu-help": "Seleccioneu un color per ressaltar la propietat", "rcfilters-filterlist-noresults": "No s'ha trobat cap filtre", "rcfilters-noresults-conflict": "No s'ha trobat cap resultat perquè els criteris de cerca són en conflicte", - "rcfilters-state-message-fullcoverage": "Seleccionant tots els filtres en un grup és el mateix que no seleccionar-ne cap, de manera que aquest filtre no té cap efecte. El grup inclou: $1", - "rcfilters-filtergroup-registration": "Registre d'usuari", - "rcfilters-filter-registered-label": "Registrats", - "rcfilters-filter-registered-description": "Editors que han iniciat sessió", - "rcfilters-filter-unregistered-label": "No registrats", - "rcfilters-filter-unregistered-description": "Editors que no han iniciat una sessió.", + "rcfilters-state-message-subset": "Aquest filtre no te cap efecte perquè els seus resultats ja s'inclouen {{PLURAL:$2|al següent filtre|als següents filtres}} (podeu destacar els resultats per distingir-los): $1", + "rcfilters-state-message-fullcoverage": "Seleccionant tots els filtres en aquest grup és el mateix que no seleccionar-ne cap, de manera que aquest filtre no té cap efecte. El grup inclou: $1", "rcfilters-filtergroup-authorship": "Autoria de les contribucions", "rcfilters-filter-editsbyself-label": "Els vostres canvis", "rcfilters-filter-editsbyself-description": "Les vostres pròpies contribucions.", "rcfilters-filter-editsbyother-label": "Canvis d'altres", "rcfilters-filter-editsbyother-description": "Tots els canvis excepte els vostres.", - "rcfilters-filtergroup-userExpLevel": "Nivell d'experiència (només per a usuaris registrats)", + "rcfilters-filtergroup-userExpLevel": "Registre d'usuaris i experiència", + "rcfilters-filter-user-experience-level-registered-label": "Registrats", + "rcfilters-filter-user-experience-level-registered-description": "Editors que han iniciat sessió", + "rcfilters-filter-user-experience-level-unregistered-label": "No registrats", + "rcfilters-filter-user-experience-level-unregistered-description": "Editors que no han iniciat una sessió.", "rcfilters-filter-user-experience-level-newcomer-label": "Novells", - "rcfilters-filter-user-experience-level-newcomer-description": "Menys de 10 edicions i 4 dies d'activitat.", + "rcfilters-filter-user-experience-level-newcomer-description": "Editors registrats amb menys de 10 edicions i 4 dies d'activitat.", "rcfilters-filter-user-experience-level-learner-label": "Aprenents", - "rcfilters-filter-user-experience-level-learner-description": "Més experiència que els 'novells' però menys que els 'usuaris experimentats'.", + "rcfilters-filter-user-experience-level-learner-description": "Editors registrats amb més experiència que els 'novells' però menys que els 'usuaris experimentats'.", "rcfilters-filter-user-experience-level-experienced-label": "Usuaris experimentats", - "rcfilters-filter-user-experience-level-experienced-description": "Més de 30 dies d'activitat i més de 500 edicions.", + "rcfilters-filter-user-experience-level-experienced-description": "Editors registrats amb més de 500 edicions i 30 dies d'activitat.", "rcfilters-filtergroup-automated": "Contribucions automatitzades", "rcfilters-filter-bots-label": "Bot", "rcfilters-filter-bots-description": "Modificacions fetes per eines automatitzades.", @@ -1398,6 +1417,12 @@ "rcfilters-filter-watchlist-watchednew-label": "Canvis nous a la llista de seguiment", "rcfilters-filter-watchlist-watchednew-description": "Canvis a les pàgines en seguiment que no heu visitat des que van ocórrer els canvis.", "rcfilters-filter-watchlist-notwatched-label": "No és a la llista de seguiment", + "rcfilters-filter-watchlist-notwatched-description": "Tot excepte canvis a les vostres pàgines seguides.", + "rcfilters-filtergroup-watchlistactivity": "Activitat de la llista de seguiment", + "rcfilters-filter-watchlistactivity-unseen-label": "Canvis no vists", + "rcfilters-filter-watchlistactivity-unseen-description": "Canvis a les pàgines que no heu visitat des que van ocórrer els canvis.", + "rcfilters-filter-watchlistactivity-seen-label": "Canvis vists", + "rcfilters-filter-watchlistactivity-seen-description": "Canvis a les pàgines que heu visitat des que van ocórrer els canvis.", "rcfilters-filtergroup-changetype": "Tipus de canvi", "rcfilters-filter-pageedits-label": "Modificacions de pàgina", "rcfilters-filter-pageedits-description": "Modificacions al contingut del wiki, discussions, descripcions de categories…", @@ -1407,11 +1432,23 @@ "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", "rcfilters-filter-excluded": "Exclòs", + "rcfilters-exclude-button-off": "Exclou els seleccionats", + "rcfilters-exclude-button-on": "Excloent els seleccionats", + "rcfilters-view-advanced-filters-label": "Filtres avançats", + "rcfilters-view-tags": "Canvis etiquetats", + "rcfilters-view-namespaces-tooltip": "Filtrar resultats per l'espai de noms", + "rcfilters-view-tags-tooltip": "Filtrar resultats usant etiquetes d'edició", + "rcfilters-view-return-to-default-tooltip": "Torna al menú de filtres principal", + "rcfilters-liveupdates-button": "Actualitzacions en viu", + "rcfilters-liveupdates-button-title-on": "Apaga les actualitzacions en viu", + "rcfilters-liveupdates-button-title-off": "Mostra els nous canvis al moment", + "rcfilters-watchlist-markseen-button": "Marca tots els canvis com a vistos", + "rcfilters-watchlist-edit-watchlist-button": "Editeu la vostra llista de pàgines seguides", "rcnotefrom": "A sota hi ha {{PLURAL:$5|el canvi|els canvis}} a partir de $3, $4 (fins a $1).", "rclistfrom": "Mostra els canvis nous des de $3, $2", "rcshowhideminor": "$1 edicions menors", @@ -1465,7 +1502,7 @@ "recentchanges-page-removed-from-category": "[[:$1]] treta de la categoria", "recentchanges-page-removed-from-category-bundled": "[[:$1]] treta de la categoria, [[Special:WhatLinksHere/$1|aquesta pàgina està inclosa en d'altres]]", "autochange-username": "Canvi automàtic del MediaWiki", - "upload": "Carregueu un fitxer", + "upload": "Pujar un fitxer", "uploadbtn": "Carrega un fitxer", "reuploaddesc": "Torna al formulari per apujar.", "upload-tryagain": "Envia la descripció del fitxer modificat", @@ -2084,7 +2121,7 @@ "unwatchthispage": "Desatén", "notanarticle": "No és una pàgina amb contingut", "notvisiblerev": "S'ha suprimit la versió", - "watchlist-details": "Teniu $1 {{PLURAL:$1|pàgina|pàgines}} a la llista de seguiment, sense comptar les pàgines de discussió.", + "watchlist-details": "{{PLURAL:$1|pàgina|pàgines}} a la llista de seguiment, sense comptar les pàgines de discussió.", "wlheader-enotif": "La notificació per correu electrònic està habilitada.", "wlheader-showupdated": "Les pàgines que s'han canviat des de la vostra darrera visita es mostren en '''negreta'''.", "wlnote": "A sota hi ha {{PLURAL:$1|el darrer canvi|els darrers $1 canvis}} en {{PLURAL:$2|la darrera hora|les $2 darreres hores}}, a $4 del $3.", @@ -2623,7 +2660,7 @@ "tooltip-pt-login": "Us animem a registrar-vos, però no és obligatori", "tooltip-pt-login-private": "Cal que inicieu una sessió per a utilitzar aquest wiki", "tooltip-pt-logout": "Finalitza la sessió d'usuari", - "tooltip-pt-createaccount": "Us animem a què creeu un compte i inicieu sessió, encara que no és obligatori", + "tooltip-pt-createaccount": "Us animem a què creeu un compte i inicieu una sessió, encara que no és obligatori", "tooltip-ca-talk": "Discussió sobre el contingut d'aquesta pàgina", "tooltip-ca-edit": "Modifica aquesta pàgina", "tooltip-ca-addsection": "Comença una secció nova", @@ -2641,21 +2678,21 @@ "tooltip-search-fulltext": "Cerca aquest text a les pàgines", "tooltip-p-logo": "Visiteu la pàgina principal", "tooltip-n-mainpage": "Visiteu la pàgina principal", - "tooltip-n-mainpage-description": "Vegeu la pàgina principal", - "tooltip-n-portal": "Sobre el projecte, què podeu fer, on podeu trobar coses", + "tooltip-n-mainpage-description": "Visiteu la pàgina principal", + "tooltip-n-portal": "Sobre el projecte, què podeu fer, on trobareu les coses", "tooltip-n-currentevents": "Per trobar informació general sobre l'actualitat", - "tooltip-n-recentchanges": "Llista de canvis recents al wiki", + "tooltip-n-recentchanges": "Una llista dels canvis recents al wiki", "tooltip-n-randompage": "Carrega una pàgina a l’atzar", - "tooltip-n-help": "El lloc per saber més coses", - "tooltip-t-whatlinkshere": "Llista de totes les pàgines wiki que enllacen aquí", + "tooltip-n-help": "El lloc per a saber més coses", + "tooltip-t-whatlinkshere": "Una llista de totes les pàgines wiki que enllacen amb aquesta", "tooltip-t-recentchangeslinked": "Canvis recents a pàgines enllaçades des d'aquesta pàgina", "tooltip-feed-rss": "Canal RSS d'aquesta pàgina", "tooltip-feed-atom": "Canal Atom d'aquesta pàgina", "tooltip-t-contributions": "Llista de les contribucions d'{{GENDER:$1|aquest usuari|aquesta usuària}}", "tooltip-t-emailuser": "Envia un correu a {{GENDER:$1|aquest usuari|aquesta usuària}}", "tooltip-t-info": "Més informació sobre aquesta pàgina", - "tooltip-t-upload": "Carregueu fitxers", - "tooltip-t-specialpages": "Llista de totes les pàgines especials", + "tooltip-t-upload": "Pujar alguns fitxers", + "tooltip-t-specialpages": "Llista totes les pàgines especials", "tooltip-t-print": "Versió per a impressió d'aquesta pàgina", "tooltip-t-permalink": "Enllaç permanent a aquesta versió de la pàgina", "tooltip-ca-nstab-main": "Vegeu el contingut de la pàgina", @@ -3386,7 +3423,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", @@ -3502,6 +3538,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 8b8e77f7c8..39267bfab5 100644 --- a/languages/i18n/cdo.json +++ b/languages/i18n/cdo.json @@ -156,13 +156,7 @@ "anontalk": "Păng-gōng", "navigation": "Īng-dô̤:", "and": " gâe̤ng", - "qbfind": "討", - "qbbrowse": "覷蜀覷", - "qbedit": "修改", - "qbpageoptions": "茲蜀頁", - "qbmyoptions": "我其頁面", "faq": "真稠碰著其問題", - "faqpage": "Project:稠問其問題", "actions": "動作", "namespaces": "Miàng-kÅ­ng-găng", "variants": "Biéng-tā̤", @@ -187,29 +181,19 @@ "edit-local": "編輯當地描述", "create": "創建", "create-local": "添加當地描述", - "editthispage": "修改茲頁", - "create-this-page": "創建茲蜀頁", "delete": "刪除", - "deletethispage": "刪除茲頁", - "undeletethispage": "恢復茲蜀頁", "undelete_short": "恢復$1回修改{{PLURAL:$1}}", "viewdeleted_short": "覷蜀覷$1回刪掉其修改{{PLURAL:$1}}", "protect": "保護", "protect_change": "改變", - "protectthispage": "保護茲蜀頁", "unprotect": "改變保護其狀態", - "unprotectthispage": "改變茲蜀頁其保護狀態", "newpage": "新頁", - "talkpage": "討論茲頁", "talkpagelinktext": "páng-gōng", "specialpage": "特殊頁", "personaltools": "Gó̤-ìng gì gă-sÄ­-huă", - "articlepage": "覷蜀覷內容頁面", "talk": "Tō̤-lâung", "views": "Ché̤ṳ-siŏh-ché̤ṳ", "toolbox": "Gă-sÄ­-huă", - "userpage": "覷蜀覷用戶頁面", - "projectpage": "看工程頁", "imagepage": "覷蜀覷文件頁面", "mediawikipage": "看消息頁", "templatepage": "看模板頁", @@ -491,6 +475,8 @@ "minoredit": "過幼修改", "watchthis": "監視茲頁", "savearticle": "Bō̤-còng ciā hiĕk", + "publishpage": "Huák-buó ùng-ciŏng", + "publishchanges": "Huák-buó siÅ­-gāi", "preview": "預覽", "showpreview": "顯示預覽", "showdiff": "看改變其部分", @@ -513,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(段)", @@ -534,6 +520,7 @@ "permissionserrorstext-withaction": "因為下底其{{PLURAL:$1|原因}},汝無能耐 $2 :", "recreate-moveddeleted-warn": "'''注意:汝敆𡅏重新創建舊底已經乞刪唻其頁面。'''\n\n汝應該考慮蜀下繼續去編輯茲蜀頁到底是伓是合適其。茲蜀頁其刪除記錄共移動記錄都敆嚽塊:", "edit-conflict": "編輯衝突", + "postedit-confirmation-saved": "Nṳ̄ gì siÅ­-gāi Ä«-gÄ­ng bō̤-còng.", "content-model-wikitext": "維基文本", "content-model-text": "純文本", "content-model-javascript": "JavaScript", diff --git a/languages/i18n/ce.json b/languages/i18n/ce.json index 2bc253dcab..116b1a9f07 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": "Дага даийта, нагахь нисйарх лаьцна чохь язйина яцахь", @@ -48,6 +48,7 @@ "tog-watchlisthideminor": "Къайладаха кегийра нисдарш тергаме могӀам чура", "tog-watchlisthideliu": "Къайладаха бовзийтина болу декъашхойн нисдарш тергаме могӀам чура", "tog-watchlistreloadautomatically": "Литтарна хийцам хилча авто-карлабаккха тергаме могӀам (оьшу JavaScript)", + "tog-watchlistunwatchlinks": "Тергаме могӀаман тӀетоха дӀаяздарш юкъарадохуш йолу хьажоргаш (оьшу JavaScript)", "tog-watchlisthideanons": "Къайладаха къайлаха болу декъашхойн нисдарш тергаме могӀам чура", "tog-watchlisthidepatrolled": "Къайладаха хьаьжина долу нисдарш тергаме могӀам чура", "tog-watchlisthidecategorization": "АгӀонашна тӀе категореш тохар къайладаккха", @@ -297,7 +298,7 @@ "nosuchspecialpage": "Иштта белхан агӀо яц", "nospecialpagetext": "Иштта белхан агӀо яц.\n\nБелхан агӀонийн могӀам: [[Special:SpecialPages|{{int:specialpages}}]].", "error": "ГӀалат", - "databaseerror": "ГӀалат хаамийн бухера", + "databaseerror": "Хаамийн базан гӀалат", "databaseerror-text": "Хаамийн базан гӀалат даьлла.\nИза хила мега программин гӀалат.", "databaseerror-textcl": "Хаамийн базан гӀалат даьлла.", "databaseerror-query": "Дехар: $1", @@ -313,6 +314,7 @@ "readonly_lag": "Хаамашан базина цхьана хан блоктоьхна, хаамашан базан сервераш нисялца.", "internalerror": "Чоьхьара гӀалат", "internalerror_info": "Чоьхьара гӀалат: $1", + "internalerror-fatal-exception": "Нисдан цало юкъарадаккхар «$1» тайпана", "filecopyerror": "Йиш яц копий ян «$1» оцунах «$2».", "filerenameerror": "Файлан «$1» цӀе хийца «$2» йиш яц.", "filedeleteerror": "ДӀаяккха цатарло файл «$1».", @@ -929,6 +931,7 @@ "gender-female": "сте", "prefs-help-gender": "ТӀехь доцург: и хаам лелош бу цхьайолу хаамаш чохь декъашхочун пол гучуйоккхуш.\nИ хаам массарна гуш хир бу.", "email": "Email", + "prefs-help-realname": "Бакъ цӀе язъяр тӀехь дац.\nИза язйича, ахьа биначу белхийн хьо автор хилар гойтуш лелор ю.", "prefs-help-email": "Электронан поштан адрес цахӀоттийча а хӀумма дац, амма иза оьшар ю, нагахь хьуна хьай пароль йицлахь.", "prefs-help-email-others": "Кхин дӀа цо кхечу декъашхошна йиш хуьлуьйту хьога электронан кехат даийта хьан агӀона чохь йолу хьажориган гӀоьнца.", "prefs-help-email-required": "Электронан поштан адрес яздан деза.", @@ -1145,7 +1148,20 @@ "recentchanges-legend-heading": "Легенда: ", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (хьажа кхин [[Special:NewPages|керла агӀонийн могӀа]])", "recentchanges-submit": "Гайта", - "rcfilters-savedqueries-defaultlabel": "Ӏалашъе луьттург", + "rcfilters-other-review-tools": "Талларан кхин гӀирсаш", + "rcfilters-group-results-by-page": "Карийнарш, агӀонгахь тобанаш ян", + "rcfilters-grouping-title": "Тобанашца нисъяр", + "rcfilters-activefilters": "Жигара литтарш", + "rcfilters-advancedfilters": "Шуьйра литтарш", + "rcfilters-limit-title": "Гойту хийцамаш", + "rcfilters-limit-shownum": "Гайта тӀеххьара {{PLURAL:$1|хийцам}}", + "rcfilters-days-title": "ТӀеххьара денош", + "rcfilters-hours-title": "ТӀеххьара сахьташ", + "rcfilters-days-show-days": "$1 {{PLURAL:$1|де}}", + "rcfilters-days-show-hours": "$1 {{PLURAL:$1|сахьт}}", + "rcfilters-quickfilters": "Ӏалашдина литтарш", + "rcfilters-quickfilters-placeholder-description": "Литтаран буламаш (хьайна) Ӏалашбан лаахь а, йуха уьш лелабан лаахь а, тӀетаӀйе \"жигара литтаран\" уллера хьаьрка.", + "rcfilters-savedqueries-defaultlabel": "Ӏалашдина литтарш", "rcfilters-savedqueries-rename": "ЦӀе хийцар", "rcfilters-savedqueries-setdefault": "Ӏадйитаран кеп хӀоттае", "rcfilters-savedqueries-unsetdefault": "Ӏадйитаран кеп дӀаяккха", @@ -1156,26 +1172,70 @@ "rcfilters-savedqueries-add-new-title": "Ӏалашде литтар нисъяр", "rcfilters-restore-default-filters": "Литтарш Ӏадйитаран кепе меттахӀоттае", "rcfilters-clear-all-filters": "Ерриге литтарш цӀанъян", + "rcfilters-show-new-changes": "ТӀеххьара хийцамаш", + "rcfilters-search-placeholder": "Литтаран керла хийцамаш лахар", "rcfilters-filterlist-title": "Литтарш", + "rcfilters-filterlist-feedbacklink": "Керла (бета) литтарех лаьцна хьайна хеттарг язде", + "rcfilters-highlightbutton-title": "Билгалде карийнарш", + "rcfilters-highlightmenu-help": "Билгалонан бос харжа", "rcfilters-filterlist-noresults": "Литтарш цакарий", - "rcfilters-filtergroup-registration": "Декъашхойн регистраци", - "rcfilters-filter-registered-label": "Регистрацийинарш", - "rcfilters-filter-unregistered-label": "Регистрацицайинарш", "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-filter-patrolled-label": "Патрулйина", + "rcfilters-filtergroup-significance": "МаьӀна", + "rcfilters-filter-minor-label": "Жим нисдарш", + "rcfilters-filter-minor-description": "Авторс жима ду аьлла билгалдина нисдарш.", + "rcfilters-filter-major-label": "Гуттарлера нисдарш", + "rcfilters-filter-major-description": "Жима санна билгалдаза нисдарш.", + "rcfilters-filtergroup-watchlist": "Тергаме могӀаман юкъара агӀонаш", + "rcfilters-filter-watchlist-watched-label": "Тергаме могӀамехь", + "rcfilters-filter-watchlist-watched-description": "Хьан тергаме могӀамехь болу хийцамаш.", + "rcfilters-filter-watchlist-watchednew-label": "Тергаме могӀаман керла хийцамаш", + "rcfilters-filter-watchlist-watchednew-description": "Хьан тергаме могӀаман юкъара хьуна гина боцу хийцамаш.", + "rcfilters-filter-watchlist-notwatched-label": "Тергаме могӀаман юкъахь яц", + "rcfilters-filter-watchlist-notwatched-description": "Ерриге, хьан тергаме могӀаман юкъахь ерш ца гойту.", + "rcfilters-filtergroup-changetype": "Хийцамийн тайпа", + "rcfilters-filter-pageedits-label": "АгӀонан нисдарш", + "rcfilters-filter-pageedits-description": "Дийцарийн а, категорийн а чулацаман дина нисдарш...", + "rcfilters-filter-newpages-label": "АгӀонаш кхоллар", + "rcfilters-filter-newpages-description": "АгӀонаш кхуллуш дина нисдарш.", + "rcfilters-filter-categorization-label": "Категорийн хийцамаш", + "rcfilters-filter-categorization-description": "Категорийн, агӀонаш тӀетохар а, дӀаяхар а.", + "rcfilters-filter-logactions-label": "Урхаллица динарш", + "rcfilters-filter-logactions-description": "Куьйгалхоша динарг, дӀабазбалар, агӀонаш дӀаяхар, файлаш чуяхар...", "rcfilters-filtergroup-lastRevision": "Карара верси", "rcfilters-filter-lastrevision-label": "Карара верси", "rcfilters-filter-lastrevision-description": "АгӀона уггаре тӀеххьара хийцамаш.", "rcfilters-filter-previousrevision-label": "Хьалхара версеш", + "rcfilters-filter-previousrevision-description": "Дерриге нисдарш, «тӀеххьара верси» йоцу.", "rcfilters-filter-excluded": "ДӀаяьккхина", "rcfilters-tag-prefix-namespace-inverted": ":not $1", + "rcfilters-exclude-button-off": "Хаьржинарг юкъарадаккха", + "rcfilters-exclude-button-on": "Хаьржинарг юкъарадаккхар", + "rcfilters-view-advanced-filters-label": "Шуьйра литтарш", "rcfilters-view-tags": "Билгалонаш", + "rcfilters-view-namespaces-tooltip": "Меттигийн цӀерашца литтаран карийнарш", + "rcfilters-view-tags-tooltip": "Нисдарийн билгало йолу литтаран карийна хийцамаш", + "rcfilters-preference-label": "Керла хийцамийн дика кечйина верси къайлаяккха", "rcnotefrom": "Лахахь гайтина тӀера $2 (хийцамаш $1 кӀезиг).", "rclistfromreset": "Терахь харжар дӀадаккха", "rclistfrom": "Гайта хийцам {{CURRENTYEAR}} шеран {{CURRENTDAY}} {{CURRENTMONTHNAMEGEN}} {{CURRENTTIME}} бина болу", @@ -1882,7 +1942,7 @@ "uctop": "(карара)", "month": "Баттачохь (я хьалхе):", "year": "Шерачохь (я хьалхе):", - "sp-contributions-newbies": "Гайта бекъ къинхьегам, керла дlабазбиначара бина болу", + "sp-contributions-newbies": "Керла декъашхойн къинхьегам бен ма гайта", "sp-contributions-newbies-sub": "Керла декъашхойн дӀаяздаршкара", "sp-contributions-newbies-title": "Дукху хан йоцуш кхоьллинчу декъашхойн дӀаяздарийн къинхьегам", "sp-contributions-blocklog": "блоктоьхнарш", @@ -1920,7 +1980,7 @@ "whatlinkshere-submit": "Кхочушдé", "autoblockid": "Ша блоккхетар #$1", "block": "Декъашхочун блоктохар", - "unblock": "ДекъашхонтӀера блокдӀаякхар", + "unblock": "Декъашхочун тӀера блокдӀаякхар", "blockip": "Блоктоха {{GENDER:$1|декъашхочун}}", "blockip-legend": "Декъашхочун блоктохар", "blockiptext": "Бухахь йолу форманца блоктоха IP-адресна цунтӏера дӏаяздарш ца дайта.\nБлоктоха магийна цо зенаш деш делахь кхин хӏокху [[{{MediaWiki:Policy-url}}|низам ца]].\nЛахахь билгалде блоктохарна бахьана.", @@ -1946,11 +2006,11 @@ "ipb-blockingself": "Хьо хьайна блоктоха гӀерта! Лаьий хьона и кхочушдан?", "ipb-edit-dropdown": "Бахьанин могӀам нисбар", "ipb-unblock-addr": "ДӀаякхаблок $1", - "ipb-unblock": "дӀаякхаблок декъашхонтӀера я IP-адрес тӀера", + "ipb-unblock": "дӀаякхаблок декъашхочун тӀера я IP-адрес тӀера", "ipb-blocklist": "Блоктоьхнарш", "ipb-blocklist-contribs": "{{GENDER:$1|$1}} къинхьегам", "ipb-blocklist-duration-left": "$1 йисина", - "unblockip": "ДӀаякхаблок декъашхонтӀера", + "unblockip": "ДӀаякхаблок декъашхочун тӀера", "unblockiptext": "Лелае лахара форма IP-адрес тӀера я декъашхойн дӀаяздар тӀера блокдӀайокхуш.", "ipusubmit": "ДIаяккха хӀара блок", "unblocked": "[[User:$1|$1]] хьайаьстина.", @@ -2319,6 +2379,7 @@ "newimages-summary": "ХӀокху белхан агӀона чохь гойтуш ю дукха хан йоццуш чуяьхна файлаш.", "newimages-legend": "Луьттург", "newimages-user": "Декъашхочун цӀе я IP-адрес", + "newimages-newbies": "Керла декъашхойн къинхьегам бен ма гайта", "newimages-showbots": "Гайта боташ чуяьхна файлаш", "newimages-hidepatrolled": "Къайлаяха патруль йина файлаш", "newimages-mediatype": "Медиа тайпа:", @@ -2520,6 +2581,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": "ГӀеххьа доккха дар", @@ -2729,7 +2792,7 @@ "fileduplicatesearch-noresults": "ЦӀе «$1» йолуш файл цакарий.", "specialpages": "Леррина агӀонаш", "specialpages-note-top": "Легенда", - "specialpages-note": "* Гуттарлера белха агlонаш.\n* Кlеззиг таронаш йолу леррина агlонаш.", + "specialpages-note-restricted": "* Гуттарлера белха агӀонаш.\n* КӀеззиг таронаш йолу белха агӀонаш.", "specialpages-group-maintenance": "Техникийн хьашташ кхочушдаран хаамаш", "specialpages-group-other": "Кхин белхан агӀонаш", "specialpages-group-login": "Довзийтар / дӀаяздар кхоллар", @@ -2827,9 +2890,10 @@ "htmlform-no": "ХӀахӀа", "htmlform-yes": "ХӀаъ", "htmlform-chosen-placeholder": "Харжа кеп", - "htmlform-cloner-create": "ТӀетоха кхин", + "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 яц.", @@ -2944,7 +3008,9 @@ "pagelang-language": "Мотт", "pagelang-use-default": "Ӏадйитаран кепаца мотт", "pagelang-select-lang": "Харжа мотт", + "pagelang-reason": "Бахьана", "pagelang-submit": "ДӀадахьийта", + "pagelang-nonexistent-page": "$1 агӀо яц.", "right-pagelang": "АгӀона мотт хийца", "action-pagelang": "агӀона мотт хийца", "log-name-pagelang": "Мотт хийцаран тептар", @@ -3003,10 +3069,18 @@ "mw-widgets-dateinput-placeholder-day": "ШШШШ-ББ-ДД", "mw-widgets-dateinput-placeholder-month": "ШШШШ-ББ", "mw-widgets-titleinput-description-redirect": "ДӀасхьажорг $1 тӀе", + "mw-widgets-usersmultiselect-placeholder": "Кхин тӀетоха…", "date-range-from": "Терхьера:", "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 117b558eed..11d151f004 100644 --- a/languages/i18n/ckb.json +++ b/languages/i18n/ckb.json @@ -579,7 +579,7 @@ "selfredirect": "ئاگاداری: تۆ خەریکی گواستنەوەی ئەم پەڕەیەیت بۆ سەر خۆی. لەوانەیە خەریکی گواستنەوەی پەڕەیەکی ھەڵە بیت یان ھەوڵی گواستنەوە دەدەیت بۆ ئامانجێکی ھەڵە. \nئەگەر دووبارە کرتە لەسەر «$1» بکەیتەوە، ڕەوانەکەرەکە دروست دەکرێت بەھەرحاڵ.", "missingcommenttext": "تکایە لە خوارەوە شرۆڤەیەک بنووسە.", "missingcommentheader": "'''بیرهێنانەوە:''' بۆ ئەم بۆچوونەت سەردێڕ\\بابەت ڕاچاو نەکردووە.\nئەگەر دیسان «$1» لێبدەی، دەستکاریەکەت بێ سەردێڕ یان بابەت پاشەکەوت دەبێ.", - "summary-preview": "پێشبینینی کورتە:", + "summary-preview": "پێشبینینی کورتەی دەستکاری:", "subject-preview": "پێشبینینی بابەت:", "previewerrortext": "ھەڵەیەک دروست بوو لەکاتی ھەوڵدان بۆ بینینی دەستکارییەکانت.", "blockedtitle": "بەکارھێنەر بەربەست کراوە", @@ -618,7 +618,7 @@ "continue-editing": "چوونە سەر بەشی دەستکاریکردن", "previewconflict": "ئەم پێشبینینە بە تۆ نیشان ئەدات ئەو دەقەی لە شوێنی دەستکاری سەرەوە داتناوە چۆن بەرچاو ئەکەوێت ئەگەر پاشەکەوتی بکەیت.", "session_fail_preview": "ببوورە! ناتوانین دەستکارییەکەت پێواژۆ بکەین بە ھۆی لەدەستدانی زانیاری و داتاکانی ئەم کۆرسە.\nلەوانەیە ھەژمارەکەت کرابێتە دەرەوە. تکایە دڵنیا بکەرەوە کە ھێشتا لە ژوورەوەیت و دووبارە ھەوڵ بدەرەوە.\nئەگەر ھێشتا کار ناکات، [[Special:UserLogout|چوونەدەرەوە]] و گەڕانەوەژوورەوە تاقی بکەوە، دواتریش ئەگەر ھێشتا ڕێگەت نەداوە، ڕێگە بە براوسەرەکەت بدە کە ''کوکی'' لەم سایەتەوە وەربگرێت.", - "session_fail_preview_html": "'''ببوورە! ناتوانین دەستکارییەکەت پێواژۆ بکەین بە ھۆی لەدەستدانی session data.'''\n\n''لەبەر ئەوەی {{SITENAME}} ڕێگەی داوە بە raw HTML، بۆ بەرگری بەرامبەر بە هێرشەکانی جاڤاسکریپت، پێشبینین شاردراوەتەوە.''\n\n'''ئەگەر ئەمە ھەوڵێکی دەستکاریکردنی ڕەوایە، تکایە دیسان ھەوڵبدەوە.'''\nئەگەر ھێشتا کار ناکات، [[Special:UserLogout|چوونە دەرەوە]] گەڕانەوەژوورەوە تاقی بکەوە.", + "session_fail_preview_html": "ببوورە! ناتوانین دەستکارییەکەت پێواژۆ بکەین بە ھۆی لەدەستدانی session data.\n\nلەبەر ئەوەی {{SITENAME}} ڕێگەی داوە بە raw HTML، بۆ بەرگری بەرامبەر بە هێرشەکانی جاڤاسکریپت، پێشبینین شاردراوەتەوە.\n\nئەگەر ئەمە ھەوڵێکی دەستکاریکردنی ڕەوایە، تکایە دیسان ھەوڵبدەوە.\nئەگەر ھێشتا کار ناکات، [[Special:UserLogout|چوونە دەرەوە]] گەڕانەوەژوورەوە تاقی بکەوە و دڵنیابەرەوە کە وێبگەڕەکەت ڕێگە بە کووکییەکانی ئەم ماڵپەڕە دەدات.", "token_suffix_mismatch": "'''دەستکاریەکەت پەسەند نەکرا لەبەر ئەوەی ڕاژەخواز یان وێبگەڕەکەت نووسەکانی خاڵبەندی لەیەک پچڕاندوە.'''
    \nدەستکاریەکەت بۆ بەرگری لە تێکەڵ‌بوونی دەقی لاپەڕەکە وەر نەگیرا.
    \nئەمە بڕێ‌جار کاتێ ڕوو ئەدات کە لە خزمەتی پرۆکسی سەر وێب کەڵک وەر بگریت.", "edit_form_incomplete": "ھەندێک بەشی دەستکارییەکانت بە سێرڤەرەکەمان نەگەیشت. دووبارە سەیری دەستکارییەکانت بکە بۆ دڵنیا بوون لە تەواوییان و دووبارە ھەوڵ بدەرەوە.", "editing": "دەستکاریکردنی $1", @@ -638,7 +638,7 @@ "readonlywarning": "ئاگاداری: بنکەی زانیاری بۆ چاکسازی داخراوە، بۆیە ئێستا ناتوانی دەستکاریەکانت پاشەکەوت بکەیت.\nدەتوانیت دەقەکەت لەبەر بگریتەوە بۆ پەڕگەیەک و ھەڵی بگریت بۆ دوایی.\nئەو بەڕێوەبەرەی کە دای خستووە، ئەم هۆکارەی دەستنیشان کردووە: $1", "protectedpagewarning": "'''وشیار بە: ئەم پەڕە پارێزراوە بۆ ئەوی تەنیا ئەو بەکارھێنەرانە کە مافەکانی بەڕێوەبەرایەتییان ھەیە بتوانن دەستکاریی بکەن.'''\nدوایین لۆگ بۆ ژێدەر لە خوارەوەدا ھاتووە:", "semiprotectedpagewarning": "'''ئاگاداری:''' ئەم پەڕە داخراوە بۆ ئەوی تەنھا بەکارھێنەرە تۆمارکراوەکان بتوانن دەستکاریی بکەن.\nدوایین لۆگ بۆ ژێدەر لە خوارەوەدا ھاتووە:", - "cascadeprotectedwarning": "'''ئاگاداری:''' ئەم لاپەڕە داخراوە بۆ ئەوەی تەنھا ئەو کەسانەی کە مافی بەڕێوبەرایەتییان هەیە بتوانن دەستکاری بکەن، چوونکە ئەم {{PLURAL:$1|لاپه‌ڕه‌|لاپه‌ڕانه‌}} لە زنجیرەی پارێزراوەکانی لە خۆ گرتووە‌:", + "cascadeprotectedwarning": "'''ئاگاداری:''' ئەم پەڕەیە داخراوە بۆ ئەوەی تەنھا ئەو کەسانەی کە [[Special:ListGroupRights|مافیان ھەیە]] بتوانن دەستکاری بکەن، چوونکە ئەم {{PLURAL:$1|لاپه‌ڕه‌|لاپه‌ڕانه‌}} لە زنجیرەی پارێزراوەکانی لە خۆ گرتووە‌:", "titleprotectedwarning": "'''ئاگاداری: ئەم پەڕە داخراوە، بۆئەوەی بۆ درووست‌کردنی [[Special:ListGroupRights|مافە تایبەتەکانت]] پێویستن.'''\nبۆ چاوانە دوایین لۆگ لە خوارەوەدا ھاتووە:", "templatesused": "ئەو {{PLURAL:$1|داڕێژەیە کە لەم پەڕەیەدا بە کارھێنراوە|داڕێژانە کە لەم پەڕەیەدا بە کارھێنراون}}:", "templatesusedpreview": "ئەو {{PLURAL:$1|داڕێژەیە کە لەم پێشبینینەدا بە کارھێنراوە|داڕێژانە کە لەم پێشبینینەدا بە کارھێنراون}}:", @@ -655,8 +655,8 @@ "permissionserrorstext": "مافی ئەنجامی ئەوەت نیە لەبەر ئەم {{PLURAL:$1|هۆکار|هۆکارانە}} :", "permissionserrorstext-withaction": "دەسەڵاتت نییە بۆ $2، لەبەر ئەم {{PLURAL:$1|ھۆکارە|ھۆکارانە}}ی خوارەوە:", "recreate-moveddeleted-warn": "'''ھۆشیار بە: خەریکی پەڕەیەک دروست‌ دەکەیتەوە کە لە پێشدا سڕاوەتەوە.'''\n\nئەمە لەبەر چاو بگرە کە دەستکاریکردنی ئەم پەڕەیە بەقازانجە یان نا.\nلۆگی سڕینەوە و گواستنەوەی ئەم پەڕەیە بۆ سانایی لێرەدا ھاتووە:", - "moveddeleted-notice": "ئەم پەڕەیە سڕاوەتەوە.\nلۆگی سڕینەوە و گواستنەوە بۆ پەڕەکە لە ژێرەوە دابین کراوە.", - "moveddeleted-notice-recent": "ببورە، ئەم پەڕەیە بەم زووانە سڕدراوەتەوە (لە ماوەی ٢٤ کاتژمێری پێشوودا). \nلۆگی سڕینەوە و ڕەوانەکردنی پەڕەکە بەردەستن لە خوارەوە لە پەڕاوێزەکاندا.", + "moveddeleted-notice": "ئەم پەڕەیە سڕاوەتەوە.\nلۆگی سڕینەوە، پاراستن و گواستنەوە بۆ پەڕەکە لە ژێرەوە دابین کراوە.", + "moveddeleted-notice-recent": "ببورە، ئەم پەڕەیە بەم زووانە سڕدراوەتەوە (لە ماوەی ٢٤ کاتژمێری پێشوودا). \nلۆگی سڕینەوە، پاراستن و ڕەوانەکردنی پەڕەکە بەردەستن لە خوارەوە لە پەڕاوێزەکاندا.", "log-fulllog": "لۆگی تەواو ببینە", "edit-hook-aborted": "دەستکاری لە لایەن قولاپەوە ھەڵوەشێنرایەوە.\nھۆکارەکەی لەبەر دەست نییە.", "edit-gone-missing": "توانای نوێ‌کردنەوەی لاپەڕەکە نیە.
    \nلەوە دەچی سڕدرابێتەوه.‌", @@ -685,7 +685,7 @@ "parser-template-loop-warning": "ئەڵقەی داڕێژە دۆزرایەوە: [[$1]]", "parser-template-recursion-depth-warning": "سنووری قووڵی گەڕانەوەی داڕێژە تێپەڕیوە ($1)", "undo-success": "دەکرێ دەستکاریەکە پووچەڵبکرێتەوە.\nتکایە چاو لەو هەڵسەنگاندنەی خوارەوە بکە تا دڵنیا بیت ئەمە ئەوەیە کە‌ دەتویست بیکەی و دواتر گۆڕانکارییەکانی خوارەوە پاشەکەوت بکە بۆ تەواوکردنی پووچەڵکردنەوەکە.", - "undo-failure": "لەبەر کێشەی دەست‌تێ‌وەردان، ناتوانی دەستکاریەکە ئەنجام‌نەدراو بکەیت.", + "undo-failure": "نەتواندرا دەستکارییەکە پووچەڵ بکرێتەوە لەبەر کێشەی دەستتێوەردان.", "undo-norev": "ناتوانی دەستکاریەکە ئەنجام‌نەدراو بکەی لەبەر ئەوەی بوونی نیە یا سڕدراوەتەوە.", "undo-nochange": "وا دیارە دەستکارییەکە پووچەڵ کراوەتەوە.", "undo-summary": "گەڕاندنەوەی پێداچوونەوەی $1 لە لایەن [[Special:Contributions/$2|$2]] ([[User talk:$2|لێدوان]])", @@ -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,16 +1165,16 @@ "rcfilters-clear-all-filters": "ھەموو فیلتەرەکان بسڕەوە", "rcfilters-search-placeholder": "پاڵاوتنی گۆڕانکارییە نوێیەکان (بگەڕێ یان دەست بە نووسین بکە)", "rcfilters-filterlist-title": "فیلتەرەکان", - "rcfilters-filterlist-whatsthis": "ئەمە چییە؟", + "rcfilters-filterlist-whatsthis": "ئەمە چۆن کاردەکات؟", "rcfilters-highlightmenu-title": "ڕەنگێکی نوێ ھەڵبژێرە", - "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-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": "ئەو بەکارھێنەرانەی لە ژوورەوەن", + "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-experienced-label": "بەکارھێنەرانی پێشکەوتوو", @@ -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", @@ -2756,7 +2758,6 @@ "fileduplicatesearch-result-n": "پەڕگەی «$1» {{PLURAL:$2|١ دووپاتکراوەی کوتوموتی|$2 دووپاتکراوەی کوتوموتی}} ھەیە.", "fileduplicatesearch-noresults": "پەڕگەیەک بە ناوی «$1» نەدۆزرایەوە.", "specialpages": "پەڕە تایبەتەکان", - "specialpages-note": "* پەڕە تایبەتە ئاساییەکان.\n* پەڕە تایبەتە بەرگریلێکراوەکان.", "specialpages-group-maintenance": "ڕاپۆرتەکانی چاکسازی", "specialpages-group-other": "پەڕە تایبەتەکانی دیکە", "specialpages-group-login": "چوونەژوورەوە / دروستکردنی ھەژمار", @@ -2806,6 +2807,7 @@ "compare-rev2": "پێداچوونەوەی ٢", "compare-submit": "ھەڵسەنگاندن", "compare-invalid-title": "ئەم سەردێڕە دەستنیشانت کردووە نادروستە.", + "diff-form": "جیاوازیەکان", "dberr-problems": "ببورە! ئەم ماڵپەڕە ئێستا خەریک ئەزموونێکی کێشەی تەکنیکیە.", "dberr-again": "چەن خولک ڕاوەستە و نوێی بکەوە.", "dberr-info": "(ناتوانیت بگەیت بە بنکەدراو: $1)", @@ -2827,7 +2829,7 @@ "htmlform-title-not-exists": "$1 بوونی نیە.", "logentry-delete-delete": "$1 پەڕەی $3ی {{GENDER:$2|سڕییەوە}}", "logentry-delete-delete_redir": "$1 {{GENDER:$2|ڕەوانەکەری}} $3 سڕیەوە", - "logentry-delete-restore": "$1 پەڕەی $3ی {{GENDER:$2|ھێنایەوە}}", + "logentry-delete-restore": "$1 پەڕەی $3ی {{GENDER:$2|ھێنایەوە}} ($4)", "logentry-delete-revision": "$1 دەرکەوتنی {{PLURAL:$5|پێداچوونەوەیەکی|$5 پێداچوونەوەی}} پەڕەی $3ی {{GENDER:$2|گۆڕیی}}: $4", "logentry-suppress-delete": "$1 پەڕەی $3 {{GENDER:$2|بەرگری کرد}}.", "revdelete-content-hid": "ناوەرۆک شاردراوە", @@ -2839,8 +2841,9 @@ "revdelete-restricted": "ئەو سنووری بەرگریانەی خستراوەتە سەر بەڕێوبەران", "revdelete-unrestricted": "ئەو سنووری بەرگریانەی لابردراوە لە سەر بەڕێوبەران", "logentry-block-block": "$1 {{GENDER:$4|$3}}ی بۆ ماوەی $5 {{GENDER:$2|بەربەست کرد}} $6", + "logentry-import-upload": "$1 {{GENDER:$2|بارکرد}} $3 بە بەکارھێنانی [[special:Import|بارکەر]]", "logentry-move-move": "$1 پەڕەی $3ی {{GENDER:$2|گواستەوە}} بۆ $4", - "logentry-move-move-noredirect": "$1 پەڕەی $3ی بەبێ بەجێھشتنی ڕەوانەکەرێک {{GENDER:$2|گواستەوە}} بۆ $4", + "logentry-move-move-noredirect": "$1 پەڕەی $3ی بە بێ بەجێھشتنی ڕەوانەکەرێک {{GENDER:$2|گواستەوە}} بۆ $4", "logentry-move-move_redir": "$1 پەڕەی $3 {{GENDER:$2|گواستەوە}} بۆ $4 کە پێشتر ڕەوانەکەر بوو", "logentry-move-move_redir-noredirect": "$1 پەڕەی $3ی بەبێ بەجێھشتنی ڕەوانەکەرێک {{GENDER:$2|گواستەوە}} بۆ $4 کە پێشتر ڕەوانەکەر بوو", "logentry-patrol-patrol": "$1 پێداچوونەوەی $4ی پەڕەی $3 وەک پاس دراو {{GENDER:$2|نیشان کرد}}", @@ -2851,11 +2854,13 @@ "logentry-newusers-byemail": "ھەژماری بەکارھێنەریی $3 لە لایەن $1 {{GENDER:$2|دروست کرا}} و تێپەڕوشە بە ئیمەیل نێردرا", "logentry-newusers-autocreate": "ھەژماری بەکارھێنەریی $1 بە شێوەی خۆگەڕ {{GENDER:$2|دروست کرا}}", "logentry-protect-move_prot": "$1 {{GENDER:$2}} ڕێکخستنەکانی پاراستنی گۆڕی لە $4 بۆ $3", + "logentry-protect-unprotect": "$1 {{GENDER:$2|پاراستنی}} لەسەر $3 لابرد", "logentry-protect-protect": "$1 $3ی {{GENDER:$2|پاراست}} $4", "logentry-protect-modify": "$1 ئاستی پاراستنی $3ی {{GENDER:$2|گۆڕی}} $4", "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": "ھەڵوەشاندنەوە", @@ -2909,6 +2914,7 @@ "special-characters-group-gujarati": "گوجەراتی", "special-characters-group-thai": "تایلەندی", "special-characters-group-khmer": "خمێری", + "log-action-filter-block": "جۆری بلۆک:", "log-action-filter-all": "ھەموو", "log-action-filter-upload-upload": "بارکردنی نوێ", "authmanager-email-label": "ئیمەیڵ" diff --git a/languages/i18n/cs.json b/languages/i18n/cs.json index 64bba7ab5c..bbb81e5c2f 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", @@ -695,7 +696,6 @@ "explainconflict": "Někdo změnil stránku po započetí vaší editace.\nVýše vidíte aktuální text stránky.\nVaše změny jsou uvedeny dole.\nMusíte sloučit své změny se stávajícím textem.\nPouze výše uvedený text zůstane uchován po kliknutí na „$1“.", "yourtext": "Váš text", "storedversion": "Uložená verze", - "nonunicodebrowser": "UPOZORNĚNÍ: Váš prohlížeč není schopen pracovat se znaky Unicode.\nAbyste mohli tuto stránku bezpečně editovat, je použita pomůcka: všechny znaky mimo ASCII jsou v editačním poli zobrazeny v hexadecimálních kódech.", "editingold": "'''VAROVÁNÍ: Nyní editujete zastaralou verzi této stránky. Když ji uložíte, všechny pozdější změny se ztratí.'''", "yourdiff": "Rozdíly", "copyrightwarning": "Všechny příspěvky do {{grammar:2sg|{{SITENAME}}}} jsou zveřejňovány podle $2 (podrobnosti najdete na $1).\nPokud si nepřejete, aby váš text byl nemilosrdně upravován a volně šířen, pak ho do {{grammar:2sg|{{SITENAME}}}} neukládejte.
    \nUložením příspěvku se zavazujete, že je vaším dílem nebo je zkopírován ze zdrojů, které nejsou chráněny autorským právem (tzv. public domain).\n'''NEVKLÁDEJTE DÍLA CHRÁNĚNÁ AUTORSKÝM PRÁVEM BEZ DOVOLENÍ!'''", @@ -723,8 +723,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.", @@ -763,6 +763,7 @@ "parser-template-loop-warning": "Nalezena smyčka Å¡ablon: [[$1]]", "template-loop-category": "Stránky se smyčkami Å¡ablon", "template-loop-category-desc": "Stránka obsahuje smyčku Å¡ablon, tj. Å¡ablonu, která je vložená sama do sebe.", + "template-loop-warning": "Upozornění: Tato stránka volá [[:$1]], což způsobuje smyčku Å¡ablon (nekonečné rekurzivní volání).", "parser-template-recursion-depth-warning": "Překročen limit hloubky rekurzivního vkládání Å¡ablon ($1)", "language-converter-depth-warning": "Překročen limit vnoření u jazykové konverze ($1)", "node-count-exceeded-category": "Stránky překračující počet uzlů", @@ -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é", @@ -1032,6 +1033,7 @@ "timezoneregion-indian": "Indický oceán", "timezoneregion-pacific": "Tichý oceán", "allowemail": "Povolit e-mail od ostatních uživatelů", + "email-blacklist-label": "Znemožnit těmto uživatelům posílat mi e-maily:", "prefs-searchoptions": "Vyhledávání", "prefs-namespaces": "Jmenné prostory", "default": "implicitní", @@ -1308,9 +1310,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 {{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.", @@ -1322,43 +1335,41 @@ "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-search-placeholder": "Filtrovat nedávné změny (prohlížejte nebo začněte psát)", + "rcfilters-show-new-changes": "Zobrazit nejnovější změny", + "rcfilters-search-placeholder": "Filtrujte poslední 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.", "rcfilters-filterlist-title": "Filtry", - "rcfilters-filterlist-whatsthis": "Co to je?", - "rcfilters-filterlist-feedbacklink": "Poskytnout novým (beta) filtrům zpětnou vazbu", + "rcfilters-filterlist-whatsthis": "Jak to funguje?", + "rcfilters-filterlist-feedbacklink": "Řekněte nám, co si myslíte o těchto (nových) filtrech", "rcfilters-highlightbutton-title": "Zvýraznit výsledky", "rcfilters-highlightmenu-title": "Vybrat barvu", "rcfilters-highlightmenu-help": "Vyberte barvu pro zvýraznění této vlastnosti", "rcfilters-filterlist-noresults": "Nenalezeny žádné filtry", "rcfilters-noresults-conflict": "Nenalezeny žádné výsledky, protože vyhledávací kritéria jsou v konfliktu", "rcfilters-state-message-subset": "Tento filtr nemá žádný vliv, protože jeho výsledky jsou již zahrnuty {{PLURAL:$2|následujícím, Å¡irším filtrem|následujícími, Å¡iršími filtry}} (pro odliÅ¡ení zkuste zvýraznění): $1", - "rcfilters-state-message-fullcoverage": "Výběr vÅ¡ech filtrů ve skupině odpovídá výběru žádného, proto tento filtr nemá žádný vliv. Skupina zahrnuje: $1", - "rcfilters-filtergroup-registration": "Registrace uživatele", - "rcfilters-filter-registered-label": "Registrovaní", - "rcfilters-filter-registered-description": "Přihlášení editoři.", - "rcfilters-filter-unregistered-label": "Neregistrovaní", - "rcfilters-filter-unregistered-description": "Editoři, kteří nejsou přihlášení", - "rcfilters-filter-unregistered-conflicts-user-experience-level": "Tento filtr je v konfliktu s {{PLURAL:$2|následujícím filtrem|následujícími filtry}} podle zkuÅ¡eností, {{PLURAL:$2|vyhledávajícím|vyhledávajícími}} pouze registrované uživatele: $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.", "rcfilters-filter-editsbyother-label": "Změny ostatních", "rcfilters-filter-editsbyother-description": "VÅ¡echny změny kromě vaÅ¡ich.", - "rcfilters-filtergroup-userExpLevel": "Úroveň zkuÅ¡eností (pouze registrovaných uživatelů)", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Filtr podle zkuÅ¡eností vyhledává pouze registrované uživatele, tento filtr je tedy v konfliktu s filtrem „Neregistrovaní“.", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Filtr „Neregistrovaní“ je v konfliktu s jedním nebo více filtry podle zkuÅ¡eností, vyhledávajícími pouze registrované uživatele. Dotyčné filtry jsou označeny nahoře, v prostoru „Aktivní filtry“.", + "rcfilters-filtergroup-userExpLevel": "Registrace a zkuÅ¡enost uživatelů", + "rcfilters-filter-user-experience-level-registered-label": "Registrovaní", + "rcfilters-filter-user-experience-level-registered-description": "Přihlášení editoři.", + "rcfilters-filter-user-experience-level-unregistered-label": "Neregistrovaní", + "rcfilters-filter-user-experience-level-unregistered-description": "Editoři, kteří nejsou přihlášení.", "rcfilters-filter-user-experience-level-newcomer-label": "Nováčci", - "rcfilters-filter-user-experience-level-newcomer-description": "Méně než 10 editací a 4 dny činnosti.", + "rcfilters-filter-user-experience-level-newcomer-description": "Registrovaní uživatelé s méně než 10 editacemi a 4 dny činnosti.", "rcfilters-filter-user-experience-level-learner-label": "Začátečníci", - "rcfilters-filter-user-experience-level-learner-description": "Více zkuÅ¡eností než „Nováčci“, ale méně než „ZkuÅ¡ení uživatelé“.", + "rcfilters-filter-user-experience-level-learner-description": "Registrovaní uživatelé, jejichž zkuÅ¡enosti spadají mezi „Nováčky“ a „ZkuÅ¡ené uživatele“.", "rcfilters-filter-user-experience-level-experienced-label": "ZkuÅ¡ení uživatelé", - "rcfilters-filter-user-experience-level-experienced-description": "Více než 30 dní činnosti a 500 editací.", + "rcfilters-filter-user-experience-level-experienced-description": "Registrovaní uživatelé s více než 500 editacemi a 30 dny činnosti.", "rcfilters-filtergroup-automated": "Automatizované příspěvky", "rcfilters-filter-bots-label": "Robot", "rcfilters-filter-bots-description": "Editace provedené pomocí automatizovaných nástrojů.", @@ -1381,6 +1392,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í…", @@ -1395,11 +1411,26 @@ "rcfilters-typeofchange-conflicts-hideminor": "Tento filtr podle typu změny je v konfliktu s filtrem „Malé editace“. Určité typy změn nelze označit jako malé.", "rcfilters-filtergroup-lastRevision": "Aktuální verze", "rcfilters-filter-lastrevision-label": "Aktuální verze", - "rcfilters-filter-lastrevision-description": "Poslední změna stránky.", - "rcfilters-filter-previousrevision-label": "Dřívější verze", - "rcfilters-filter-previousrevision-description": "VÅ¡echny změny, které nejsou nejnovější úpravou stránky.", + "rcfilters-filter-lastrevision-description": "Jen poslední změna stránky.", + "rcfilters-filter-previousrevision-label": "Ne nejnovější revize", + "rcfilters-filter-previousrevision-description": "VÅ¡echny změny, které nejsou „nejnovější revizí“.", + "rcfilters-filter-excluded": "Vynechaný", + "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é", + "rcfilters-watchlist-edit-watchlist-button": "Editovat seznam sledovaných stránek", + "rcfilters-watchlist-showupdated": "Změny stránek, které jste od provedení změn nenavÅ¡tívili, jsou zobrazeny tučně s vyplněnou značkou.", + "rcfilters-preference-label": "Skrýt vylepÅ¡enou verzi posledních změn", + "rcfilters-preference-help": "Zruší novou podobu rozhraní zavedenou v roce 2017 a vÅ¡echny nástroje přidané od té doby.", "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", @@ -1456,6 +1487,7 @@ "uploadbtn": "Načíst soubor", "reuploaddesc": "ZruÅ¡it načítání a vrátit se do formuláře.", "upload-tryagain": "Uložit upravený popis souboru", + "upload-tryagain-nostash": "Odeslat znovunačtený soubor a upravený popis", "uploadnologin": "Nejste přihlášen(a)", "uploadnologintext": "Pro načtení souboru se musíte $1.", "upload_directory_missing": "Adresář pro nahrávání souborů ($1) chybí a webový server ho nedokáže vytvořit.", @@ -1515,6 +1547,7 @@ "file-deleted-duplicate-notitle": "Identický soubor k tomuto byl již dříve smazán a název byl utajen.\nPřed tím, než soubor znovu nahrajete, byste měli požádat někoho, kdo může prohlížet utajené soubory, aby situaci zkontroloval.", "uploadwarning": "Upozornění k načítání", "uploadwarning-text": "Prosíme, upravte popis souboru níže a zkuste to znovu.", + "uploadwarning-text-nostash": "Načtěte prosím soubor jeÅ¡tě jednou, upravte popis níže a zkuste to znovu.", "savefile": "Uložit soubor", "uploaddisabled": "Načítání souborů vypnuto.", "copyuploaddisabled": "Načítání souborů prostřednictvím URL je vypnuto.", @@ -1677,7 +1710,7 @@ "listfiles_size": "Velikost (bajtů)", "listfiles_description": "Popis", "listfiles_count": "Verze", - "listfiles-show-all": "Zahrnout staré verze obrázků", + "listfiles-show-all": "Zahrnout staré verze souborů", "listfiles-latestversion": "Aktuální verze", "listfiles-latestversion-yes": "Ano", "listfiles-latestversion-no": "Ne", @@ -1780,6 +1813,8 @@ "pageswithprop-legend": "Stránky s vlastností", "pageswithprop-text": "Tato stránka obsahuje seznam stránek, které používají zadanou vlastnost stránky.", "pageswithprop-prop": "Název vlastnosti:", + "pageswithprop-reverse": "Seřadit v opačném pořadí", + "pageswithprop-sortbyvalue": "Seřadit podle hodnoty vlastnosti", "pageswithprop-submit": "Provést", "pageswithprop-prophidden-long": "dlouhá hodnota textové vlastnosti skryta ($1)", "pageswithprop-prophidden-binary": "hodnota binární vlastnosti skryta ($1)", @@ -2081,9 +2116,9 @@ "unwatchthispage": "Nesledovat tuto stránku", "notanarticle": "Toto není stránka", "notvisiblerev": "Verze byla smazána", - "watchlist-details": "Na vaÅ¡em seznamu sledovaných stránek {{PLURAL:$1|je $1 stránka|jsou $1 stránky|je $1 stránek}}, nepočítaje v to diskusní stránky.", + "watchlist-details": "Na vaÅ¡em seznamu sledovaných stránek {{PLURAL:$1|je $1 stránka|jsou $1 stránky|je $1 stránek}} (a k tomu diskusní stránky).", "wlheader-enotif": "Upozorňování e-mailem je zapnuto.", - "wlheader-showupdated": "Stránky, které se změnily od vaší poslední návÅ¡těvy, jsou zobrazeny '''tučně'''.", + "wlheader-showupdated": "Stránky, které se změnily od vaší poslední návÅ¡těvy, jsou zobrazeny tučně.", "wlnote": "Níže {{PLURAL:$1|je poslední změna|jsou poslední $1 změny|je posledních $1 změn}} za {{PLURAL:$2|poslední hodinu|poslední $2 hodiny|posledních $2 hodin}} do $4, $3.", "wlshowlast": "Ukázat posledních $1 hodin $2 dnů", "watchlist-hide": "Skrýt", @@ -2116,6 +2151,7 @@ "enotif_lastdiff": "Tuto změnu si můžete prohlédnout na $1", "enotif_anon_editor": "anonymní uživatel $1", "enotif_body": "Vážený uživateli $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nShrnutí editace: $PAGESUMMARY $PAGEMINOREDIT\n\nUživatele, který změnu provedl, můžete kontaktovat:\ne-mailem: $PAGEEDITOR_EMAIL\nna wiki: $PAGEEDITOR_WIKI\n\nDo doby, než stránku navÅ¡tívíte jako přihlášený uživatel, vám další oznámení k této stránce nebudou zasílána. Případně si můžete vynulovat příznaky ve svém seznamu sledovaných stránek.\n\nS pozdravem váš zasílač hlášení {{grammar:2sg|{{SITENAME}}}}\n\n--\nZměnit nastavení e-mailových oznámení můžete na\n{{canonicalurl:{{#special:Preferences}}}}\n\nNastavení sledovaných stránek může změnit na\n{{canonicalurl:Special:Watchlist/edit}}\n\nStránku můžete ze svých sledovaných vyřadit na\n$UNWATCHURL\n\nRady a kontakt:\n$HELPPAGE", + "enotif_minoredit": "Toto je malá editace", "created": "vytvořil", "changed": "upravil", "deletepage": "Smazat stránku", @@ -2144,6 +2180,7 @@ "delete-warning-toobig": "Tato stránka má velkou historii editací, přes $1 {{PLURAL:$1|verzi|verze|verzí}}. Mazání takových stránek může naruÅ¡it databázové operace {{grammar:2sg|{{SITENAME}}}}; postupujte opatrně.", "deleteprotected": "Tuto stránku nemůžete smazat, protože je zamčena.", "deleting-backlinks-warning": "Upozornění: Stránka, kterou se chystáte smazat, je [[Special:WhatLinksHere/{{FULLPAGENAME}}|na jiných stránkách]] odkazována nebo je do nich vložena.", + "deleting-subpages-warning": "Upozornění: Stránka, kterou se chystáte smazat, má [[Special:PrefixIndex/{{FULLPAGENAME}}/|{{PLURAL:$1|podstránku|$1 podstránky|$1 podstránek|51=více než 50 podstránek}}]].", "rollback": "Vrátit zpět editace", "rollbacklink": "vrácení zpět", "rollbacklinkcount": "vrácení $1 {{PLURAL:$1|editace|editací}} zpět", @@ -2309,6 +2346,7 @@ "sp-contributions-newonly": "Zobrazit pouze editace zakládající stránku", "sp-contributions-hideminor": "Skrýt malé editace", "sp-contributions-submit": "Zobrazit", + "sp-contributions-outofrange": "Výsledky nelze zobrazit. Požadovaný rozsah IP adres je větší než limit CIDR /$1.", "whatlinkshere": "Odkazuje sem", "whatlinkshere-title": "Stránky odkazující na „$1“", "whatlinkshere-page": "Strana:", @@ -2597,7 +2635,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.", @@ -2676,7 +2714,7 @@ "tooltip-save": "Uložit vaÅ¡e změny", "tooltip-publish": "Zveřejnit vaÅ¡e změny", "tooltip-preview": "Zobrazit náhled vaÅ¡ich změn; prosíme, zobrazte si ho před uložením!", - "tooltip-diff": "Zobrazit, jaké změny jste v textu provedli", + "tooltip-diff": "Zobrazit změny, které jste v textu provedli", "tooltip-compareselectedversions": "Podívat se na rozdíly mezi dvěma vybranými verzemi této stránky.", "tooltip-watch": "Přidat stránku do seznamu sledovaných", "tooltip-watchlistedit-normal-submit": "Odstranit položky", @@ -3421,7 +3459,7 @@ "fileduplicatesearch-noresults": "Žádný soubor s názvem „$1“ nebyl nalezen.", "specialpages": "Speciální stránky", "specialpages-note-top": "Legenda", - "specialpages-note": "* Normální speciální stránky\n* Speciální stránky s vyhrazeným přístupem", + "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", @@ -3540,6 +3578,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 fade3533ed..405e14fb2b 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", @@ -332,10 +332,13 @@ "viewsource-title": "Zdrojowi tekst starnë $1", "viewsourcetext": "Zdrojowi tekst starnë mòże przezérac ë kòpiérowac.", "editinginterface": "'''ÒSTRZÉGA:''' Editëjesz starnã, jakô zamëkô w se tekst interfejsu softwôrë. Wszëtczé zmianë tu zrobioné bãdze widzec na interfejse jinszëch brëkòwników.\nPrzemëszlë dolmaczënié na [https://translatewiki.net/wiki/Main_Page?setlang=csb translatewiki.net], ekstra ùdbie lokalizacëji softwôrë MediaWiki.", - "logouttext": "'''Jes wëlogòwóny.'''\nMòżesz robic dali na {{SITENAME}} jakno anonimòwi brëkòwnik abò sã [$1 wlogòwac] znowa jakno równy, a bò jinszi brëkòwnik.\nBôczë, że do czasu wëczëszczenia pòdrãczny pamiãcë przezérnika, niejedné starnë bãdą wëzdrzëc jakbë të bëł wlogòwóny.", + "exception-nologin": "Nie jes wlogòwôny/a", + "logouttext": "Jes terô wëlogòwóny.\n\nBôczë, że do czasu wëczëszczeniô pòdrãczny pamiãcë przezérnika, niejedné starnë bãdą wëzdrzëc jakbë të bëł wlogòwóny.", + "welcomeuser": "Witôj, $1!", "yourname": "Miono brëkòwnika", "userlogin-yourname": "Miono brëkòwnika", "userlogin-yourname-ph": "Wpiszë swòjé miono brëkòwnika", + "createacct-another-username-ph": "Wpiszë miono brëkòwnika", "yourpassword": "Twòja parola", "userlogin-yourpassword": "Parola", "userlogin-yourpassword-ph": "Wprowadzë swòją parolã", @@ -344,6 +347,10 @@ "createacct-yourpasswordagain": "Pòcwierdzë parolã", "createacct-yourpasswordagain-ph": "Wprowôdzë parolã przistãpù znowa", "userlogin-remembermypassword": "Nie wëlogùjë mie", + "cannotlogin-title": "Ni mòże sã wlogòwac", + "cannotlogin-text": "Logòwanié nie je mòżlëwé", + "cannotloginnow-title": "Ni mòże sã terô wlogòwac", + "cannotcreateaccount-title": "Ni mòże ùsôdzëc kòntów", "yourdomainname": "Twòjô domena", "login": "Wlogùjë mie", "nav-login-createaccount": "Logòwanié", @@ -355,11 +362,16 @@ "createaccount": "Założë nowé kònto", "userlogin-resetpassword-link": "Zabëtô parola?", "userlogin-helplink2": "Pòmòc przë logòwaniu", + "createacct-emailrequired": "E-mailowô adresa", "createacct-emailoptional": "Adresa e-mail (òptacjowò)", "createacct-email-ph": "Wpiszë swóją e-mailową adresã.", + "createacct-another-email-ph": "Wpiszë e-mailową adresã", "createaccountmail": "Ùżij timczasowégò hasła i wësli je na pòdóny adres e-mail.", "createacct-reason": "Przëczëna", "createacct-submit": "Ùsôdzë kònto", + "createacct-another-submit": "Ùsadzë kònto", + "createacct-continue-submit": "Biëj dali z ùsadzaniém kònta", + "createacct-another-continue-submit": "Biëj dali z ùsadzaniém kònta", "createacct-benefit-heading": "{{grammar:B.lp|{{SITENAME}}}} ùsôdzają lëdze taczi jak Të.", "createacct-benefit-body1": "{{PLURAL:$1|edicëjô|edicëje|edicëjów}}", "createacct-benefit-body2": "{{PLURAL:$1|starna|starnë|starnów}}", @@ -367,6 +379,7 @@ "badretype": "Wprowadzone parole jinaczą sã midze sobą.", "userexists": "To miono brëkòwnika je ju w ùżëcym. Proszã wëbrac jiné miono.", "loginerror": "Fela logòwaniô", + "createacct-error": "Fela ùsadzaniô kònta", "loginsuccesstitle": "Ùdałé logòwanié", "loginsuccess": "Të jes wlogòwóny do {{SITENAME}} jakno \"$1\".", "nosuchuser": "Nie mô brëkòwnika ò mionie \"$1\".\nW pòzwie brëkòwnika mô znaczenié wiôlgòsc lëtrów.\nSprawdzë pisënk abò [[Special:CreateAccount|ùsadzë nowé kònto]].", @@ -378,7 +391,7 @@ "passwordremindertitle": "Nowô doczasnô parola dlô {{SITENAME}}", "passwordremindertext": "Chtos (gwës Të, z adresë $1) pòprosëł ò wësłanié nowi\nparolë dlô {{SITENAME}} ($4). Aktualnô parola dlô brëkòwnika\n\"$2\" òsta ùsôdzonô ë nastôwionô jakno \"$3\". Jeżlë to bëło twòją\njintencëją, mùszisz sã terô wlogòwac ë zmienic swòją parolã.\nNowô parola je wôznô {{PLURAL:$5|dzéń|$5 dni}}.\nJeżlë chto jinszi wësłôł to zapëtanié, abò pamiãtôsz swòją parolã\në chcesz jã dali bez zmianë brëkòwac, zjignorëje to wiadło ë\nrobi dali ze starną parolą.", "noemail": "W baze ni ma email-adresë dlô brëkòwnika \"$1\".", - "acct_creation_throttle_hit": "Môsz ùsôdzoné ju {{PLURAL:$1|1 kònto|$1 kontów}}.\nNi mòżesz miec ju wicy.", + "acct_creation_throttle_hit": "Z adresë IP chtërny brëkùjesz òstało, w slédnych $2 ùsôdzonych {{PLURAL:$1|1 kònto|$1 kontów}}, co je maksymalną wielëną, \nBrëkòwnicy ti IP-adresë ni mògą terôczasno ùsôdzac wicy kòntów.", "emailauthenticated": "Twój adres e-mail òstôł pòcwierdzóny $2 ò $3.", "accountcreated": "Konto założone", "accountcreatedtext": "Kònto brëkòwnika dlô [[{{ns:User}}:$1|$1]], [[{{ns:User talk}}:$1|talk]] òstało ùsadzóné.", @@ -407,7 +420,7 @@ "headline_sample": "Tekst nadgłówka", "headline_tip": "Nadgłówk 2 lédżi", "nowiki_sample": "Wstawi tuwò niesfòrmatowóny tekst", - "nowiki_tip": "Ignorëjë wiki-fòrmatowanié", + "nowiki_tip": "Jignorëjë wiki-fòrmatowanié", "image_sample": "Przëmiôr.jpg", "image_tip": "Òbsôdzony lopk (n.p. òbrôzk)", "media_sample": "Przëmiôr.ogg", @@ -424,7 +437,7 @@ "showdiff": "Wëskrzëni zjinaczi", "anoneditwarning": "Bôczë: Të nie jes wlogòwóny. Jeżlë wëkònôsz jakąs zmianã, twòja adresa IP mdze widocznô dlô wszëtczich. Jeżlë [$1 wlogùjesz sã] abò [$2 ùsadzysz kònto]twòje zjinaczi òstóną przëpisóné do kònta, co wicy mającë kònto dobëjesz rozmajité ùdogòdnienia.", "anonpreviewwarning": "Të nie jes wlogòwóny. Jeżlë wprowadzysz jaczés zjinaczi, twòja adresa IP mdze ùmieszczónô w historie edicji starnë.", - "summary-preview": "Pòdzérk òpisënka:", + "summary-preview": "Pòdzérk òpisënka zjinaków:", "blockedtitle": "Brëkòwnik je zascëgóny", "blockedtext": "Twòje kònto abò ë IP-adresa òstałë zablokòwóné.\n\nZablokòwôł je $1.\nPòdónô przëczëna to:$2.\n\n * Zôczątk blokadë: $8\n * Kùńc blokadë: $6\n * Cél blokadë: $7\n\n\nBë zgwësnic sprawã zablokòwaniô mòżesz skòntaktowac sã z $1 abò jińszim [[{{MediaWiki:Grouppage-sysop}}|administratorã]].\nBoczë, że të ni mòżesz stądka sélac e-mailów, jeżlë nié môsz jesz zaregisterowóné e-mailowé adresë w [[Special:Preferences|nastôwach]].\nTwòjô aktualnô adresa IP to $3, a zablokòwónô adresa ID to #$5.\nProszëmë pòdac wëższé pòdôłczi przë wszëtczich pëtaniach.", "loginreqlink": "Wlogùjë", @@ -449,17 +462,17 @@ "yourdiff": "Zjinaczi", "copyrightwarning": "Bôczë, że wszëtczé edicëje w {{SITENAME}} są wprowadzané pòd zastrzégą $2 (òb. $1 dlô detalów). Jeżlë nie chcesz bë to co napiszesz bëło editowóné czë kòpijowóné, tedë nie zacwierdzôj nëch edicëjów.
    Zacwierdzając zmianë dôwôsz parolã, że to co môsz napisóné je Twòjégò aùtorstwa, abò skòpijowóné z dostónków public domain abò jinëch wòlnëch licencëjów. '''NIE DODÔWÔJ CËZËCH TEKSTÓW BEZ ZEZWÒLENIÔ!'''", "copyrightwarning2": "Bôczë, że wszëtczé edicëje w {{SITENAME}} mògą bëc editowóné, zmienióné abò rëmniãté bez jinëch brëkòwników.\nJeżlë nie chcesz bë Twòja robòta bëła editowónô, tedë nie dodôwôj ji tuwò.
    \nZacwierdzając zmianë dôwôsz zgòdã na to, że to co môsz napisóné je Twòjégò aùtorstwa, abò skòpijowóné z dostónków public domain abò jinëch wòlnëch licencëjów (zdrzë za detalama na $1).\n'''NIE DODÔWÔJ ROBÒTË CHRONIONY ÙSÔDZKÒWIMA PRAWAMA BEZ ZEZWÒLENIÔ!'''", - "readonlywarning": "'''BÔCZËNK: Pòdôwkòwô baza òsta sztërkòwô zablokòwónô dlô administracjowich célów. Ni mòże tej timczasã zapisac nowi wersëji artikla.\nBédëjemë przeniesc ji tekst do priwatnégò lopka (wëtnij/wstôw) ë ùchòwac na pózni.'''\n\nAdministrator, chtëren jã zablokòwôł, pòdôł przëczënã: $1", + "readonlywarning": "Bôczënk: Pòdôwkòwô baza òsta sztërkòwô zablokòwónô dlô administracjowich célów. Ni mòże tej timczasã zapisac nowi wersëji artikla.Jeżlë chcesz, mòżesz skòpirowac jã do lopka, abë móc jã pòzdze zapisac\nSprôwnik, chtëren jã zablokòwôł, pòdôł nôslédną ji przëczënã: $1", "titleprotectedwarning": "'''Czó! Starna ò ti pòzwie òsta zazychrowónô. Dlô ùsadzeniô ti starnë pòtrzébné są [[Special:ListGroupRights|apartné ùdowierzenia]].'''\nNiżi je widzec slédny wpisënk z registru:", "templatesused": "{{PLURAL:$1|Ùżëtô szablona|Ùżëté szablónë}} w tim artiklu:", "templatesusedpreview": "{{PLURAL:$1|Szablóna ùżëtô|Szablónë użëté}} w tim pòdzérkù:", "template-protected": "(zazychrowónô)", "template-semiprotected": "(dzélowò zazychrowóné)", "hiddencategories": "Na starna przënôleżi do w {{PLURAL:$1|1 zatacony kategòrëji|$1 zataconych kategòrëjów}}:", - "permissionserrors": "Fela przistspù", + "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ô]])", @@ -477,7 +490,7 @@ "page_last": "kùńc", "histlegend": "Legenda: (aktualnô) = różnice w przërównanim do aktualny wersëje,\n(wczasniészô) = różnice w przërównanim do wczasniészi wersëje, D = drobné edicëje", "history-fieldset-title": "Szëkôj za wersëją", - "history-show-deleted": "Leno rëmniãté", + "history-show-deleted": "Blós rëmniãté edicëje", "histfirst": "òd nôstarszich", "histlast": "òd nônowszich", "history-feed-title": "Historëjô wersëji", @@ -530,7 +543,7 @@ "search-section": "(dzél $1)", "search-file-match": "(pasëje do zamkłoscë lopka)", "search-suggest": "Të mëszlôł ò: $1", - "search-interwiki-caption": "Sosterné ùdbë", + "search-interwiki-caption": "Skùtczi ze sostrnych ùdbów", "search-interwiki-default": "Wëniczi òd $1:", "search-interwiki-more": "(wicy)", "searchall": "wszëtczé", @@ -553,7 +566,7 @@ "saveprefs": "Zapiszë", "prefs-editing": "Edicëjô", "searchresultshead": "Szëkba", - "stub-threshold": "Greńca dlô fòrmatowaniô lënków stubów:", + "stub-threshold": "Fòrmat lënka dlô mniszich starnów ($1):", "recentchangesdays": "Kùli dni pòkazëwac w slédnëch edicëjach:", "recentchangescount": "Domëslnô wielëna wëskrzëniónych edicëjów", "savedprefs": "Twòjé nastôwë òstałë zapisóné.", @@ -597,8 +610,8 @@ "gender-female": "Białka", "email": "E-mail", "prefs-help-realname": "Prôwdzëwé miono je òptacjowé, a czej je dôsz, òstanié ùżëté do pòdpisaniô Twòjégò wkładu", - "prefs-help-email": "Adresa e-mail je òptacëjnô, zezwôlô równak sélac do ce nową parolã jak tã zabëjesz.\nMòżesz zezwòlëc jinszim brëkòwniką na łączbã z Tobą przez Twòją starnã abò starnã diskùsëji, bez mùszebnotë wëskrzënianiô swòjich pòdôwków.", - "editinguser": "Zmiana praw brëkòwnika '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])", + "prefs-help-email": "Adresa e-mail je òptacjowô, zezwôlô równak na zresetowanié zabëti przez ce parolë.", + "editinguser": "Zmiana prawa przistãpù {{GENDER:$1|brëkòwnika|brëkòwniczczi}} [[User:$1|$1]] $2", "userrights-reason": "Przëczëna:", "group": "Karno:", "group-user": "Brëkòwnicë", @@ -613,7 +626,7 @@ "group-bot-member": "{{GENDER:$1|bòt}}", "group-sysop-member": "{{GENDER:$1|sprôwnik}}", "group-bureaucrat-member": "{{GENDER:$1|biórokrata|biórokratka}}", - "group-suppress-member": "rewizora", + "group-suppress-member": "{{GENDER:$1|rewizora|rewizorka}}", "grouppage-user": "{{ns:project}}:Brëkòwnicë", "grouppage-autoconfirmed": "{{ns:project}}:Aùtomatno zacwierdzeni brëkòwnicë", "grouppage-bot": "{{ns:project}}:Bòtë", @@ -637,7 +650,7 @@ "right-reupload-shared": "Môlowé nadpisëwanié egzystëjącegò lopka, we wespóldzelnych dostónkach", "right-upload_by_url": "Wladënk lopka z adresë URL", "right-purge": "Czëszczenié pòdrãczny pamiãcë starnë bez pëtaniô ò pòcwierdzenié", - "right-autoconfirmed": "Edicëjô dzélowò zazychrowónych starnów", + "right-autoconfirmed": "Bez ògrańczeniów przez òpiartë na adresë IP limitë", "right-bot": "Nacéchòwanié edicëjó jakno aùtomatnych", "right-writeapi": "Zapisënk przez jinterfejs API", "newuserlogpage": "Nowi brëkòwnicë", @@ -686,7 +699,7 @@ "newpageletter": "N", "boteditletter": "b", "rc-change-size-new": "$1 {{PLURAL:$1|bajt|bajtë|bajtów}} pò zjinace", - "rc-enhanced-expand": "Pòkażë detale (wëmôgô JavaScript)", + "rc-enhanced-expand": "Pòkażë detale", "rc-enhanced-hide": "Zatacë detale", "rc-old-title": "originalno ùsôdzoné jakno \"$1\"", "recentchangeslinked": "Zmianë w dolënkòwónëch", @@ -701,7 +714,7 @@ "uploadnologin": "Felënk logòwaniô", "uploadtext": "Brëkùjë negò fòrmùlara do wladënkù lopków.\nJeżlë chcesz przezdrzec abò szëkac w dotenczas wladowónëch lopkach, biéj do [[Special:FileList|lësta lopków]]. Kòżdi wladënk je registrowóny w [[Special:Log/upload|registrze wladënkù]], a rëmniãcé w [[Special:Log/delete|registrze rëmaniô]].\n\nAbë dodac lopk do starnë, ùżëjë ùniższegò lënka wedle nôslédnëch mùstrów:\n* '''[[{{ns:file}}:Lopk.jpg]]''' wëskrzëni całi lopk\n* '''[[{{ns:file}}:Lopk.png|200px|thumb|left|pòdpisënk òbrôzka]]''' wëskrzëni z lewi starnë, przë ùbrzégù, miniaturkã w szérzë 200 pikslów w ramie, z nôdpisã 'pòdpisënk òbrôzka'\n* '''[[{{ns:media}}:Lopk.ogg]]''' òtemknie prosti lënk do lopka bez wëskrzënianiô sómegò lopka", "uploadlogpage": "Dołączoné", - "uploadlogpagetext": "Hewò je lësta slédno wladowónëch lopków.\nWszëtczé gòdzënë tikają conë ùniwersalnégò czasë.", + "uploadlogpagetext": "Lësta slédno wladowónëch lopków.\nBiéj do [[Special:NewFiles|galerëji nowich lopków]] abë òbôczëc jich miniaturczi.", "filename": "Miono lopka", "filedesc": "Òpisënk", "fileuploadsummary": "Pòdrechòwanié:", @@ -753,7 +766,7 @@ "statistics-edits-average": "Strzédnô lëczba edicji na starnã", "statistics-users": "Zaregistrowónëch [[Special:ListUsers|brëkòwników]]", "statistics-users-active": "Aktiwnëch brëkòwników", - "statistics-users-active-desc": "Brekòwnicë, jaczi bëlë aktiwni òb òstatné $1 dni", + "statistics-users-active-desc": "Brekòwnicë, chtërni bëlë aktiwny {{PLURAL:$1|slédnegò dnia|slédnych $1 dni}}", "doubleredirects": "Dëbeltné przeczérowania", "double-redirect-fixer": "Naprôwiôcz przeczérowaniów", "brokenredirects": "Zerwóné przeczerowania", @@ -806,11 +819,11 @@ "categories": "Kategòrëje", "deletedcontributions": "Rëmniãti wkłôd brëkòwnika", "deletedcontributions-title": "Rëmniãti wkłôd brëkòwnika", - "linksearch": "Bùtnowé lënczi", + "linksearch": "Szëkba bùtnowich lënków", "activeusers": "Lësta aktiwnëch brëkòwników", "listgrouprights-members": "(lësta nôlëżników karna)", "emailuser": "Wëslë e-maila do negò brëkòwnika", - "defemailsubject": "E-mail òd {{SITENAME}}", + "defemailsubject": "{{SITENAME}} – e‐mail òd brëkòwnika \"$1\"", "noemailtitle": "Felënk email-adresë", "emailusername": "Pòzwa brëkòwnika", "emailfrom": "Òd:", @@ -824,14 +837,14 @@ "mywatchlist": "Lësta ùzérónëch artiklów", "watchlistfor2": "Dlô $1 $2", "watchnologin": "Felënk logòwóniô", - "addedwatchtext": "Starna \"[[:$1]]\" òsta dodónô do twòji [[Special:Watchlist|lëstë ùzérónëch artiklów]].\nNa ti lësce są registre przińdnëch zjinak ti starne ë na ji starnie dyskùsëji, a samò miono starnë mdze '''wëtłëszczone''' na [[Special:RecentChanges|lësce slédnich edicëji]], bë të mògł to òbaczëc.\n\nCzej chcesz remôc starnã z lëste ùzéronëch artiklów, klikni ''Òprzestôj ùzérac''.", - "removedwatchtext": "Starna \"[[:$1]]\" òsta rëmniãtô z Twòji [[Special:Watchlist|lëstë ùzérónych]].", + "addedwatchtext": "Starna \"[[:$1]]\" òsta dodónô do twòji [[Special:Watchlist|lëstë ùzérónëch artiklów]].", + "removedwatchtext": "Starna \"[[:$1]]\" ze starną diskùsëji òsta rëmniãtô z Twòji [[Special:Watchlist|lëstë ùzérónych artiklów]].", "watch": "Ùzérôj", "watchthispage": "Ùzérôj ną starnã", "unwatch": "Òprzestôj ùzerac", "unwatchthispage": "Òprzestôj ùzerac ną starnã", "notanarticle": "To nie je artikel", - "watchlist-details": "Twòjô lësta ùzérónych starnów zamëkô w se {{PLURAL:$1|$1 pozycjã|$1 pozycje|$1 pozycjów}}, nie rechùjąc diskùsëjów.", + "watchlist-details": "{{PLURAL:$1|Starna je |$1 Starnë są}} na twòji lësce ùzérónych starnów (diskùsëji téż)", "wlheader-showupdated": "Artiklë jakczé òstałë zmienioné òd Twòji slédny wizytë są wëapratnioné pògrëbieniém", "wlnote": "Niżi môsz wëskrzënioné {{PLURAL:$1|slédną zmianã|$1 slédnëch zmianów}} zrobioné òb {{PLURAL:$2|gòdzënã|$2 gòdzënë/gòdzënów}}, rëchùjąc òd $3 dnia $4.", "wlshowlast": "Wëskrzëni zjinaczi z $1 gòdzënów $2 dni", @@ -860,12 +873,12 @@ "rollbackfailed": "Nie szło copnąc zmianë", "alreadyrolled": "Ni mòże copnąc slédny edicëji starnë [[:$1]], chtërny ùsôdzcą je [[User:$2|$2]] ([[User talk:$2|Diskùsëjô]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);\nchtos jiny ju zeditowôł starnã abò copnął zmianë.\n\nSlédnym ùsódzcą starnë bëł [[User:$3|$3]] ([[User talk:$3|Diskùsëjô]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).", "revertpage": "Edicje brëkòwnika [[Special:Contributions/$2|$2]] ([[User talk:$2|diskùsjô]]) òstałë òdrzucóné. Aùtorã przëwrócóny wersji je [[User:$1|$1]].", - "rollback-success": "Edicje brëkòwnika $1 òstałë òdrzucóné; \nòsta przëwrócónô òstatnô wersjô, aùtorã chtërny je $2.", + "rollback-success": "Copniãto edicëje{{GENDER:$3|brëkòwnmika|brëkòwniczczi}} $1;\ndoprowpdzono nazôd slédną wersëjã ùsôdzcë {{GENDER:$4|$2}}.", "rollback-success-notify": "Edicje brëkòwnika $1 òstałë òdrzucóné; \nòsta przëwrócónô òstatnô wersjô, aùtorã chtërny je $2. [$3 Pòkażë zjinaczi]", "protectlogpage": "Zazychrowóné", "protectedarticle": "zazychrowónô [[$1]]", "modifiedarticleprotection": "zmienionô léga zazychrowaniô [[$1]]", - "unprotectedarticle": "òdzychrowóny [[$1]]", + "unprotectedarticle": "òdzychrowôł(wa) \"[[$1]]\"", "protectedarticle-comment": "{{GENDER:$2|Zazychrowôł|Zazychrowała}} „[[$1]]”", "prot_1movedto2": "$1 przeniesłé do $2", "protect-legend": "Pòcwierdzë zazychrowanié", @@ -875,11 +888,11 @@ "protect_expiry_old": "Czas wëgasniãcô leżi w przińdnocë.", "protect-text": "Mòżesz tuwò sprôwdzëc ë zjinaczëc légã zazychrowaniô starnë '''$1'''.", "protect-locked-access": "Ni môsz dosc prawa do zjinaczi lédżi zazychrowaniô starnë. Aktualny nastôw dlô starnë '''$1''':", - "protect-cascadeon": "Na starna je zazychrowónô przed edicëją, dlôte że je brëkòwónô przez {{PLURAL:$1|nôslédną starnã, chtërnô òsta zazychrowónô|nôslédné starnë, chtërné òstałe zazychrowóné}} z aktiwną kaskadową òpatcëją zazychrowëwaniô.\nMòżesz zmienic légã zazychrowaniô, nie bãdze to równak miało cëskù na kaskadowé zazychrowanié.", + "protect-cascadeon": "Na starna je zazychrowónô przed edicëją, dlôte że je brëkòwónô przez {{PLURAL:$1|nôslédną starnã, chtërnô òsta zazychrowónô|nôslédné starnë, chtërné òstałe zazychrowóné}} z aktiwną kaskadową òpatcëją zazychrowëwaniô.\nZmiana miarë zazychrowaniô ni mô cëskù na kaskadowé zazychrowanié.", "protect-default": "Zezwòlë wszëtczim brëkòwnikòm", - "protect-fallback": "Wëmôgô prawów \"$1\"", - "protect-level-autoconfirmed": "Blokùjë nowich ë nieregistrowónëch brëkòwników", - "protect-level-sysop": "blós sprôwnicë (sysopë)", + "protect-fallback": "Zezwòlë blós brëkòwnikòm z prawama \"$1\"", + "protect-level-autoconfirmed": "Zezwòlë blós aùtomatno zacwierdzonym brëkòwnikòm", + "protect-level-sysop": "Zezwòlë blós sprôwnikòm", "protect-summary-cascade": "kaskadowanié", "protect-expiring": "wëgasô $1 (UTC)", "protect-expiry-indefinite": "na wiedno", @@ -912,10 +925,10 @@ "sp-contributions-newbies": "Pòkażë edicëjã blós nowich brëkòwników", "sp-contributions-newbies-sub": "Dlô nowich brëkòwników", "sp-contributions-blocklog": "historëjô blokòwaniô", - "sp-contributions-deleted": "rëmniãti wkłôd brëkòwnika", + "sp-contributions-deleted": "rëmniãtô robòta {{GENDER:$1|brëkòwnika|brëkòwniczczi}}", "sp-contributions-uploads": "Wësłóné lopczi", "sp-contributions-logs": "Rejestr logòwaniô", - "sp-contributions-talk": "diskùsjô", + "sp-contributions-talk": "diskùsëjô", "sp-contributions-blocked-notice-anon": "Ta adresa IP je w tim sztërkù zablokòwónô.\nSlédny wpisënk z registru blokòwaniów je widzec niżi:", "sp-contributions-search": "Szëkba za edicëjama", "sp-contributions-username": "Adresa IP abò miono brëkòwnika:", @@ -939,7 +952,7 @@ "whatlinkshere-hidelinks": "$1 lënczi", "whatlinkshere-hideimages": "$1 lënk z lopków", "whatlinkshere-filters": "Filtrë", - "blockip": "Zascëgôj IP-adresã", + "blockip": "Blokùjë {{GENDER:$1|brëkòwnika|brëkòwniczkã}}", "blockiptext": "Brëkùje formùlarza niżi abë zascëgòwac prawò zapisënkù spòd gwësny adresë IP. To robi sã blós dlôte abë zascëgnąc wandalëznom, a bëc w zgòdze ze [[{{MediaWiki:Policy-url}}|wskôzama]]. Pòdôj przëczënã (np. dając miona starn, na chtërnëch dopùszczono sã wandalëzny).", "ipbreason": "Przëczëna:", "ipboptions": "2 gòdzënë:2 hours,1 dzéń:1 day,3 dni:3 days,1 tidzéń:1 week,2 tigòdnie:2 weeks,1 ksãżëc:1 month,3 ksãżëcë:3 months,6 ksãżëców:6 months,1 rok:1 year,na wiedno:infinite", @@ -948,7 +961,7 @@ "badipaddress": "IP-adresa nie je richtich pòdónô.", "blockipsuccesssub": "Zascëgónié dało sã", "blockipsuccesstext": "Brëkòwnik [[Special:Contributions/$1|$1]] òstał zascëgóny.
    \nBiéj do [[Special:BlockList|lëstë zascëgónëch adresów IP]] abë òbaczëc zascëdżi.", - "ipblocklist": "Lësta zablokòwónëch adresów IP ë mionów brëkòwników", + "ipblocklist": "Zablokòwóni brëkòwnicë", "blocklist-timestamp": "Czasowô sygnatura", "blocklist-target": "Cél", "blocklist-expiry": "Ùpłiwô", @@ -963,7 +976,7 @@ "unblocklink": "òdblokùjë", "change-blocklink": "zmieni blokòwanié", "contribslink": "wkłôd", - "autoblocker": "Zablokòwóno ce aùtomatnie, ga brëkùjesz ti sami adresë IP co brëkòwnik \"[[User:$1|$1]]\". Przëczënô blokòwóniô $1 to: \"'''$2'''\".", + "autoblocker": "Zablokòwóno ce aùtomatno bò brëkùjesz ti sómy adresë IP co brëkòwnik \"[[User:$1|$1]]\". \nPrzëczënô blokòwaniô $1 to: \"$2\"", "blocklogpage": "Historëjô blokòwaniô", "blocklogentry": "zablokòwôł [[$1]], czas blokadë: $2 $3", "reblock-logentry": "{{GENDER:$2|zjinacził|zjinacziła}} unastôw blokadë dlô [[$1]], czas blokadë: $2 $3", @@ -974,7 +987,7 @@ "proxyblocker": "Blokòwanié proxy", "lockbtn": "Zascëgôj bazã pòdôwków", "move-page-legend": "Przeniesë starnã", - "movepagetext": "Z pòmòcą ùiższegò fòrmùlôra zjinaczisz miono starnë, przenosząc równoczasno ji historëjã.\nPòd stôrim titlã bãdze ùsôdzonô przeczérowùjącô starna.\nMòżesz aùtomatno zaktualniac przeczérowania wskazëwôjące titel przed zjinaką.\nJeżlë nie wëbiérzesz ti òptacëji, ùgwësni sã pò przenieseniu starnë, czë nie òstałé ùsôdzoné [[Special:DoubleRedirects|dëbeltné]] abò [[Special:BrokenRedirects|zerwóné przeczérowania]].\nJes òdpòwiedzalny za to, abë lënczi dali robiłë tam dze mają.\n\nStarna '''ni''' bãdze przeniosłô, jeżlë starna ò nowim mionie ju je, chòba że je òna pùstô abò je przeczérowaniém ë mô pùstą historëjã edicëji.\nTo òznôczô, że lëchą òperacëjã zjinaczi miona mòże doprowôdzëc bezpieczno nazôd, zjinaczając nowé miono starnë nawczasniészą, ë że ni mòże nadpisac stranë chtërną ju dô.\n\n'''BÔCZËNK!'''\nTo mòże bëc drasticznô abò nieprzewidëwólnô zjinaka w przëtrôfkù pòpùlarnych starnów.\nÙgwësni sã co do skùtków ti òperacëji, niglë to zrobisz.", + "movepagetext": "Z pòmòcą ùiższegò fòrmùlôra zjinaczisz miono starnë, przenosząc równoczasno ji historëjã.\nPòd stôrim titlã bãdze ùsôdzonô przeczérowùjącô starna.\nMòżesz aùtomatno zaktualniac przeczérowania wskazëwôjące titel przed zjinaką.\nJeżlë nie wëbiérzesz ti òptacëji, ùgwësni sã pò przenieseniu starnë, czë nie òstałé ùsôdzoné [[Special:DoubleRedirects|dëbeltné]] abò [[Special:BrokenRedirects|zerwóné przeczérowania]].\nJes òdpòwiedzalny za to, abë lënczi dali robiłë tam dze mają.\n\nStarna ni bãdze przeniosłô, jeżlë starna ò nowim mionie ju je, chòba że je òna pùstô abò je przeczérowaniém ë mô pùstą historëjã edicëji.\nTo òznôczô, że lëchą òperacëjã zjinaczi miona mòże doprowôdzëc bezpieczno nazôd, zjinaczając nowé miono starnë nawczasniészą, ë że ni mòże nadpisac stranë chtërną ju dô.\n\nBÔCZËNK!\nTo mòże bëc drasticznô abò nieprzewidëwólnô zjinaka w przëtrôfkù pòpùlarnych starnów.\nÙgwësni sã co do skùtków ti òperacëji, niglë to zrobisz.", "movepagetalktext": "Sparłãczonô starna diskùsëji, jeżlë ju je, to bãdze przeniosłô aùtomatno, chòba że:\n*niepùstô starna diskùsëji ju je z nowim mionã\n*rëmniész nacéchòwanié z niższegò pòla wëbiérkù\n\nW taczich przëtrôfkach zamkłosc diskùsëji mòże przeniesc blós rãczno.", "newtitle": "Nowi titel:", "move-watch": "Ùzérôj tã starnã", @@ -996,7 +1009,7 @@ "allmessagesnotsupportedDB": "'''{{ns:special}}:Allmessages''' nie mòże bëc brëkòwónô, temù że '''$wgUseDatabaseMessages''' je wëłączony.", "thumbnail-more": "Zwikszi", "import": "Impòrtëjë starnë", - "importlogpage": "Log impòrtu", + "importlogpage": "Log jimpòrtu", "tooltip-pt-userpage": "{{GENDER:|Twòja}} starna brëkòwnika", "tooltip-pt-mytalk": "{{GENDER:|Mòjô}} starna diskùsëji", "tooltip-pt-anontalk": "Diskùsjô brëkòwnika dlô ti adresë IP", @@ -1060,7 +1073,7 @@ "tooltip-summary": "Wpiszë wãzłowati òpisënk", "anonymous": "Anonimòwi {{PLURAL:$1|brëkòwnik|brëkòwnicë}} na {{SITENAME}}", "siteuser": "Brëkòwnik {{SITENAME}} $1", - "lastmodifiedatby": "Na starna bëła slédno editowónô $2, $1 przez $3.", + "lastmodifiedatby": "Slédno edicëjô ti starnë: $2, $1, ùsôdzca: $3.", "othercontribs": "Òpiarté na prôcë $1.", "others": "jiné", "spamprotectiontitle": "Anti-spamòwi filter", @@ -1079,7 +1092,7 @@ "pageinfo-robot-policy": "Jindeksowanié przez robòtë", "pageinfo-robot-index": "Zezwòloné", "pageinfo-robot-noindex": "Niedozwóloné", - "pageinfo-watchers": "Wielëna ùżérających", + "pageinfo-watchers": "Wielëna ùzérających", "pageinfo-few-watchers": "Mni jak $1 {{PLURAL:$1|ùzyrający|ùzyrających}}", "pageinfo-redirects-name": "Wielëna przeczérowaniów do ti starnë", "pageinfo-subpages-name": "Wielëna pòdstarnów ti starnë", @@ -1101,7 +1114,7 @@ "patrol-log-page": "Log patrolowaniô", "previousdiff": "← Pòprzédnô edicëjô", "nextdiff": "Nôslédnô edicëjô →", - "imagemaxsize": "Ògrańczë na starnie òpisënkù òbrôzków jich miarã do:", + "imagemaxsize": "Ograńczenié wielgòscë òbrôzków:
    (na starnach òpisënkù lopków)", "thumbsize": "Miara miniaturków:", "widthheightpage": "$1 × $2, $3 {{PLURAL:$3|starna|starnë|starnów}}", "file-info-size": "$1 × $2 pikslów, miara lopka: $3, ôrt MIME: $4", @@ -1144,7 +1157,7 @@ "imgmultigo": "Biéj!", "imgmultigoto": "Biéj do starnë $1", "autoredircomment": "Przeczérowanié do [[$1]]", - "autosumm-new": "Pòwsta nowô starna:", + "autosumm-new": "Ùsôdzonô nowô starna \"$1\"", "watchlisttools-clear": "Wëczësczë ùzérówną lëstã", "watchlisttools-view": "Òbaczë wôżnészé zmianë", "watchlisttools-edit": "Òbaczë a editëjë lëstã ùzérónëch artiklów", @@ -1152,7 +1165,7 @@ "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|diskùsëjô]])", "version": "Wersëjô", "redirect": "Przeczérëjë z jidentyfikatora lopka, brëkòwnika, starnë, wersëji abò wpisënka loga", - "redirect-summary": "Na szpecjalnô starna przczerowùje do: lopka(ò pòdónym mionie), do sstarny (ò pòdónym numrze wersëji abò jidentyfikatorze starë), do starnë brëkòwnika (ò pòdónym numerowim jidentyfikatorze) abò do rejestru (ò pòdónym numrze akcëji). Òrt ùżëcô: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]] abò [[{{#Special:Redirect}}/logid/186]].", + "redirect-summary": "Na specjalnô starna przczerowùje do: lopka(ò pòdónym mionie), do starny (ò pòdónym numrze wersëji abò jidentyfikatorze starë), do starnë brëkòwnika (ò pòdónym numerowim jidentyfikatorze) abò do rejestru (ò pòdónym numrze akcëji). Òrt ùżëcô: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]] abò [[{{#Special:Redirect}}/logid/186]].", "redirect-submit": "Biéj", "redirect-lookup": "Szëkôj:", "redirect-value": "Wôrtnota:", 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 936e38c125..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", @@ -165,13 +166,7 @@ "anontalk": "Sgwrs", "navigation": "Panel llywio", "and": " a/ac", - "qbfind": "Canfod", - "qbbrowse": "Pori", - "qbedit": "Golygu", - "qbpageoptions": "Y dudalen hon", - "qbmyoptions": "Fy nhudalennau", "faq": "Cwestiynau cyffredin", - "faqpage": "Project:Cwestiynau cyffredin", "actions": "Gweithrediadau", "namespaces": "Parthau", "variants": "Amrywiolion", @@ -197,32 +192,22 @@ "edit-local": "Golygu'r disgrifiad ar y wici hwn", "create": "Dechrau", "create-local": "Ychwanegu disgrifiad ar y wici hwn", - "editthispage": "Golygwch y dudalen hon", - "create-this-page": "Creu'r dudalen", "delete": "Dileu", - "deletethispage": "Dilëir y dudalen hon", - "undeletethispage": "Adfer y dudalen hon", "undelete_short": "Adfer $1 {{PLURAL:$1|golygiad|golygiad|olygiad|golygiad}}", "viewdeleted_short": "Edrych ar y {{PLURAL:$1|golygiad sydd wedi'i ddileu|golygiad sydd wedi'i ddileu|$1 olygiad sydd wedi'u dileu|$1 golygiad sydd wedi'u dileu|$1 golygiad sydd wedi'u dileu|$1 golygiad sydd wedi'u dileu}}", "protect": "Diogelu", "protect_change": "newid", - "protectthispage": "Diogelu'r dudalen hon", "unprotect": "Newid y diogelwch", - "unprotectthispage": "Newid gosodiadau diogelwch y dudalen hon", "newpage": "Tudalen newydd", - "talkpage": "Sgwrsiwch am y dudalen hon", "talkpagelinktext": "Sgwrs", "specialpage": "Tudalen Arbennig", "personaltools": "Offer personol", - "articlepage": "Dangos tudalen bwnc", "talk": "Sgwrs", "views": "Golygon", "toolbox": "Offer", "tool-link-userrights": "Newid {{GENDER:$1|grwpiau defnyddwyr}}", "tool-link-userrights-readonly": "Cip ar {{GENDER:$1|grwpiau defnyddwyr}}", "tool-link-emailuser": "Ebostiwch y {{GENDER:$1|defnyddiwr}}", - "userpage": "Gweld tudalen y defnyddiwr", - "projectpage": "Gweld tudalen y wici", "imagepage": "Gweld tudalen y ffeil", "mediawikipage": "Gweld tudalen y neges", "templatepage": "Dangos y dudalen nodyn", @@ -361,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.", @@ -376,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.", @@ -386,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", @@ -441,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?", @@ -466,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.", @@ -487,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.", @@ -500,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.", @@ -694,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.", @@ -765,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}})", @@ -916,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", @@ -957,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", @@ -1048,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", @@ -1059,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.", @@ -1071,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", @@ -1168,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", @@ -1181,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", @@ -1261,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", @@ -1273,20 +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-filtergroup-registration": "Defnyddiwch y gofrestr", - "rcfilters-filter-registered-label": "Cofrestr", - "rcfilters-filter-registered-description": "Golygyddion sydd wedi mewngofnodi.", - "rcfilters-filter-unregistered-label": "Heb gofrestru", - "rcfilters-filter-unregistered-description": "Golygyddion nad ydynt wedi cofrestru.", - "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-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", @@ -1309,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", @@ -1333,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", @@ -1738,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", @@ -1860,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", @@ -1871,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", @@ -1888,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...", @@ -1912,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", @@ -1942,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", @@ -2033,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", @@ -2141,6 +2207,7 @@ "unblocked-id": "Tynnwyd rhwystr $1", "unblocked-ip": "Mae [[Special:Contributions/$1|$1]] wedi ei atal.", "blocklist": "Defnyddwyr a rwystrwyd", + "autoblocklist-submit": "Chwilio", "ipblocklist": "Defnyddwyr a rwystrwyd", "ipblocklist-legend": "Dod o hyd i ddefnyddiwr a rwystrwyd", "blocklist-userblocks": "Cuddio rhwystrau cyfrifon", @@ -2223,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.", @@ -2235,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", @@ -2258,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.", @@ -2276,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}}]]\".", @@ -2292,6 +2360,7 @@ "export-download": "Cynnig rhoi ar gadw ar ffurf ffeil", "export-templates": "Cynnwys nodiadau", "export-pagelinks": "Cynhwyser tudalennau cysylltiedig hyd at ddyfnder o:", + "export-manual": "Ychwanegu dalennau gyda llaw", "allmessages": "Pob neges", "allmessagesname": "Enw", "allmessagesdefault": "Testun rhagosodedig", @@ -2354,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.", @@ -2380,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", @@ -2411,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", @@ -2429,6 +2500,7 @@ "tooltip-ca-nstab-category": "Dangos tudalen y categori", "tooltip-minoredit": "Marciwch hwn yn olygiad bychan.", "tooltip-save": "Cadwch eich newidiadau", + "tooltip-publish": "Cyhoeddi eich newidiadau", "tooltip-preview": "Dangos rhagolwg o'r newidiadau; defnyddiwch cyn cadw.", "tooltip-diff": "Dangos y newidiadau rydych chi wedi gwneud i'r testun.", "tooltip-compareselectedversions": "Cymharwch y fersiynau detholedig.", @@ -2448,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.", @@ -2471,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", @@ -2501,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", @@ -2519,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", @@ -2541,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", @@ -2555,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", @@ -2771,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", @@ -2947,14 +3033,19 @@ "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", "confirm-purge-top": "Clirio'r dudalen o'r storfa?", "confirm-purge-bottom": "Mae carthu tudalen yn clirio'r celc ac yn gorfodi'r fersiwn diweddaraf i ymddangos.", @@ -2962,6 +3053,7 @@ "confirm-watch-top": "Ychwaneger y dudalen hon at eich rhestr wylio?", "confirm-unwatch-button": "Iawn", "confirm-unwatch-top": "Tynner y dudalen hon oddi ar eich rhestr wylio?", + "confirm-rollback-button": "Iawn", "confirm-rollback-top": "Dadwneud golygiadau'r ddalen hon?", "quotation-marks": "'$1'", "imgmultipageprev": "← i'r dudalen gynt", @@ -3017,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", @@ -3063,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:", @@ -3072,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.", @@ -3083,7 +3177,7 @@ "fileduplicatesearch-noresults": "Ni ddaethpwyd o hyd i ffeil o'r enw \"$1\".", "specialpages": "Tudalennau arbennig", "specialpages-note-top": "Allwedd", - "specialpages-note": "* Tudalennau arbennig ar gael i bawb.\n* Tudalennau arbennig cyfyngedig.", + "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", @@ -3129,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", @@ -3138,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)", @@ -3161,8 +3258,9 @@ "htmlform-cloner-create": "Ychwaneger rhes", "htmlform-cloner-delete": "Tynner i ffwrdd", "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", @@ -3205,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", @@ -3212,7 +3311,8 @@ "feedback-subject": "Gwrthrych:", "feedback-submit": "Cyflwyner", "feedback-thanks": "Diolch! Gosodwyd eich adborth ar y dudalen \"[$2 $1]\".", - "searchsuggest-search": "Chwilio", + "feedback-thanks-title": "Diolch o galon!", + "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.", @@ -3314,6 +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-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 68727ddbf9..e5d8299eee 100644 --- a/languages/i18n/da.json +++ b/languages/i18n/da.json @@ -62,7 +62,9 @@ "Jhertel", "IBDJ", "SimmeD", - "BoBrandt" + "BoBrandt", + "R12ntech", + "Joedalton" ] }, "tog-underline": "Understreg henvisninger:", @@ -566,9 +568,16 @@ "botpasswords-label-delete": "Slet", "botpasswords-label-resetpassword": "Nulstil adgangskode", "botpasswords-label-grants": "Tilgængelige bevillinger:", + "botpasswords-label-grants-column": "Tildelt", + "botpasswords-bad-appid": "Robotnavnet »$1« er ikke gyldigt.", + "botpasswords-insert-failed": "Kunne ikke tilføje robotnavnet »$1«. Var det allerede tilføjet?", + "botpasswords-update-failed": "Kunne ikke tilføje robotnavnet »$1«. Er det slettet?", "botpasswords-created-title": "Botkodeord oprettet", + "botpasswords-created-body": "Robottens adgangskode for robotnavn »$1« for bruger »$2« blev oprettet.", "botpasswords-updated-title": "Bot kodeord opdateret", + "botpasswords-updated-body": "Robottens adgangskode for robotnavn »$1« for brugeren »$2« blev opdateret.", "botpasswords-deleted-title": "Bot kodeord slettet", + "botpasswords-deleted-body": "Robottens adgangskode for robotnavn »$1« for brugeren »$2« blev slettet.", "resetpass_forbidden": "Adgangskoder kan ikke ændres", "resetpass_forbidden-reason": "Adgangskoder kan ikke ændres: $1", "resetpass-no-info": "Du skal være logget på for at komme direkte til denne side.", @@ -703,7 +712,6 @@ "explainconflict": "Nogen har ændret denne side, efter du startede på at redigere den.\nDen øverste tekstboks indeholder den nuværende tekst.\nDine ændringer er vist i den nederste tekstboks.\nDu er nødt til at sammenflette dine ændringer med den eksisterende tekst.\n'''Kun''' teksten i den øverste tekstboks vil blive gemt når du trykker \"$1\".", "yourtext": "Din tekst", "storedversion": "Den gemte version", - "nonunicodebrowser": "'''Advarsel: Din browser er ikke unicode-kompatibel, skift eller opdater din browser før du redigerer en artikel.'''", "editingold": "'''ADVARSEL: Du redigerer en gammel version af denne side.\nHvis du gemmer den, vil alle ændringer foretaget siden denne revision blive overskrevet.'''", "yourdiff": "Forskelle", "copyrightwarning": "Bemærk venligst at alle bidrag til {{SITENAME}} er at betragte som udgivne under $2 (se $1 for detaljer).\nHvis du ikke ønsker at din tekst skal udsættes for nådesløse redigeringer og at den kan blive kopieret efter forgodtbefindende, så skal du ikke placere den her.
    \nDu lover os også, at du selv har forfattet teksten eller har kopieret den fra en public domain-kilde eller en tilsvarende fri kilde.\n'''Læg aldrig materiale her som er beskyttet af andres ophavsret uden deres tilladelse!'''", @@ -746,6 +754,7 @@ "content-not-allowed-here": "\"$1\" indhold er ikke tilladt på siden [[$2]]", "editwarning-warning": "Hvis du forlader siden nu, risikerer du at miste alle ændringer, som du har lavet.\nDenne advarsel kan slås fra under \"{{int:prefs-editing}}\" i dine indstillinger.", "editpage-invalidcontentmodel-title": "Indholdsmodellen er ikke understøttet", + "editpage-invalidcontentmodel-text": "Indholdsmodellen »$1« er ikke understøttet.", "editpage-notsupportedcontentformat-title": "Indholdsformatet understøttes ikke", "editpage-notsupportedcontentformat-text": "Indholdsformatet $1 understøttes ikke af indholdsmodellen $2", "content-model-wikitext": "wikitekst", @@ -764,6 +773,7 @@ "post-expand-template-argument-warning": "Advarsel: Mindst en af skabelonparametrene på denne side fylder mere end det tilladte. Denne parameter er derfor udeladt.", "post-expand-template-argument-category": "Sider med udeladte skabelonparametre", "parser-template-loop-warning": "Skabelonløkke fundet: [[$1]]", + "template-loop-category": "Sider med skabelonløkker", "parser-template-recursion-depth-warning": "En skabelon er rekursivt inkluderet for mange gange ($1)", "language-converter-depth-warning": "Dybdegrænse for sprogkonvertering overskredet ($1)", "node-count-exceeded-category": "Sider hvor antal noder er overskredet", @@ -967,6 +977,7 @@ "search-external": "Brug anden søgemaskine", "searchdisabled": "

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

    ", "search-error": "Der opstod en fejl under søgning: $1", + "search-warning": "Der opstod en advarsel under søgning: $1", "preferences": "Indstillinger", "mypreferences": "Indstillinger", "prefs-edits": "Antal redigeringer:", @@ -986,7 +997,7 @@ "prefs-editwatchlist-clear": "Ryd din overvågningsliste", "prefs-watchlist-days": "Antal dage der skal vises i overvågningslisten:", "prefs-watchlist-days-max": "Højst $1 {{PLURAL:$1|dag|dage}}", - "prefs-watchlist-edits": "Antal redigeringer der vises i udvidet overvågningsliste:", + "prefs-watchlist-edits": "Maksimalt antal redigeringer der vises i overvågningsliste:", "prefs-watchlist-edits-max": "Maks. 1000", "prefs-watchlist-token": "Overvågningslistenøgle:", "prefs-misc": "Forskelligt", @@ -1000,6 +1011,7 @@ "prefs-editing": "Redigering", "searchresultshead": "Søgeresultater", "stub-threshold": "Grænse før formatering af stublink ($1):", + "stub-threshold-sample-link": "eksempel", "stub-threshold-disabled": "Deaktiveret", "recentchangesdays": "Antal dage som skal vises i seneste ændringer:", "recentchangesdays-max": "(maks. $1 {{PLURAL:$1|dag|dage}})", @@ -1007,6 +1019,7 @@ "prefs-help-recentchangescount": "Det gælder for seneste ændringer, historikker og logger.", "prefs-help-watchlist-token2": "Dette er den hemmelige nøgle til web-feed af din overvågningsliste.\nHvis andre kender den, vil man være i stand til at læse din overvågningsliste, så del den ikke.\n[[Special:ResetTokens|Klik her hvis du har brug at nulstille den]].", "savedprefs": "Dine indstillinger er blevet gemt.", + "savedrights": "Brugergrupperne for {{GENDER:$1|$1}} er blevet gemt.", "timezonelegend": "Tidszone:", "localtime": "Lokaltid:", "timezoneuseserverdefault": "Brug wiki'ens standardindstilling ($1)", @@ -1297,8 +1310,21 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (se også [[Special:NewPages|listen over nye sider]])", "recentchanges-legend-plusminus": "(''±123'')", "recentchanges-submit": "Vis", + "rcfilters-tag-remove": "Fjern »$1«", + "rcfilters-legend-heading": "Liste over forkortelser:", + "rcfilters-other-review-tools": "Andre gennemgangsværktøjer", + "rcfilters-group-results-by-page": "Grupper resultater efter side", + "rcfilters-grouping-title": "Gruppering", "rcfilters-activefilters": "Aktive filtre", - "rcfilters-quickfilters": "Gemte filterindstillinger", + "rcfilters-advancedfilters": "Avancerede filtre", + "rcfilters-limit-title": "Ændringer som skal vises", + "rcfilters-limit-shownum": "Vis seneste {{PLURAL:$1|ændring|$1 ændringer}}", + "rcfilters-days-title": "De sidste dage", + "rcfilters-hours-title": "De sidste timer", + "rcfilters-days-show-days": "$1 {{PLURAL:$1|dag|dage}}", + "rcfilters-days-show-hours": "$1 {{PLURAL:$1|time|timer}}", + "rcfilters-highlighted-filters-list": "Fremhævede: $1", + "rcfilters-quickfilters": "Gemte filtre", "rcfilters-quickfilters-placeholder-title": "Ingen links gemt endnu", "rcfilters-savedqueries-defaultlabel": "Gemte filtre", "rcfilters-savedqueries-rename": "Omdøb", @@ -1306,34 +1332,37 @@ "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-new-name-placeholder": "Beskriv formålet med filteret", + "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.", "rcfilters-filterlist-title": "Filtre", - "rcfilters-filterlist-whatsthis": "Hvad er dette?", - "rcfilters-filterlist-feedbacklink": "Giv feedback på de nye (beta)filtre", + "rcfilters-filterlist-whatsthis": "Hvordan virker disse?", + "rcfilters-filterlist-feedbacklink": "Fortæl os hvad du synes om disse (nye) filtreringsværktøjer", "rcfilters-highlightbutton-title": "Fremhæv resultater", "rcfilters-highlightmenu-title": "Vælg en farve", "rcfilters-highlightmenu-help": "Vælg en farve for at fremhæve denne egenskab", "rcfilters-filterlist-noresults": "Ingen filtre fundet", "rcfilters-noresults-conflict": "Ingen resultater fundet fordi søgekriterierne er i konflikt", - "rcfilters-filtergroup-registration": "Brugerregistrering", - "rcfilters-filter-registered-label": "Registrerede", - "rcfilters-filter-registered-description": "Indloggede brugere", - "rcfilters-filter-unregistered-label": "Uregistrerede", - "rcfilters-filter-unregistered-description": "Redaktører, der ikke er logget ind.", + "rcfilters-state-message-subset": "Dette filter har ingen effekt fordi dets resultater inkluderes i følgende, bredere {{PLURAL:$2|filter|filtre}} (prøv at fremhæve for at skille det ud): $1", + "rcfilters-state-message-fullcoverage": "Valg af alle filtre i denne gruppe er det samme som ikke at vælge nogen, så dette filter har ingen effekt. Gruppe inkluderer: $1", "rcfilters-filtergroup-authorship": "Bidragets forfatter", "rcfilters-filter-editsbyself-label": "Ændringer af dig", "rcfilters-filter-editsbyself-description": "Dine egne bidrag.", "rcfilters-filter-editsbyother-label": "Ændringer af andre", "rcfilters-filter-editsbyother-description": "Alle ændringer undtagen din egen.", - "rcfilters-filtergroup-userExpLevel": "Erfaringsniveau (kun for registrerede brugere)", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Erfaringsfiltre finder kun registrerede brugere, så dette filter er i konflikt med filtret \"Uregistrerede\".", + "rcfilters-filtergroup-userExpLevel": "Brugerregistrering og -erfaring", + "rcfilters-filter-user-experience-level-registered-label": "Registrerede", + "rcfilters-filter-user-experience-level-registered-description": "Indloggede brugere", + "rcfilters-filter-user-experience-level-unregistered-label": "Uregistrerede", + "rcfilters-filter-user-experience-level-unregistered-description": "Redaktører, der ikke er logget ind.", "rcfilters-filter-user-experience-level-newcomer-label": "Nybegyndere", "rcfilters-filter-user-experience-level-newcomer-description": "Færre end 10 redigeringer og 4 dages aktivitet", "rcfilters-filter-user-experience-level-learner-label": "Let øvede", @@ -1362,6 +1391,8 @@ "rcfilters-filter-watchlist-watchednew-description": "Ændringer af overvågede sider du ikke har besøgt siden ændringerne blev gjort.", "rcfilters-filter-watchlist-notwatched-label": "Ikke på overvågningsliste", "rcfilters-filter-watchlist-notwatched-description": "Alt undtagen ændringer af sider på din overvågningsliste.", + "rcfilters-filter-watchlistactivity-unseen-label": "Usete ændringer", + "rcfilters-filter-watchlistactivity-seen-label": "Sete ændringer", "rcfilters-filtergroup-changetype": "Type ændring", "rcfilters-filter-pageedits-label": "Sideredigeringer", "rcfilters-filter-pageedits-description": "Ændringer af wikiindhold, diskussioner, kategoribeskrivelser...", @@ -1376,6 +1407,11 @@ "rcfilters-filter-lastrevision-description": "Den nyeste ændring af en side.", "rcfilters-filter-previousrevision-label": "Tidligere revisioner", "rcfilters-filter-previousrevision-description": "Alle ændringer som ikke er den nyeste ændring af en side.", + "rcfilters-view-advanced-filters-label": "Avancerede filtre", + "rcfilters-view-tags": "Mærkede redigeringer", + "rcfilters-view-namespaces-tooltip": "Filtrer resultater efter navnerum", + "rcfilters-watchlist-edit-watchlist-button": "Rediger din liste med overvågede sider", + "rcfilters-preference-label": "Skjul den forbedrede verson af Seneste ændringer", "rcnotefrom": "Nedenfor er op til '''$1''' {{PLURAL:$5|ændring|ændringer}} siden '''$2''' vist.", "rclistfromreset": "Nulstil datovalg", "rclistfrom": "Vis nye ændringer startende fra den $3 kl. $2", @@ -1728,6 +1764,8 @@ "pageswithprop-legend": "Sider med en sideegenskab", "pageswithprop-text": "Denne side viser en liste over sider, der har en bestemt sideegenskab.", "pageswithprop-prop": "Egenskabsnavn:", + "pageswithprop-reverse": "Sorter i omvendt rækkefølge", + "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,11 +1879,23 @@ "apisandbox-submit": "Lav forespørgsel", "apisandbox-reset": "Ryd", "apisandbox-retry": "Forsøg igen", + "apisandbox-no-parameters": "Dette API-modul har ingen parametre.", + "apisandbox-helpurls": "Henvisninger til hjælp", "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-format-url-label": "Adresseforepørgselsstreng", "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)", @@ -2021,7 +2071,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", @@ -2051,12 +2101,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.", @@ -2068,6 +2119,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", @@ -2445,9 +2498,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.", @@ -2623,6 +2681,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", @@ -2682,8 +2741,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", @@ -3076,14 +3137,17 @@ "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]", "scarytranscludetoolong": "[URL'en er for lang]", "deletedwhileediting": "'''Advarsel:''' Denne side er blevet slettet efter du begyndte at redigere den!\nKig i [{{fullurl:Special:Log|type=delete&page=}}{{FULLPAGENAMEE}} slette-loggen],\nhvorfor siden blev slettet. Hvis du gemmer siden bliver den oprettet igen.", - "confirmrecreate": "Brugeren [[User:$1|$1]] ([[User talk:$1|Diskussion]]) har slettet denne side, efter at du begyndte at redigere den. Begrundelsen lyder:\n: ''$2''\nBekræft venligst, at du virkelig vil oprette denne side igen.", - "confirmrecreate-noreason": "[[User:$1|$1]] ([[User talk:$1|diskussion]]) har slettet denne side, efter du begyndte at redigere. Bekræft venligst, at du gerne vil genoprette siden.", + "confirmrecreate": "Brugeren [[User:$1|$1]] ([[User talk:$1|Diskussion]]) har {{GENDER:$1|slettet}} denne side, efter at du begyndte at redigere den. Begrundelsen lyder:\n: $2\nBekræft venligst, at du virkelig vil oprette denne side igen.", + "confirmrecreate-noreason": "[[User:$1|$1]] ([[User talk:$1|diskussion]]) har {{GENDER:$1|slettet}} denne side, efter du begyndte at redigere. Bekræft venligst, at du gerne vil genoprette siden.", "recreate": "Genopret", + "confirm-purge-title": "Fjern denne side", "confirm_purge_button": "O.k.", "confirm-purge-top": "Slet denne side fra serverens mellemlager (''cache'')?", "confirm-purge-bottom": "Rensning af en side sletter mellemlageret og fremtvinger den nyeste version.", @@ -3092,6 +3156,7 @@ "confirm-unwatch-button": "OK", "confirm-unwatch-top": "Fjern denne side fra din overvågningsliste?", "confirm-rollback-button": "OK", + "confirm-rollback-top": "Omgør redigering på denne side?", "quotation-marks": "\"$1\"", "imgmultipageprev": "← forrige side", "imgmultipagenext": "næste side →", @@ -3136,6 +3201,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", @@ -3169,6 +3235,7 @@ "version-ext-colheader-credits": "Forfattere", "version-license-title": "Licens for $1", "version-license-not-found": "Ingen detaljerede licensoplysninger blev fundet for denne udvidelse.", + "version-credits-not-found": "Ingen detaljeret information om bidragyderen blev fundet for denne udvidelse.", "version-poweredby-credits": "Denne wiki er drevet af '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.", "version-poweredby-others": "andre", "version-poweredby-translators": "translatewiki.net oversættere", @@ -3186,8 +3253,8 @@ "version-libraries-license": "Licens", "version-libraries-description": "Beskrivelse", "version-libraries-authors": "Forfattere", - "redirect": "Omdirigering pga. fil, bruger-, side- eller udgave-ID", - "redirect-summary": "Denne specialside omdirigerer til en fil (hvis filnavnet er angivet), en side (hvis udgave ID'et eller side ID'et er angivet) eller en brugerside (hvis et numerisk brugernummer er angivet). Eksempler på brug: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]],[[{{#Special:Redirect}}/revision/328429]] eller [[{{#Special:Redirect}}/user/101]].", + "redirect": "Omdiriger via filnavn, bruge-, side-, revision- eller log-ID.", + "redirect-summary": "Denne spesialsiden omdirigerer til en fil (hvis et filnavn angis), en lave (om revisions- eller side-ID angis), en brugerside (om bruge-ID angis), eller en loggoppføring (om log-ID angis). Bruk: [[{{#Special:Redirect}}/file/Eksempel.jpg]], [[{{#Special:Redirect}}/page/#64308]], [[{{#Special:Redirect}}/revision/#328429]], [[{{#Special:Redirect}}/user/#101]] eller [[{{#Special:Redirect}}/logid/#186]].", "redirect-submit": "Vis", "redirect-lookup": "Slå op:", "redirect-value": "Værdi:", @@ -3195,6 +3262,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.", @@ -3206,7 +3274,6 @@ "fileduplicatesearch-noresults": "Ingen fil med navnet \"$1\" blev fundet.", "specialpages": "Specialsider", "specialpages-note-top": "Forklaring", - "specialpages-note": "* Normale specialsider.\n* Specialsider med begrænset adgang.", "specialpages-group-maintenance": "Vedligeholdelsesside", "specialpages-group-other": "Andre specialsider", "specialpages-group-login": "Log på / opret bruger", @@ -3245,14 +3312,41 @@ "tags-activate": "aktiver", "tags-deactivate": "deaktiver", "tags-hitcount": "{{PLURAL:$1|en ændring|$1 ændringer}}", + "tags-create-heading": "Opret et nyt mærke", + "tags-create-explanation": "Som standard vil nye mærker blive gjort tilgængelige for brugere og robotter.", + "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-invalid-chars": "Mærkenavne må ikke indeholde (,), lodrette streger (|), eller forudstillet skråstreg (/).", + "tags-create-invalid-title-chars": "Mærkenavn må ikke indeholde tegn, som ikke kan bruges i sidetitler.", + "tags-create-already-exists": "Mærket »$1« findes allerede.", + "tags-delete-title": "Slet mærke", + "tags-delete-explanation-initial": "Du er ved at slette mærket »$1« fra databasen.", "tags-delete-reason": "Årsag:", + "tags-activate-title": "Aktiver mærke", + "tags-activate-question": "Du er ved at aktivere mærket »$1«.", "tags-activate-reason": "Årsag:", + "tags-activate-not-allowed": "Det er ikke muligt at aktivere mærket »$1«.", + "tags-activate-not-found": "Mærket »$1« findes ikke.", "tags-activate-submit": "Aktiver", + "tags-deactivate-title": "Deaktiver mærke", + "tags-deactivate-question": "Du er ved at deaktivere mærket »$1«.", "tags-deactivate-reason": "Årsag:", + "tags-deactivate-not-allowed": "Det er ikke muligt at deaktivere mærket »$1«.", "tags-deactivate-submit": "Deaktiver", + "tags-apply-no-permission": "Du har ikke rettigheder til at anvende ændringsmærker sammen med dine ændringer.", + "tags-update-blocked": "Du kan ikke tilføje eller fjerne ændringsmærker mens {{GENDER:$1|du}} er blokeret.", + "tags-edit-title": "Rediger mærker", + "tags-edit-manage-link": "Håndter mærker", + "tags-edit-existing-tags": "Eksisterende mærker:", "tags-edit-existing-tags-none": "Ingen", + "tags-edit-new-tags": "Nye mærker:", + "tags-edit-add": "Tilføj disse mærker:", + "tags-edit-remove": "Fjern disse mærker:", + "tags-edit-remove-all-tags": "(fjern alle mærker)", + "tags-edit-chosen-placeholder": "Vælg nogle mærker", + "tags-edit-chosen-no-results": "Ingen mærker fundet som matcher", "tags-edit-reason": "Årsag:", "comparepages": "Sammenlign sider", "compare-page1": "Side 1", @@ -3263,6 +3357,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)", @@ -3292,7 +3387,7 @@ "htmlform-title-not-exists": "$1 findes ikke.", "logentry-delete-delete": "$1 {{GENDER:$2|slettede}} siden $3", "logentry-delete-delete_redir": "$1 {{GENDER:$2|slettede}} omdirigering $3 ved overskrivning", - "logentry-delete-restore": "$1 {{GENDER:$2|gendannede}} siden $3", + "logentry-delete-restore": "$1 {{GENDER:$2|gendannede}} siden $3 ($4)", "logentry-delete-event": "$1 {{GENDER:$2|ændrede}} synligheden af {{PLURAL:$5|en loghændelse|$5 loghændelser}} for siden $3: $4", "logentry-delete-revision": "$1 {{GENDER:$2|ændrede}} synligheden af {{PLURAL:$5|en version|$5 versioner}} af siden $3: $4", "logentry-delete-event-legacy": "$1 {{GENDER:$2|ændrede}} synligheden af loghændelser for siden $3", @@ -3452,8 +3547,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:", @@ -3479,8 +3577,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 934b63583f..4540cc6e73 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", @@ -119,13 +120,14 @@ "tog-shownumberswatching": "Anzahl der beobachtenden Benutzer anzeigen", "tog-oldsig": "Die vorhandene Signatur:", "tog-fancysig": "Signatur als Wikitext behandeln (ohne automatische Verlinkung)", - "tog-uselivepreview": "Vorschau sofort anzeigen", + "tog-uselivepreview": "Vorschau ohne Neuladen der Seite anzeigen", "tog-forceeditsummary": "Warnen, sofern beim Speichern die Zusammenfassung fehlt", "tog-watchlisthideown": "Eigene Bearbeitungen in der Beobachtungsliste ausblenden", "tog-watchlisthidebots": "Bearbeitungen durch Bots in der Beobachtungsliste ausblenden", "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", @@ -748,8 +750,8 @@ "explainconflict": "Jemand anders hat diese Seite geändert, nachdem du angefangen hast, sie zu bearbeiten.\nDas obere Textfeld enthält den aktuellen Bearbeitungsstand der Seite.\nDas untere Textfeld enthält deine Änderungen.\nBitte füge deine Änderungen in das obere Textfeld ein.\nNur der Inhalt des oberen Textfeldes wird gespeichert, wenn du auf „$1“ klickst.", "yourtext": "Dein Text", "storedversion": "Gespeicherte Version", - "nonunicodebrowser": "'''Achtung: Dein Browser kann Unicode-Zeichen nicht richtig verarbeiten.''' Es wird eine Hilfsroutine eingesetzt, um dir zu erlauben, Seiten sicher zu bearbeiten: Nicht-ASCII-Zeichen werden dabei im Bearbeitungsfenster als hexadezimale Codes angezeigt.", "editingold": "'''Achtung: Du bearbeitest eine alte Version dieser Seite. Sofern du sie speicherst, werden alle neueren Versionen überschrieben.'''", + "unicode-support-fail": "Es scheint, als ob dein Browser kein Unicode unterstützt. Dies ist erforderlich zum Bearbeiten von Seiten, so dass deine Bearbeitung nicht gespeichert wurde.", "yourdiff": "Unterschiede", "copyrightwarning": "'''Bitte kopiere keine Webseiten, die nicht deine eigenen sind, benutze keine urheberrechtlich geschützten Werke ohne Erlaubnis des Urhebers!'''
    \nDu gibst uns hiermit deine Zusage, dass du den Text '''selbst verfasst''' hast, dass der Text Allgemeingut '''(public domain)''' ist, oder dass der '''Urheber''' seine '''Zustimmung''' gegeben hat. Falls dieser Text bereits woanders veröffentlicht wurde, weise bitte auf der Diskussionsseite darauf hin.\nBitte beachte, dass alle {{SITENAME}}-Beiträge automatisch unter der „$2“ stehen (siehe $1 für Einzelheiten). Falls du nicht möchtest, dass deine Arbeit hier von anderen verändert und verbreitet wird, dann klicke nicht auf „Seite speichern“.", "copyrightwarning2": "Bitte beachte, dass alle Beiträge zu {{SITENAME}} von anderen Mitwirkenden bearbeitet, geändert oder gelöscht werden können.\nReiche hier keine Texte ein, falls du nicht willst, dass diese ohne Einschränkung geändert werden können.\n\nDu bestätigst hiermit auch, dass du diese Texte selbst geschrieben hast oder diese von einer gemeinfreien Quelle kopiert hast\n(weitere Einzelheiten unter $1). '''ÜBERTRAGE OHNE GENEHMIGUNG KEINE URHEBERRECHTLICH GESCHÜTZTEN INHALTE!'''", @@ -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.", @@ -816,6 +818,7 @@ "parser-template-loop-warning": "Vorlagenschleife entdeckt: [[$1]]", "template-loop-category": "Seiten mit Vorlagenschleifen", "template-loop-category-desc": "Die Seite enthält eine Vorlagenschleife, z. B. eine Vorlage, die sich selbst rekursiv aufruft.", + "template-loop-warning": "Warnung: Diese Seite ruft [[:$1]] auf, die eine Vorlagenschleife verursacht (ein unendlicher rekursiver Aufruf).", "parser-template-recursion-depth-warning": "Vorlagenrekursionstiefengrenze überschritten ($1)", "language-converter-depth-warning": "Sprachkonvertertiefenlimit überschritten ($1)", "node-count-exceeded-category": "Seiten, die die Knotenanzahl überschritten haben", @@ -1085,6 +1088,7 @@ "timezoneregion-indian": "Indischer Ozean", "timezoneregion-pacific": "Pazifischer Ozean", "allowemail": "E-Mail-Empfang von anderen Benutzern ermöglichen", + "email-blacklist-label": "Diesen Benutzern das Versenden von E-Mails an mich verbieten:", "prefs-searchoptions": "Suche", "prefs-namespaces": "Namensräume", "default": "Voreinstellung", @@ -1128,6 +1132,7 @@ "prefs-editor": "Bearbeitungsprogramm", "prefs-preview": "Vorschau", "prefs-advancedrc": "Erweiterte Optionen", + "prefs-opt-out": "Von den Verbesserungen abmelden", "prefs-advancedrendering": "Erweiterte Optionen", "prefs-advancedsearchoptions": "Erweiterte Optionen", "prefs-advancedwatchlist": "Erweiterte Optionen", @@ -1364,9 +1369,20 @@ "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", + "rcfilters-grouping-title": "Gruppierung", "rcfilters-activefilters": "Aktive Filter", "rcfilters-advancedfilters": "Erweiterte Filter", + "rcfilters-limit-title": "Anzuzeigende Änderungen", + "rcfilters-limit-shownum": "Die {{PLURAL:$1|letzte Änderung|letzten $1 Änderungen}} anzeigen", + "rcfilters-days-title": "Letzte Tage", + "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.", @@ -1378,43 +1394,41 @@ "rcfilters-savedqueries-new-name-label": "Name", "rcfilters-savedqueries-new-name-placeholder": "Beschreibe den Zweck des Filters", "rcfilters-savedqueries-apply-label": "Filter erstellen", + "rcfilters-savedqueries-apply-and-setdefault-label": "Standardfilter erstellen", "rcfilters-savedqueries-cancel-label": "Abbrechen", "rcfilters-savedqueries-add-new-title": "Aktuelle Filtereinstellungen speichern", "rcfilters-restore-default-filters": "Standardfilter wiederherstellen", "rcfilters-clear-all-filters": "Alle Filter löschen", + "rcfilters-show-new-changes": "Neueste Änderungen ansehen", "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.", "rcfilters-filterlist-title": "Filter", - "rcfilters-filterlist-whatsthis": "Was ist das?", - "rcfilters-filterlist-feedbacklink": "Rückmeldung zu den neuen (Beta-)Filtern hinterlassen", + "rcfilters-filterlist-whatsthis": "Wie funktioniert das?", + "rcfilters-filterlist-feedbacklink": "Erzähle uns, was du über diese (neuen) Filterwerkzeuge denkst.", "rcfilters-highlightbutton-title": "Ergebnisse hervorheben", "rcfilters-highlightmenu-title": "Eine Farbe auswählen", "rcfilters-highlightmenu-help": "Eine Farbe auswählen, um diese Eigenschaft hervorzuheben.", "rcfilters-filterlist-noresults": "Keine Filter gefunden", "rcfilters-noresults-conflict": "Keine Ergebnisse gefunden, da sich die Suchkriterien in Konflikt befinden.", "rcfilters-state-message-subset": "Dieser Filter hat keinen Effekt, da seine Ergebnisse mit denen {{PLURAL:$2|des folgenden breiteren Filters|der folgenden breiteren Filter}} einbezogen sind (versuche die Hervorhebung, um sie zu unterscheiden): $1", - "rcfilters-state-message-fullcoverage": "Das Auswählen aller Filter in einer Gruppe ist das Gleiche wie das Auswählen keines Filters. Deshalb hat dieser Filter keinen Effekt. Die Gruppe enthält: $1", - "rcfilters-filtergroup-registration": "Benutzerregistrierung", - "rcfilters-filter-registered-label": "Angemeldet", - "rcfilters-filter-registered-description": "Angemeldete Autoren.", - "rcfilters-filter-unregistered-label": "Unangemeldet", - "rcfilters-filter-unregistered-description": "Autoren, die nicht angemeldet sind.", - "rcfilters-filter-unregistered-conflicts-user-experience-level": "Dieser Filter befindet sich in Konflikt mit {{PLURAL:$2|dem folgenden Erfahrungsfilter, der nur angemeldete Benutzer finden kann|den folgenden Erfahrungsfiltern, die nur angemeldete Benutzer finden können}}: $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.", "rcfilters-filter-editsbyother-label": "Änderungen von anderen", "rcfilters-filter-editsbyother-description": "Alle Änderungen außer deine eigenen.", - "rcfilters-filtergroup-userExpLevel": "Erfahrungsniveau (nur für angemeldete Benutzer)", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Erfahrungsfilter finden nur angemeldete Benutzer. Deshalb befindet sich dieser Filter in Konflikt mit dem Filter „Unangemeldet“.", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Der Filter „Unangemeldet“ befindet sich in Konflikt mit einem oder mehreren Erfahrungsfiltern, die nur angemeldete Benutzer finden können. Die kollidierenden Filter sind oben im Bereich der aktiven Filter markiert.", + "rcfilters-filtergroup-userExpLevel": "Benutzeranmeldung und -erfahrung", + "rcfilters-filter-user-experience-level-registered-label": "Angemeldet", + "rcfilters-filter-user-experience-level-registered-description": "Angemeldete Autoren.", + "rcfilters-filter-user-experience-level-unregistered-label": "Unangemeldet", + "rcfilters-filter-user-experience-level-unregistered-description": "Autoren, die nicht angemeldet sind.", "rcfilters-filter-user-experience-level-newcomer-label": "Neulinge", - "rcfilters-filter-user-experience-level-newcomer-description": "Weniger als 10 Bearbeitungen und eine Aktivität von weniger als 4 Tagen.", + "rcfilters-filter-user-experience-level-newcomer-description": "Angemeldete Autoren mit weniger als 10 Bearbeitungen und einer Aktivität von weniger als 4 Tagen.", "rcfilters-filter-user-experience-level-learner-label": "Anfänger", - "rcfilters-filter-user-experience-level-learner-description": "Mehr Erfahrung als „Neulinge“, aber weniger als „Erfahrene Benutzer“.", + "rcfilters-filter-user-experience-level-learner-description": "Angemeldete Autoren, deren Erfahrung zwischen „Neulinge“ und „Erfahrene Benutzer“ fällt.", "rcfilters-filter-user-experience-level-experienced-label": "Erfahrene Benutzer", - "rcfilters-filter-user-experience-level-experienced-description": "Eine Aktivität von mehr als 30 Tagen und mehr als 500 Bearbeitungen.", + "rcfilters-filter-user-experience-level-experienced-description": "Angemeldete Autoren mit mehr als 500 Bearbeitungen und einer Aktivität von mehr als 30 Tagen.", "rcfilters-filtergroup-automated": "Automatisierte Beiträge", "rcfilters-filter-bots-label": "Bot", "rcfilters-filter-bots-description": "Bearbeitungen, die von automatisierten Werkzeugen durchgeführt wurden.", @@ -1437,6 +1451,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 …", @@ -1449,18 +1468,28 @@ "rcfilters-hideminor-conflicts-typeofchange-global": "Der Filter „Kleine Bearbeitungen“ kollidiert mit einem oder mehreren Änderungstypfiltern, da bestimmte Änderungstypen nicht als „klein“ festgelegt werden können. Die kollidierenden Filter sind oben im Bereich der aktiven Filter markiert.", "rcfilters-hideminor-conflicts-typeofchange": "Bestimmte Änderungstypen können nicht als „klein“ festgelegt werden, so dass dieser Filter mit den folgenden Änderungstypfiltern kollidiert: $1", "rcfilters-typeofchange-conflicts-hideminor": "Dieser Änderungstypfilter kollidiert mit dem Filter „Kleine Bearbeitungen“. Bestimmte Änderungstypen können nicht als „klein“ festgelegt werden.", - "rcfilters-filtergroup-lastRevision": "Letzte Version", - "rcfilters-filter-lastrevision-label": "Letzte Version", - "rcfilters-filter-lastrevision-description": "Die aktuellste Änderung an einer Seite.", - "rcfilters-filter-previousrevision-label": "Frühere Versionen", - "rcfilters-filter-previousrevision-description": "Alle Änderungen, die nicht die aktuellste Änderung an einer Seite sind.", + "rcfilters-filtergroup-lastRevision": "Aktuellste Versionen", + "rcfilters-filter-lastrevision-label": "Aktuellste Version", + "rcfilters-filter-lastrevision-description": "Nur die aktuellste Änderung an einer Seite.", + "rcfilters-filter-previousrevision-label": "Nicht die aktuellste Version", + "rcfilters-filter-previousrevision-description": "Alle Änderungen, die nicht die „aktuellste Version“ sind.", "rcfilters-filter-excluded": "Ausgeschlossen", "rcfilters-tag-prefix-namespace-inverted": ":nicht $1", + "rcfilters-exclude-button-off": "Ausgewählte ausschließen", + "rcfilters-exclude-button-on": "Ausgewählte ausgeschlossen", + "rcfilters-view-advanced-filters-label": "Erweiterte Filter", "rcfilters-view-tags": "Markierte Bearbeitungen", "rcfilters-view-namespaces-tooltip": "Ergebnisse nach Namensraum filtern", "rcfilters-view-tags-tooltip": "Ergebnisse filtern, die Bearbeitungsmarkierungen verwenden", "rcfilters-view-return-to-default-tooltip": "Zurück zum Hauptfiltermenü", "rcfilters-liveupdates-button": "Live-Aktualisierungen", + "rcfilters-liveupdates-button-title-on": "Live-Aktualisierungen ausschalten", + "rcfilters-liveupdates-button-title-off": "Neue Änderungen bei Auftreten anzeigen", + "rcfilters-watchlist-markseen-button": "Alle Änderungen als gesehen markieren", + "rcfilters-watchlist-edit-watchlist-button": "Deine Liste der beobachteten Seiten bearbeiten", + "rcfilters-watchlist-showupdated": "Änderungen an Seiten, die du seit ihrem Auftreten nicht besucht hast, sind fett markiert.", + "rcfilters-preference-label": "Die verbesserte Version der Letzten Änderungen ausblenden", + "rcfilters-preference-help": "Macht die Neugestaltung der Oberfläche aus dem Jahr 2017 und alle seitdem hinzugefügten Werkzeuge wieder rückgängig.", "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.", @@ -1518,6 +1547,7 @@ "uploadbtn": "Datei hochladen", "reuploaddesc": "Abbrechen und zurück zur Hochladen-Seite", "upload-tryagain": "Geänderte Dateibeschreibung abschicken", + "upload-tryagain-nostash": "Erneut hochgeladene Datei und veränderte Beschreibung übermitteln", "uploadnologin": "Nicht angemeldet", "uploadnologintext": "Du musst dich $1, um Dateien hochladen zu können.", "upload_directory_missing": "Das Upload-Verzeichnis ($1) fehlt und konnte durch den Webserver auch nicht erstellt werden.", @@ -1577,6 +1607,7 @@ "file-deleted-duplicate-notitle": "Eine identische Datei wurde kürzlich gelöscht und der Titel wurde unterdrückt.\nDu solltest jemanden fragen, der die Möglichkeit hat, die unterdrückten Dateidaten anzusehen, um die Situation vor dem erneuten Hochladen zu überprüfen.", "uploadwarning": "Warnung", "uploadwarning-text": "Bitte ändere unten die Dateibeschreibung und versuche es erneut.", + "uploadwarning-text-nostash": "Bitte lade die Datei erneut hoch, ändere unten die Beschreibung und versuche es erneut.", "savefile": "Datei speichern", "uploaddisabled": "Hochladen deaktiviert", "copyuploaddisabled": "Das Hochladen von URLs ist deaktiviert", @@ -1739,7 +1770,7 @@ "listfiles_size": "Größe", "listfiles_description": "Beschreibung", "listfiles_count": "Versionen", - "listfiles-show-all": "Alte Bildversionen einschließen", + "listfiles-show-all": "Alte Dateiversionen einschließen", "listfiles-latestversion": "Aktuelle Version", "listfiles-latestversion-yes": "Ja", "listfiles-latestversion-no": "Nein", @@ -1842,6 +1873,8 @@ "pageswithprop-legend": "Seiten mit einer Seiteneigenschaft", "pageswithprop-text": "Diese Spezialseite listet Seiten auf, die eine bestimmte Seiteneigenschaft verwenden.", "pageswithprop-prop": "Eigenschaftsname:", + "pageswithprop-reverse": "In umgekehrter Reihenfolge sortieren", + "pageswithprop-sortbyvalue": "Nach Eigenschaftswert sortieren", "pageswithprop-submit": "Los", "pageswithprop-prophidden-long": "Langtexteigenschaftswert versteckt ($1)", "pageswithprop-prophidden-binary": "Binäreigenschaftswert versteckt ($1)", @@ -2144,7 +2177,7 @@ "unwatchthispage": "Nicht mehr beobachten", "notanarticle": "Keine Seite", "notvisiblerev": "Version wurde gelöscht", - "watchlist-details": "Du beobachtest {{PLURAL:$1|eine Seite|$1 Seiten}}, ohne dass Diskussionsseiten getrennt gezählt werden.", + "watchlist-details": "{{PLURAL:$1|Eine Seite ist|$1 Seiten sind}} auf deiner Beobachtungsliste (sowie Diskussionsseiten).", "wlheader-enotif": "Der E-Mail-Benachrichtigungsdienst ist aktiviert.", "wlheader-showupdated": "Seiten mit noch nicht gesehenen Änderungen werden '''fett''' dargestellt.", "wlnote": "Es {{PLURAL:$1|folgt die letzte Änderung|folgen die letzten $1 Änderungen}} der letzten {{PLURAL:$2|Stunde|$2 Stunden}}. Stand: $3, $4 Uhr.", @@ -2179,6 +2212,7 @@ "enotif_lastdiff": "Um diese Änderung anzusehen, siehe $1", "enotif_anon_editor": "Anonymer Benutzer $1", "enotif_body": "Hallo $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nZusammenfassung des Bearbeiters: $PAGESUMMARY $PAGEMINOREDIT\n\nKontakt zum Bearbeiter:\nE-Mail: $PAGEEDITOR_EMAIL\nWiki: $PAGEEDITOR_WIKI\n\nBei weiterer Aktivität auf der Seite werden dir so lange keine weiteren Benachrichtigungs-E-Mails gesendet, bis du die Seite wieder angemeldet besucht hast. Auf deiner Beobachtungsliste kannst du alle Benachrichtigungsmarkierungen zusammen zurücksetzen.\n\nDein freundliches {{SITENAME}}-Benachrichtigungssystem\n\n--\nUm die Einstellungen der E-Mail-Benachrichtigung anzupassen, besuche {{canonicalurl:{{#special:Preferences}}}}.\n\nUm die Einstellungen deiner Beobachtungsliste anzupassen, besuche {{canonicalurl:{{#special:EditWatchlist}}}}.\n\nUm die Seite von deiner Beobachtungsliste herunterzunehmen, besuche $UNWATCHURL.\n\nRückmeldungen und weitere Hilfe: $HELPPAGE", + "enotif_minoredit": "Dies ist eine kleine Bearbeitung", "created": "erstellt", "changed": "geändert", "deletepage": "Seite löschen", @@ -2207,6 +2241,7 @@ "delete-warning-toobig": "Diese Seite hat mit mehr als $1 {{PLURAL:$1|Version|Versionen}} eine sehr lange Versionsgeschichte. Das Löschen kann zu Störungen im Datenbankbetrieb führen.", "deleteprotected": "Du kannst diese Seite nicht löschen, da sie geschützt wurde.", "deleting-backlinks-warning": "Warnung: Es verweisen noch [[Special:WhatLinksHere/{{FULLPAGENAME}}|andere Seiten]] auf diese zu löschende Seite oder sie ist noch an anderer Stelle eingebunden.", + "deleting-subpages-warning": "Warnung: Die Seite, die du löschen möchtest, hat [[Special:PrefixIndex/{{FULLPAGENAME}}/|{{PLURAL:$1|eine Unterseite|$1 Unterseiten|51=über 50 Unterseiten}}]].", "rollback": "Zurücksetzen der Änderungen", "rollbacklink": "Zurücksetzen", "rollbacklinkcount": "{{PLURAL:$1|Eine Version|$1 Versionen}} zurücksetzen", @@ -2372,6 +2407,7 @@ "sp-contributions-newonly": "Nur Seitenerstellungen anzeigen", "sp-contributions-hideminor": "Kleine Bearbeitungen ausblenden", "sp-contributions-submit": "Suchen", + "sp-contributions-outofrange": "Es konnten keine Ergebnisse angezeigt werden. Der angeforderte IP-Adressbereich ist größer als die CIDR-Grenze von /$1.", "whatlinkshere": "Links auf diese Seite", "whatlinkshere-title": "Seiten, die auf „$1“ verlinken", "whatlinkshere-page": "Seite:", @@ -2660,7 +2696,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.", @@ -3455,7 +3491,7 @@ "fileduplicatesearch-noresults": "Es wurde keine Datei namens „$1“ gefunden.", "specialpages": "Spezialseiten", "specialpages-note-top": "Legende", - "specialpages-note": "* Reguläre Spezialseiten\n* Zugriffsbeschränkte Spezialseiten", + "specialpages-note-restricted": "* Reguläre Spezialseiten\n* Zugriffsbeschränkte Spezialseiten", "specialpages-group-maintenance": "Wartungslisten", "specialpages-group-other": "Andere Spezialseiten", "specialpages-group-login": "Benutzerkonto", @@ -3574,6 +3610,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 043d17937f..fa94b3b784 100644 --- a/languages/i18n/din.json +++ b/languages/i18n/din.json @@ -57,12 +57,12 @@ "oct": "Pthi", "nov": "Ptht", "dec": "Pthr", - "pagecategories": "{{PLURAL:$1|atëkthok|atëkthuɔk}}", - "category_header": "Apääm në atëkthok \"$1\"ic", - "subcategories": "Tëktëëkor", - "category-media-header": "Kuat në alëk $1 yic", - "hidden-categories": "{{PLURAL:$1|Atëkthok cï thiaan|Atëkthuɔk cï thiaan}}", - "category-subcat-count": "{{PLURAL:$2|Akuutkäŋë anɔŋ akutkäŋ-thiikɛ̈ kepɛ̈c.|Akuutkäŋë anɔŋ \n{{PLURAL:$1|akuutkäŋë|$1 akuutkäŋkɛ̈}}, në $2 yic̈;}}", + "pagecategories": "{{PLURAL:$1|Bekätakthook|Bekätakthuɔk}}", + "category_header": "Apääm në bekätakthook \"$1\"ic", + "subcategories": "Bekätakthuɔkkor", + "category-media-header": "Kuat në bekätakthook \"$1\" yic", + "hidden-categories": "{{PLURAL:$1|Bekätakthook cï thiaan|Bekätakthuɔk cï thiaan}}", + "category-subcat-count": "{{PLURAL:$2|Bekätakthookë anɔŋ bekätakthookkorkɛ̈ kepɛ̈c.|Bekätakthookë anɔŋ {{PLURAL:$1|bekätakthookkorë|$1 bekätakthuɔkkorkɛ̈}}, në $2 yic̈;}}", "category-article-count": "{{PLURAL:$2|Bekätakthookë anɔŋic yärë yetök.|{{PLURAL:$1|Yärë atɔ̈|$1 yɔ̈rkɛ̈ aatɔ̈}} bekätakthook thiöökë yic, në $2 yic.}}", "category-file-count": "{{PLURAL:$2|Bekätakthook kän anɔŋic wëtmät kän etök.|{{PLURAL:|Wëtmät de $1 thiöökë atɔ̈ |wëlmäät ke $1 thiookkɛ̈ aa tɔ̈}} në bekätakthook känic, në $2 yiic ëbɛ̈n.}}", "listingcontinuesabbrev": "ɣäthtueŋ", @@ -126,7 +126,7 @@ "editsection": "cokic", "editold": "cokic", "editlink": "cokic", - "viewsourcelink": "Ɣoi tënëyök", + "viewsourcelink": "É£oi tënëyök", "editsectionhint": "Cokic akut: $1", "toc": "Kätɔ̈", "showtoc": "nyooth", @@ -140,7 +140,7 @@ "nstab-project": "Apam kälooi", "nstab-image": "Apamduööt", "nstab-template": "Macuëc", - "nstab-category": "Atëkthok", + "nstab-category": "Bekätakthook", "mainpage-nstab": "Apam këdït", "badtitle": "Rin awäc", "badtitletext": "Këjiɛmë ca thiëëcë acïï lɔcök, tëdɛ̈ ka cïn kë tɔ̈u thïn, tëdɛ̈ ka këjiɛmë de thuɔkmɛ̈t wälä de wikimɛ̈t aa këcëkɛ nyiɛc nuet apath. Tëkdɛ̈ kä nɔŋic cït cïï lëu bïke luööi në käjiɛmëkeyiic.", @@ -185,7 +185,7 @@ "bold_sample": "Gɔ̈t dïtnyin", "bold_tip": "Gɔ̈t dïtnyin", "italic_sample": "Rïugäät", - "italic_tip": "Gɔ̈t cïrïu", + "italic_tip": "Rïugäät", "link_sample": "Nuɛ̈të rinënyooth", "link_tip": "Nuɛ̈t akenythïn", "extlink_sample": "http://www.example.com ruk rin", @@ -205,7 +205,7 @@ "showpreview": "Nyooth këkoŋtiŋ", "showdiff": "Nyoothë käcëwaar", "anoneditwarning": "Nyïïn: Yin akɛ̈cë ŋaanythïn. IP de tëcieŋdu abë tïc tënë jäŋ ëbɛ̈n të gɛ̈t yïn ke waar käŋ. Të [$1 bɛk yïn ɣöt] tëdɛ̈ [$2 të ciɛk yïn cinakuɛ̈n], ka kä gɔ̈tke ku kä waarke (ku kä kɔ̈k nɔŋ kony ayɛ) aabï ke gät rinëduluuiku.", - "loginreqlink": "Ŋaanythïn", + "loginreqlink": "ŋaanythïn", "newarticletext": "Yïn acë anuët lɔ apam liu buɔɔthcök.\nTë wïc yin ba apam kënë cak, ka jɔk ba gɔ̈t në akeer tɔ̈ piinyic (tïŋ [$1 apamëkuɔny] të wic yin ba wëlëŋïc yök).\nTë tɔ̈ yïn ëtɛ̈n ke kɛ̈ce ŋuun, kayï tuany gakyeethany de ciëën në akuenarekwëldu-yic.", "noarticletext": "Amɛn, acïn gɔ̈t tɔ̈ ee apam thiöökë-yic.\nYïn alëu ba [[Special:Search/{{PAGENAME}}|wɛ̈tnhom thiööke göör]] në apam kɔ̈kiic,\n[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} göör cökthɛɛr nɔŋkaariic],\nnadëk [{{fullurl:{{FULLPAGENAME}}|action=edit}} cak apamë].", "noarticletext-nopermission": "Amɛn, acïn gär ee apam kënë yic. Yïn alëu ba [[Special:Search/{{PAGENAME}}|këjiɛɛmë de apam thööke göör]] këjiɛɛmë de apam thööke göör në apɛmkɔ̈k yiic, tëdɛ̈ ka [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}}] yïn alëu ba athörtɔ̈ɔ̈uke nɔŋ kar ke apam thiöökë gööric ayɛ. Lakin, yïn acï nɔŋ yic ba apam yam cak.", @@ -215,9 +215,9 @@ "templatesused": "{{PLURAL:$1|Macuëc|Mïcuëc}} ee luööi në apam känic", "template-protected": "(cïtiit)", "template-semiprotected": "(gëlamääth)", - "hiddencategories": "Apamkën ee rem ë {{PLURAL:$1|1 bekätakthook cï thiaan |$1 bekäŋtakthook cï thiaan}}:", - "permissionserrorstext-withaction": "Yïn acïï nɔŋ nhomlääu ba $2, \n{{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", + "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.", "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", @@ -257,7 +257,7 @@ "search-section": "(akut $1)", "search-suggest": "Ee $1 yen ca ŋuun?", "searchall": "ëbɛ̈n", - "search-showingresults": "{{PLURAL:$4|Käcïyök $1 de $3|Këcïyök $1 - $2 de $3}}", + "search-showingresults": "{{PLURAL:$4|Käcïyök $1 de $3|Këcïyök $1 - $2 de $3}}", "search-nonefound": "Acin këcïbenbei ë thɔ̈ŋ ke thiëc", "preferences": "Känyaar", "mypreferences": "Känyaar", @@ -312,7 +312,7 @@ "recentchangeslinked-toolbox": "Kaceyiicwar nɔŋ kar", "recentchangeslinked-title": "Weer thöŋ kekë \"$1\"", "recentchangeslinked-summary": "Kän areny de wɛ̈r cïloi wɛ̈ramɛn tënɔŋ apam nuɛtke apam nhic (nadëk ka nuɛtke kɔcakuut de bekätakthook nhic).\nApam tɔ̈ [[Special:Watchlist|abërtïtdu]] aa gɔ̈tdïtnyin.", - "recentchangeslinked-page": "Rin ë akap", + "recentchangeslinked-page": "Rin ë apam:", "recentchangeslinked-to": "Nyuɔɔthë kä cï ke waar në apɛ̈m cï nuɛ̈ɛ̈t ke apam tiöökë, ku acie kä cï ke waar në yen apam thiöökë yic", "upload": "Wälë apamduööt", "filedesc": "Cuutyic", @@ -331,7 +331,7 @@ "filehist-help": "Tuenyë në aköl/akɔ̈licic apamduööt É£oi kecit rɔt nyuɔɔth në akölic.", "filehist-current": "ee mënë", "filehist-datetime": "Aköl/Akɔ̈lic", - "filehist-thumb": "riöpbundït", + "filehist-thumb": "Riöpbundït", "filehist-thumbtext": "Alelthook ë riöpcök, tɛ̈cït $1", "filehist-user": "Dului", "filehist-dimensions": "Thëmthëm", @@ -362,7 +362,7 @@ "logeventslist-submit": "Nyooth", "allarticles": "Abɛ̈ɛ̈k ëbɛ̈n", "allpagessubmit": "Lɔ", - "categories": "Atëkthuɔk", + "categories": "Bekätakthuɔk", "categories-submit": "Nyooth", "sp-deletedcontributions-contribs": "amöc", "linksearch-ns": "Rinɣɔnläu", @@ -371,6 +371,7 @@ "watchlist": "Abërtït", "mywatchlist": "Abërtït", "watch": "Ɣoi", + "watchthispage": "Watch this page", "watchlist-hide": "Thaan", "watchlist-submit": "Nyooth", "historyaction-submit": "Nyooth", @@ -396,12 +397,12 @@ "sp-contributions-talk": "jam", "sp-contributions-submit": "Yiɔ̈ɔ̈p", "whatlinkshere": "Këkerɛkthïn", - "whatlinkshere-title": "apääm aanyuët tënë \"$1\"", + "whatlinkshere-title": "Apääm aanyuët tënë \"$1\"", "whatlinkshere-page": "Apam:", "linkshere": "Apɛ̈m bɔ̈ anuët në [[:$1]]:", "isredirect": "bɛnwel apam", "istemplate": "tɛ̈wë anuët në athööric ku bë athöördɛ̈ nyooth", - "isimage": "Nuɛ̈t ë apamduööt", + "isimage": "nuɛ̈t ë apamduööt", "whatlinkshere-prev": "{{PLURAL:$1|ketueŋ|ketueŋ $1}}", "whatlinkshere-next": "{{PLURAL:$1|la|la $1}}", "whatlinkshere-links": "← anyuët", @@ -458,7 +459,7 @@ "tooltip-ca-nstab-project": "Ɣoi apam kätɔ̈", "tooltip-ca-nstab-image": "Ɣoië apäm ë makec", "tooltip-ca-nstab-template": "Tïŋ macuëc", - "tooltip-ca-nstab-category": "Ɣoië apäm atëkthok", + "tooltip-ca-nstab-category": "Ɣoië apäm bekätakthook", "tooltip-save": "Tɔ̈ɔ̈uë weerdu", "tooltip-preview": "Tiɛ̈ŋë tueŋ weerdu. Yïn looië yen këcë guor tɔ̈ɔ̈u.", "tooltip-diff": "Nyoothë weer É£o cä looi këcïgɔ̈tic", @@ -492,7 +493,7 @@ "exif-colorspace": "Tëlääu kiit", "exif-datetimeoriginal": "Akölnïn ku akölic ë cäk ë akutëyith", "exif-datetimedigitized": "Akölnïn ku akölic ë cɔkakuënnhialkupiny", - "exif-iimcategory": "Atëkthok", + "exif-iimcategory": "Bekätakthook", "exif-disclaimer": "Acëkakuɔ", "exif-orientation-1": "Epath", "namespacesall": "ëbɛ̈n", diff --git a/languages/i18n/diq.json b/languages/i18n/diq.json index 9994f625bd..d97bdbeb4c 100644 --- a/languages/i18n/diq.json +++ b/languages/i18n/diq.json @@ -176,13 +176,7 @@ "anontalk": "Werênayış", "navigation": "Pusula", "and": " u", - "qbfind": "Bıvin", - "qbbrowse": "Çım ra viyarne", - "qbedit": "Bıvırne", - "qbpageoptions": "Na perrer", - "qbmyoptions": "Perrê mı", "faq": "PVP", - "faqpage": "Project: PVP", "actions": "Hereketi", "namespaces": "Heruna naman", "variants": "Varyanti", @@ -208,32 +202,22 @@ "edit-local": "Şınasnayışê lokali bıvurne", "create": "Vıraze", "create-local": "Şınasnayışê lokali cı ke", - "editthispage": "Na perrer bıvurne", - "create-this-page": "Na perer bıvıraz", "delete": "Bestern", - "deletethispage": "Na perrer bestern", - "undeletethispage": "Na perer mebesterne", "undelete_short": "{{PLURAL:$1|Yew vırnayışi|$1 Vırnayışan}} mestere", "viewdeleted_short": "{{PLURAL:$1|Jew vurnayış esternayi|$1 Vurnayışanê esternayan}} bımotne", "protect": "Bıstarnê", "protect_change": "bıvırne", - "protectthispage": "Ena perre şeveknê", "unprotect": "Starnayışi bıvurne", - "unprotectthispage": "Şeveknayışê ena perre bıvırne", "newpage": "Perra newi", - "talkpage": "Na per dı vatan kew", "talkpagelinktext": "Mesac", "specialpage": "Perra xısusiye", "personaltools": "Hacetê şexsiy", - "articlepage": "Pera zerreki bıvin", "talk": "Werênayış", "views": "Asayışi", "toolbox": "Haceti", "tool-link-userrights": "Grubanê {{GENDER:$1|karberi}} bıvırnë", "tool-link-userrights-readonly": "Grubanê {{GENDER:$1|karberi}} bıvin", "tool-link-emailuser": "E-posta ya në {{GENDER:$1|karberi}}", - "userpage": "Perra karberi bıvin", - "projectpage": "Perra proji bıvin", "imagepage": "Pera dosye bımotné", "mediawikipage": "Pera mesaji bımotné", "templatepage": "Pera şabloni bımotné", @@ -667,7 +651,6 @@ "explainconflict": "Wexta ke şıma pel vurneyene yewna ten zi pel vurna.\nNuşteyo corin; halê pelo nıkayin mocneno.\nVurnayişê şıma cêr de mocya ( musya).\nVurnayişanê peyinan şıma gani qayd bıkeri.\nWexta ke şıma butonê \"$1\" tıkna '''teyna''' nuşteyo corin qayd beno.", "yourtext": "nuşteyê şıma", "storedversion": "Nuşteyo qaydbiyaye", - "nonunicodebrowser": "'''DÄ°QET: Browserê şıma u unicode yewbini nêgeni. Qey izin dayişê vurnayişê pelan: Karakteri ke ASCII niyê; zerreyê qutiyê vurnayişi de kodi (cod) şiyes-şiyes aseni.'''", "editingold": "'''Ä°qaz: Şıma ena perre sera yew çım ra viyarnayışê kıhani vırnenê.'''\nEger şıma ey qeyd kerê, pêro vırnayışê ke çım ra viyarnayış ra heta ewro biy, ê benê vıni.", "yourdiff": "pêverronayiş", "copyrightwarning": "'''Recay iqazi:'''Sitey {{SITENAME}} ra iştıraki pêro umışiya $2 zerre deyo (teferuatan rê $1 bıvênê).\n\nİştırakê şıma, şıma qayıl niyê ke yewna merdımi kerpeyina bıvurnê ya zi yewna cayi ra vıla kerê ke, iştırakiştıraq = iştırak. mekewê.
    \nFına zi qayılê ke iştıraq kewê, şıma qayılê ke şar vaco eno nuşte fılan kesi nusnayo ya zi meqemanê resmiyan ra zanayışê cı û malumatê cı esto / cayanê xoseran ra gırewtışi rê şıma garanti danê. '''Tiya de şıma werê telifi ra ke mısade nêgırewto, eserê cı tiya vıla mekerê! '''", @@ -2203,7 +2186,7 @@ "movepage-page-moved": "pelê $1i kırışiya pelê $2i.", "movepage-page-unmoved": "pelê $1i nêkırışiyeno sernameyê $2i.", "movepage-max-pages": "tewr ziyed $1 {{PLURAL:$1|peli|peli}} kırışiya u hıni ziyedê ıney otomotikmen nêkırışiyeno.", - "movelogpage": "Qeydê wegrotışi", + "movelogpage": "Qeydê berdışi", "movelogpagetext": "Cêr de listê da kırşiyayışanê perran pêrıne esta.", "movesubpage": "{{PLURAL:$1|Subpage|pelê bınıni}}", "movesubpagetext": "{{PLURAL:$1|pelê bınıni yê|pelê bınıni yê}} no $1 peli cer de yo.", @@ -3182,7 +3165,6 @@ "fileduplicatesearch-noresults": "Ebe namey \"$1\" ra dosya nêdiyayê.", "specialpages": "Perrê xısusiy", "specialpages-note-top": "Kıtabek", - "specialpages-note": "* Pelê xasê normali.\n* Pelê xasê nımıtey.", "specialpages-group-maintenance": "Raporê pawıtışi", "specialpages-group-other": "Pelê xısusiyê bini", "specialpages-group-login": "Dekew / hesab vıraz", @@ -3232,6 +3214,7 @@ "compare-invalid-title": "Sernameyo ke şımayê vanê ravêrde niyo.", "compare-title-not-exists": "Sernameyo ke şımayê vanê mewcud niyo.", "compare-revision-not-exists": "Revizyono ke şımaye vanê mewcud niyo.", + "diff-form": "yew '''form'''", "dberr-problems": "Mayê muxulêm! Ena sita dı newke xırabiya teknik esta.", "dberr-again": "Dı-rê deqiqeyi vınde û heni bar ke.", "dberr-info": "(Erzmelumati ra xızmetkari nêreseno: $1)", diff --git a/languages/i18n/el.json b/languages/i18n/el.json index 1492aa4061..9a8983b334 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": "Αν υπάρχει μια διεύθυνση ηλεκτρονικού ταχυδρομείου που συνδέεται με αυτό το όνομα χρήστη, τότε θα σας αποσταλεί ένα μήνυμα ηλεκτρονικού ταχυδρομείου για την επαναφορά του κωδικού πρόσβασης.", @@ -643,7 +644,7 @@ "summary": "Σύνοψη:", "subject": "Θέμα:", "minoredit": "Αυτή είναι μια μικροαλλαγή", - "watchthis": "Παρακολούθηση αυτής της σελίδας", + "watchthis": "Παρακολούθηση της σελίδας", "savearticle": "Αποθήκευση σελίδας", "savechanges": "Αποθήκευση αλλαγών", "publishpage": "Δημοσίευση σελίδας", @@ -721,8 +722,8 @@ "semiprotectedpagewarning": "'''Σημείωση:''' Αυτή η σελίδα έχει κλειδωθεί ώστε μόνο εγγεγραμμένοι χρήστες μπορούν να την επεξεργαστούν.\nΗ πιο πρόσφατη καταχώρηση στο αρχείο καταγραφής παρέχεται παρακάτω για αναφορά:", "cascadeprotectedwarning": "Προσοχή: Αυτή η σελίδα έχει κλειδωθεί ώστε μόνο χρήστες με [[Special:ListGroupRights|συγκεκριμένα δικαιώματα]] να μπορούν να την επεξεργαστούν, επειδή περιλαμβάνεται {{PLURAL:$1|στην ακόλουθη|στις ακόλουθες}} διαδοχικά (cascaded) {{PLURAL:$1|προστατευμένη σελίδα|προστατευμένες σελίδες}}:", "titleprotectedwarning": "'''Προειδοποίηση: Αυτή η σελίδα έχει κλειδωθεί ώστε χρειάζονται [[Special:ListGroupRights|ειδικά δικαιώματα]] για να δημιουργηθεί.'''\nΗ πιο πρόσφατη καταχώρηση στο αρχείο καταγραφής παρέχεται παρακάτω για αναφορά:", - "templatesused": "{{PLURAL:$1|Πρότυπο που χρησιμοποιείται|Πρότυπα που χρησιμοποιούνται}} στη σελίδα αυτή:", - "templatesusedpreview": "{{PLURAL:$1|Πρότυπο που χρησιμοποιείται|Πρότυπα που χρησιμοποιούνται}} σε αυτήν την προεπισκόπηση:", + "templatesused": "{{PLURAL:$1|Πρότυπο που χρησιμοποιείται|Πρότυπα που χρησιμοποιούνται}} σε αυτή τη σελίδα:", + "templatesusedpreview": "{{PLURAL:$1|Πρότυπο που χρησιμοποιείται|Πρότυπα που χρησιμοποιούνται}} σε αυτή την προεπισκόπηση:", "templatesusedsection": "{{PLURAL:$1|Πρότυπο|Πρότυπα}} που χρησιμοποιούνται σε αυτή την ενότητα:", "template-protected": "(προστατευμένη)", "template-semiprotected": "(ημιπροστατευμένη)", @@ -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": "Φιλτράρισμα πρόσφατων αλλαγών (περιηγηθείτε ή αρχίστε να πληκτρολογείτε)", @@ -1328,18 +1338,16 @@ "rcfilters-filterlist-noresults": "Δεν βρέθηκαν φίλτρα", "rcfilters-noresults-conflict": "Δε βρέθηκαν αποτελέσματα γιατί τα κριτήρια αναζήτησης είναι σε διένεξη.", "rcfilters-state-message-subset": "Αυτό το φίλτρο δεν έχει επιρροή επειδή τα αποτελέσματά του περιλαμβάνονται σε αυτά {{PLURAL:$2|ευρύτερου φίλτρου|ευρύτερων φίλτρων}} (δοκιμάστε την επισήμανση για να τα ξεχωρήσετε): $1", - "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-filtergroup-user-experience-level-conflicts-unregistered": "Τα φίλτρα εμπειρίας βρίσκουν μόνο εγγεγραμμένους χρήστες, οπότε αυτό το φίλτρο αντικρούει το φίλτρο \"μη εγγεγραμμένοι\".", + "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": "Μαθητευόμενοι", @@ -2592,12 +2600,12 @@ "print.css": "/* Το τοποθετημένο εδώ CSS θα επηρεάσει το αποτέλεσμα της εκτύπωσης */", "common.js": "/* Οποιοσδήποτε κώδικας JavaScript εδώ θα φορτωθεί για όλους τους χρήστες σε κάθε φόρτωση σελίδας. */", "anonymous": "{{PLURAL:$1|Ανώνυμος χρήστης|Ανώνυμοι χρήστες}} του {{SITENAME}}", - "siteuser": "{{SITENAME}} χρήστης $1", + "siteuser": "χρήστη του {{SITENAME}} $1", "anonuser": "ανώνυμος χρήστης $1 του {{SITENAME}}", "lastmodifiedatby": "Η σελίδα αυτή τροποποιήθηκε τελευταία φορά στις $2, στις $1 από το χρήστη $3.", "othercontribs": "Βασισμένο στη δουλειά του/των $1", "others": "άλλοι", - "siteusers": "{{SITENAME}} {{PLURAL:$2|χρηστής|χρήστες}} του ιστοχώρου $1", + "siteusers": "{{PLURAL:$2|ο χρηστής|οι χρήστες}} του ιστοχώρου {{SITENAME}} $1", "anonusers": "{{PLURAL:$2|ανώνυμος χρήστης|ανώνυμοι χρήστες}} $1 του {{SITENAME}}", "creditspage": "Αναγνώριση συνεισφοράς στη σελίδα", "nocredits": "Δεν υπάρχουν πληροφορίες σχετικά με την αναγνώριση συνεισφοράς σε αυτή τη σελίδα.", @@ -3243,7 +3251,6 @@ "fileduplicatesearch-noresults": "Δεν βρέθηκε κανένα αρχείο με το όνομα «$1».", "specialpages": "Ειδικές σελίδες", "specialpages-note-top": "Υπόμνημα", - "specialpages-note": "* Κανονικές ειδικές σελίδες.\n* Ειδικές σελίδες με περιορισμούς.", "specialpages-group-maintenance": "Αναφορές συντήρησης", "specialpages-group-other": "Άλλες ειδικές σελίδες", "specialpages-group-login": "Σύνδεση / δημιουργία λογαριασμού", @@ -3352,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..6c4d8b8b22 100644 --- a/languages/i18n/en-gb.json +++ b/languages/i18n/en-gb.json @@ -30,7 +30,10 @@ "Anomie", "Dr. Shikha Jaggi", "Xð", - "Matma Rex" + "Matma Rex", + "Dejavu", + "Jdforrester", + "Pierpao" ] }, "tog-underline": "Link underlining:", @@ -60,14 +63,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 +149,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 +179,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 +195,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 +206,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 +318,253 @@ "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-cancel": "Cancel", + "botpasswords-label-delete": "Delete", + "botpasswords-label-resetpassword": "Reset password", + "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\".", + "resetpass_forbidden": "Passwords cannot be changed", + "resetpass_forbidden-reason": "Passwords cannot be changed: $1", + "resetpass-no-info": "Devi essere collegato per accedere a questa pagina direttamente", + "resetpass-submit-loggedin": "Change password", + "resetpass-submit-cancel": "Cancel", + "resetpass-wrong-oldpass": "Passwort temporanea o corrente non valida.\nHai modificato la tua password o ne hai richiesta una temporanea.", + "resetpass-temp-password": "Temporary password:", + "passwordreset": "Reset password", + "passwordreset-username": "Username:", + "changeemail-none": "(none)", + "resettokens-tokens": "Tokens:", + "bold_sample": "Bold text", + "italic_sample": "Italic text", "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.", @@ -346,6 +574,7 @@ "revisionasof": "Revision as of $1", "previousrevision": "← Older revision", "cur": "cur", + "last": "prev", "lineno": "Line $1:", "editundo": "undo", "searchresults": "Search results", @@ -353,6 +582,7 @@ "prevn": "previous {{PLURAL:$1|$1}}", "nextn": "next {{PLURAL:$1|$1}}", "shown-title": "Show $1 {{PLURAL:$1|result|results}} per page", + "viewprevnext": "View ($1 {{int:pipe-separator}} $2) ($3)", "searchprofile-articles": "Content pages", "searchprofile-images": "Multimedia", "searchprofile-everything": "Everything", @@ -374,6 +604,8 @@ "rclistfrom": "Show new changes starting from $2, $3", "rcshowhidebots": "$1 bots", "rcshowhideliu": "$1 registered users", + "rcshowhideanons": "$1 anonymous users", + "rcshowhidemine": "$1 my edits", "rclinks": "Show last $1 changes in last $2 days", "diff": "diff", "hist": "hist", diff --git a/languages/i18n/en.json b/languages/i18n/en.json index c688efff52..5fccdace81 100644 --- a/languages/i18n/en.json +++ b/languages/i18n/en.json @@ -30,13 +30,14 @@ "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-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", @@ -703,8 +704,8 @@ "explainconflict": "Someone else has changed this page since you started editing it.\nThe upper text area contains the page text as it currently exists.\nYour changes are shown in the lower text area.\nYou will have to merge your changes into the existing text.\nOnly the text in the upper text area will be saved when you press \"$1\".", "yourtext": "Your text", "storedversion": "Stored revision", - "nonunicodebrowser": "Warning: Your browser is not Unicode compliant.\nA workaround is in place to allow you to safely edit pages: Non-ASCII characters will appear in the edit box as hexadecimal codes.", "editingold": "Warning: You are editing an out-of-date revision of this page.\nIf you save it, any changes made since this revision will be lost.", + "unicode-support-fail": "It appears that your browser does not support Unicode. It is required to edit pages, so your edit was not saved.", "yourdiff": "Differences", "copyrightwarning": "Please note that all contributions to {{SITENAME}} are considered to be released under the $2 (see $1 for details).\nIf you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
    \nYou are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource.\nDo not submit copyrighted work without permission!", "copyrightwarning2": "Please note that all contributions to {{SITENAME}} may be edited, altered, or removed by other contributors.\nIf you do not want your writing to be edited mercilessly, then do not submit it here.
    \nYou are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see $1 for details).\nDo not submit copyrighted work without permission!", @@ -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.", @@ -778,6 +779,7 @@ "parser-template-loop-warning": "Template loop detected: [[$1]]", "template-loop-category": "Pages with template loops", "template-loop-category-desc": "The page contains a template loop, ie. a template which calls itself recursively.", + "template-loop-warning": "Warning: This page calls [[:$1]] which causes a template loop (an infinite recursive call).", "parser-template-recursion-depth-warning": "Template recursion depth limit exceeded ($1)", "language-converter-depth-warning": "Language converter depth limit exceeded ($1)", "node-count-exceeded-category": "Pages where node count is exceeded", @@ -1021,7 +1023,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", @@ -1061,6 +1063,7 @@ "timezoneregion-indian": "Indian Ocean", "timezoneregion-pacific": "Pacific Ocean", "allowemail": "Enable email from other users", + "email-blacklist-label": "Prohibit these users from sending emails to me:", "prefs-searchoptions": "Search", "prefs-namespaces": "Namespaces", "default": "default", @@ -1104,6 +1107,7 @@ "prefs-editor": "Editor", "prefs-preview": "Preview", "prefs-advancedrc": "Advanced options", + "prefs-opt-out": "Opt out of improvements", "prefs-advancedrendering": "Advanced options", "prefs-advancedsearchoptions": "Advanced options", "prefs-advancedwatchlist": "Advanced options", @@ -1349,9 +1353,20 @@ "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", + "rcfilters-grouping-title": "Grouping", "rcfilters-activefilters": "Active filters", "rcfilters-advancedfilters": "Advanced filters", + "rcfilters-limit-title": "Changes to show", + "rcfilters-limit-shownum": "Show last {{PLURAL:$1|change|$1 changes}}", + "rcfilters-days-title": "Recent days", + "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.", @@ -1363,43 +1378,41 @@ "rcfilters-savedqueries-new-name-label": "Name", "rcfilters-savedqueries-new-name-placeholder": "Describe the purpose of the filter", "rcfilters-savedqueries-apply-label": "Create filter", + "rcfilters-savedqueries-apply-and-setdefault-label": "Create default filter", "rcfilters-savedqueries-cancel-label": "Cancel", "rcfilters-savedqueries-add-new-title": "Save current filter settings", "rcfilters-restore-default-filters": "Restore default filters", "rcfilters-clear-all-filters": "Clear all filters", + "rcfilters-show-new-changes": "View newest 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": "What's this?", - "rcfilters-filterlist-feedbacklink": "Provide feedback on the new (beta) filters", + "rcfilters-filterlist-whatsthis": "How do these work?", + "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-filtergroup-registration": "User registration", - "rcfilters-filter-registered-label": "Registered", - "rcfilters-filter-registered-description": "Logged-in editors.", - "rcfilters-filter-unregistered-label": "Unregistered", - "rcfilters-filter-unregistered-description": "Editors who aren’t logged in.", - "rcfilters-filter-unregistered-conflicts-user-experience-level": "This filter conflicts with the following Experience {{PLURAL:$2|filter|filters}}, which {{PLURAL:$2|finds|find}} only registered users: $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.", "rcfilters-filter-editsbyother-label": "Changes by others", "rcfilters-filter-editsbyother-description": "All changes except your own.", - "rcfilters-filtergroup-userExpLevel": "Experience level (for registered users only)", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Experience filters find only registered users, so this filter conflicts with the “Unregistered” filter.", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "The \"Unregistered\" filter conflicts with one or more Experience filters, which find registered users only. The conflicting filters are marked in the Active Filters area, above.", + "rcfilters-filtergroup-userExpLevel": "User registration and experience", + "rcfilters-filter-user-experience-level-registered-label": "Registered", + "rcfilters-filter-user-experience-level-registered-description": "Logged-in editors.", + "rcfilters-filter-user-experience-level-unregistered-label": "Unregistered", + "rcfilters-filter-user-experience-level-unregistered-description": "Editors who aren't logged-in.", "rcfilters-filter-user-experience-level-newcomer-label": "Newcomers", - "rcfilters-filter-user-experience-level-newcomer-description": "Fewer than 10 edits and 4 days of activity.", + "rcfilters-filter-user-experience-level-newcomer-description": "Registered editors with fewer than 10 edits and 4 days of activity.", "rcfilters-filter-user-experience-level-learner-label": "Learners", - "rcfilters-filter-user-experience-level-learner-description": "More experience than \"Newcomers\" but less than \"Experienced users\".", + "rcfilters-filter-user-experience-level-learner-description": "Registered editors whose experience falls between \"Newcomers\" and \"Experienced users.\"", "rcfilters-filter-user-experience-level-experienced-label": "Experienced users", - "rcfilters-filter-user-experience-level-experienced-description": "More than 30 days of activity and 500 edits.", + "rcfilters-filter-user-experience-level-experienced-description": "Registered editors with more than 500 edits and 30 days of activity.", "rcfilters-filtergroup-automated": "Automated contributions", "rcfilters-filter-bots-label": "Bot", "rcfilters-filter-bots-description": "Edits made by automated tools.", @@ -1422,6 +1435,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…", @@ -1434,20 +1452,30 @@ "rcfilters-hideminor-conflicts-typeofchange-global": "The \"Minor edits\" filter conflicts with one or more Type of change filters, because certain types of change cannot be designated as \"minor\". The conflicting filters are marked in the Active filters area, above.", "rcfilters-hideminor-conflicts-typeofchange": "Certain types of change cannot be designated as \"minor\", so this filter conflicts with the following Type of Change filters: $1", "rcfilters-typeofchange-conflicts-hideminor": "This Type of change filter conflicts with the \"Minor edits\" filter. Certain types of change cannot be designated as \"minor\".", - "rcfilters-filtergroup-lastRevision": "Last revision", - "rcfilters-filter-lastrevision-label": "Last revision", - "rcfilters-filter-lastrevision-description": "The most recent change to a page.", - "rcfilters-filter-previousrevision-label": "Earlier revisions", - "rcfilters-filter-previousrevision-description": "All changes that are not the most recent change to a page.", + "rcfilters-filtergroup-lastRevision": "Latest revisions", + "rcfilters-filter-lastrevision-label": "Latest revision", + "rcfilters-filter-lastrevision-description": "Only the most recent change to a page.", + "rcfilters-filter-previousrevision-label": "Not the latest revision", + "rcfilters-filter-previousrevision-description": "All changes that are not the \"latest revision\".", "rcfilters-filter-excluded": "Excluded", "rcfilters-tag-prefix-namespace": ":$1", "rcfilters-tag-prefix-namespace-inverted": ":not $1", "rcfilters-tag-prefix-tags": "#$1", + "rcfilters-exclude-button-off": "Exclude selected", + "rcfilters-exclude-button-on": "Excluding selected", + "rcfilters-view-advanced-filters-label": "Advanced filters", "rcfilters-view-tags": "Tagged edits", "rcfilters-view-namespaces-tooltip": "Filter results by namespace", "rcfilters-view-tags-tooltip": "Filter results using edit tags", "rcfilters-view-return-to-default-tooltip": "Return to main filter menu", "rcfilters-liveupdates-button": "Live updates", + "rcfilters-liveupdates-button-title-on": "Turn off live updates", + "rcfilters-liveupdates-button-title-off": "Display new changes as they happen", + "rcfilters-watchlist-markseen-button": "Mark all changes as seen", + "rcfilters-watchlist-edit-watchlist-button": "Edit your list of watched pages", + "rcfilters-watchlist-showupdated": "Changes to pages you haven't visited since the changes occurred are in bold, with solid markers.", + "rcfilters-preference-label": "Hide the improved version of Recent Changes", + "rcfilters-preference-help": "Rolls back the 2017 interface redesign and all tools added then and since.", "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", @@ -1507,6 +1535,7 @@ "uploadbtn": "Upload file", "reuploaddesc": "Cancel upload and return to the upload form", "upload-tryagain": "Submit modified file description", + "upload-tryagain-nostash": "Submit re-uploaded file and modified description", "uploadnologin": "Not logged in", "uploadnologintext": "Please $1 to upload files.", "upload_directory_missing": "The upload directory ($1) is missing and could not be created by the webserver.", @@ -1569,6 +1598,7 @@ "file-deleted-duplicate-notitle": "A file identical to this file has previously been deleted, and the title has been suppressed.\nYou should ask someone with the ability to view suppressed file data to review the situation before proceeding to re-upload it.", "uploadwarning": "Upload warning", "uploadwarning-text": "Please modify the file description below and try again.", + "uploadwarning-text-nostash": "Please re-upload the file, modify the description below and try again.", "savefile": "Save file", "uploadedimage": "uploaded \"[[$1]]\"", "overwroteimage": "uploaded a new version of \"[[$1]]\"", @@ -1734,7 +1764,7 @@ "listfiles_size": "Size", "listfiles_description": "Description", "listfiles_count": "Versions", - "listfiles-show-all": "Include old versions of images", + "listfiles-show-all": "Include old versions of files", "listfiles-latestversion": "Current version", "listfiles-latestversion-yes": "Yes", "listfiles-latestversion-no": "No", @@ -1847,6 +1877,8 @@ "pageswithprop-legend": "Pages with a page property", "pageswithprop-text": "This page lists pages that use a particular page property.", "pageswithprop-prop": "Property name:", + "pageswithprop-reverse": "Sort in reverse order", + "pageswithprop-sortbyvalue": "Sort by property value", "pageswithprop-submit": "Go", "pageswithprop-prophidden-long": "long text property value hidden ($1)", "pageswithprop-prophidden-binary": "binary property value hidden ($1)", @@ -2195,7 +2227,7 @@ "unwatchthispage": "Stop watching", "notanarticle": "Not a content page", "notvisiblerev": "The last revision by a different user has been deleted", - "watchlist-details": "{{PLURAL:$1|$1 page|$1 pages}} on your watchlist, not separately counting talk pages.", + "watchlist-details": "{{PLURAL:$1|$1 page is|$1 pages are}} on your Watchlist (plus talk pages).", "wlheader-enotif": "Email notification is enabled.", "wlheader-showupdated": "Pages that have been changed since you last visited them are shown in bold.", "wlnote": "Below {{PLURAL:$1|is the last change|are the last $1 changes}} in the last {{PLURAL:$2|hour|$2 hours}}, as of $3, $4.", @@ -2214,6 +2246,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", @@ -2230,6 +2264,7 @@ "enotif_lastdiff": "To view this change, see $1", "enotif_anon_editor": "anonymous user $1", "enotif_body": "Dear $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nEditor's summary: $PAGESUMMARY $PAGEMINOREDIT\n\nContact the editor:\nmail: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nThere will be no other notifications in case of further activity unless you visit this page while logged in. You could also reset the notification flags for all your watched pages on your watchlist.\n\nYour friendly {{SITENAME}} notification system\n\n--\nTo change your email notification settings, visit\n{{canonicalurl:{{#special:Preferences}}}}\n\nTo change your watchlist settings, visit\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nTo delete the page from your watchlist, visit\n$UNWATCHURL\n\nFeedback and further assistance:\n$HELPPAGE", + "enotif_minoredit": "This is a minor edit", "created": "created", "changed": "changed", "deletepage": "Delete page", @@ -2258,6 +2293,7 @@ "delete-warning-toobig": "This page has a large edit history, over $1 {{PLURAL:$1|revision|revisions}}.\nDeleting it may disrupt database operations of {{SITENAME}};\nproceed with caution.", "deleteprotected": "You cannot delete this page because it has been protected.", "deleting-backlinks-warning": "Warning: [[Special:WhatLinksHere/{{FULLPAGENAME}}|Other pages]] link to or transclude the page you are about to delete.", + "deleting-subpages-warning": "Warning: The page you are about to delete has [[Special:PrefixIndex/{{FULLPAGENAME}}/|{{PLURAL:$1|a subpage|$1 subpages|51=over 50 subpages}}]].", "rollback": "Roll back edits", "rollbacklink": "rollback", "rollbacklinkcount": "rollback $1 {{PLURAL:$1|edit|edits}}", @@ -2430,7 +2466,9 @@ "sp-contributions-explain": "", "sp-contributions-footer": "-", "sp-contributions-footer-anon": "-", + "sp-contributions-footer-anon-range": "-", "sp-contributions-footer-newbies": "-", + "sp-contributions-outofrange": "Unable to show any results. The requested IP range is larger than the CIDR limit of /$1.", "whatlinkshere": "What links here", "whatlinkshere-title": "Pages that link to \"$1\"", "whatlinkshere-summary": "", @@ -2729,7 +2767,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.", @@ -3776,7 +3814,8 @@ "specialpages": "Special pages", "specialpages-summary": "", "specialpages-note-top": "Legend", - "specialpages-note": "* Normal special pages.\n* Restricted special pages.", + "specialpages-note-restricted": "* Normal special pages.\n* Restricted special pages.", + "specialpages-note-cached": "-", "specialpages-group-maintenance": "Maintenance reports", "specialpages-group-other": "Other special pages", "specialpages-group-login": "Login / create account", @@ -3899,6 +3938,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)", @@ -4332,7 +4380,7 @@ "undelete-cantedit": "You cannot undelete this page as you are not allowed to edit this page.", "undelete-cantcreate": "You cannot undelete this page as there is no existing page with this name and you are not allowed to create this page.", "pagedata-title": "Page data", - "pagedata-text": "This page provides a data interface to pages. Please provide the page title in the URL, using subpage syntax.\n* Content negotiation applies based on you client's Accept header. This means that the page data will be provided in the format preferred by your client.", + "pagedata-text": "This page provides a data interface to pages. Please provide the page title in the URL, using subpage syntax.\n* Content negotiation applies based on your client's Accept header. This means that the page data will be provided in the format preferred by your client.", "pagedata-not-acceptable": "No matching format found. Supported MIME types: $1", "pagedata-bad-title": "Invalid title: $1." } diff --git a/languages/i18n/eo.json b/languages/i18n/eo.json index 87a00be079..092d1ecea6 100644 --- a/languages/i18n/eo.json +++ b/languages/i18n/eo.json @@ -1317,17 +1317,16 @@ "rcfilters-empty-filter": "Ekzistas neniuj aktivaj filtriloj. Ĉiuj kontribuaĵoj estas montritaj.", "rcfilters-filterlist-title": "Filtriloj", "rcfilters-filterlist-noresults": "Neniuj filtriloj troviĝis", - "rcfilters-filtergroup-registration": "Registrado de uzanto", - "rcfilters-filter-registered-label": "Registrita", - "rcfilters-filter-registered-description": "Ensalutitaj redaktantoj.", - "rcfilters-filter-unregistered-label": "Neregistrita", - "rcfilters-filter-unregistered-description": "Redaktantoj kiuj ne estas ensalutita.", "rcfilters-filtergroup-authorship": "Redakta aŭtoreco", "rcfilters-filter-editsbyself-label": "Viaj redaktoj", "rcfilters-filter-editsbyself-description": "Viaj redaktoj.", "rcfilters-filter-editsbyother-label": "Redaktoj de aliuloj", "rcfilters-filter-editsbyother-description": "Redaktoj kreitaj far aliaj uzantoj (krom vi).", "rcfilters-filtergroup-userExpLevel": "Spertonivelo (nur por registritaj uzantoj)", + "rcfilters-filter-user-experience-level-registered-label": "Registrita", + "rcfilters-filter-user-experience-level-registered-description": "Ensalutitaj redaktantoj.", + "rcfilters-filter-user-experience-level-unregistered-label": "Neregistrita", + "rcfilters-filter-user-experience-level-unregistered-description": "Redaktantoj kiuj ne estas ensalutita.", "rcfilters-filter-user-experience-level-newcomer-label": "Novuloj", "rcfilters-filter-user-experience-level-newcomer-description": "Malpli ol 10 redaktoj kaj 4 tagoj de aktiveco.", "rcfilters-filter-user-experience-level-learner-label": "Lernantoj", @@ -3348,7 +3347,6 @@ "fileduplicatesearch-noresults": "Neniu dosiero nomita \"$1\" troviĝis.", "specialpages": "Specialaj paĝoj", "specialpages-note-top": "Klarigo", - "specialpages-note": "* Normaj specialaj paĝoj.\n* Limigitaj specialaj paĝoj.", "specialpages-group-maintenance": "Raportoj pri prizorgado", "specialpages-group-other": "Aliaj specialaj paĝoj", "specialpages-group-login": "Ensaluti / registriĝi", @@ -3467,6 +3465,7 @@ "compare-invalid-title": "La titolo kiun vi enmetis estas malvalida.", "compare-title-not-exists": "La titolo kiun vi specifis ne ekzistas.", "compare-revision-not-exists": "La revizio kiun vi specifis ne ekzistas.", + "diff-form": "Malsamoj", "dberr-problems": "Bedaŭrinde, ĉi tiu retejo suferas pro teknikaj problemoj.", "dberr-again": "Bonvolu atendi kelkajn minutojn kaj reŝargi.", "dberr-info": "(Ne eblas konekti la datumbazon: $1)", diff --git a/languages/i18n/es.json b/languages/i18n/es.json index c151f52e74..fce6c6d800 100644 --- a/languages/i18n/es.json +++ b/languages/i18n/es.json @@ -161,7 +161,9 @@ "Javiersanp", "Josecurioso", "Jnistal12", - "Javier" + "Javier", + "Luisangelrg", + "Pierpao" ] }, "tog-underline": "Subrayar los enlaces:", @@ -174,12 +176,12 @@ "tog-numberheadings": "Numerar automáticamente los encabezados", "tog-showtoolbar": "Mostrar la barra de edición", "tog-editondblclick": "Editar páginas al hacer doble clic", - "tog-editsectiononrightclick": "Permitir las modificaciones por sección al hacer clic derecho en sus títulos", + "tog-editsectiononrightclick": "Permitir las modificaciones de sección al hacer clic derecho en sus títulos", "tog-watchcreations": "Añadir las páginas que cree y los archivos que suba a mi lista de seguimento", "tog-watchdefault": "Añadir las páginas y archivos que edite a mi lista de seguimiento", "tog-watchmoves": "Añadir las páginas y archivos que mueva a mi lista de seguimiento", "tog-watchdeletion": "Añadir las páginas y archivos que borre a mi lista de seguimiento", - "tog-watchuploads": "Agregar los archivos nuevos que suba a mi lista de seguimiento", + "tog-watchuploads": "Añadir los archivos nuevos que suba a mi lista de seguimiento", "tog-watchrollback": "Añadir las páginas donde haya realizado una reversión a mi lista de seguimiento", "tog-minordefault": "Marcar todas las ediciones como menores de manera predeterminada", "tog-previewontop": "Mostrar previsualización antes del cuadro de edición", @@ -191,13 +193,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": "Mostrar previsualizaciones 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", @@ -420,13 +423,13 @@ "thisisdeleted": "¿Ver o restaurar $1?", "viewdeleted": "¿Quieres ver $1?", "restorelink": "{{PLURAL:$1|una edición borrada|$1 ediciones borradas}}", - "feedlinks": "Canal:", + "feedlinks": "Suministro:", "feed-invalid": "El tipo de canal de suscripción no es correcto.", "feed-unavailable": "Los canales de sindicación no están disponibles", - "site-rss-feed": "Canal RSS de $1", - "site-atom-feed": "Canal Atom de $1", - "page-rss-feed": "Canal RSS «$1»", - "page-atom-feed": "Canal Atom de «$1»", + "site-rss-feed": "Suministro RSS de $1", + "site-atom-feed": "Suministro Atom de $1", + "page-rss-feed": "Suministro RSS de «$1»", + "page-atom-feed": "Suministro Atom de «$1»", "feed-atom": "Atom", "red-link-title": "$1 (la página no existe)", "sort-descending": "Orden descendente", @@ -762,7 +765,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.", @@ -820,7 +823,6 @@ "explainconflict": "Alguien ha realizado cambios en esta página desde que empezaste a editarla.\nEl cuadro de texto superior contiene el texto de la página tal como está guardado en este momento.\nTus cambios sobre la versión que editaste se muestran en el cuadro de texto inferior.\nSi quieres guardar tus cambios, has de trasladarlos al cuadro superior.\nAl pulsar «$1», se guardará solamente el texto del cuadro superior.", "yourtext": "Tu texto", "storedversion": "Versión guardada", - "nonunicodebrowser": "Advertencia: tu navegador no es compatible con los caracteres Unicode.\nSe ha activado un sistema de edición alternativo que te permitirá editar artículos con seguridad: los caracteres no pertenecientes al estándar ASCII aparecerán como códigos hexadecimales en el cuadro de edición.", "editingold": "Advertencia: estás editando sobre una revisión antigua de esta página.\nSi la guardas, se perderá cualquier otro cambio realizado desde esa revisión.", "yourdiff": "Diferencias", "copyrightwarning": "Ten en cuenta que todas las contribuciones a {{SITENAME}} se consideran publicadas bajo la $2 (véase $1 para más información). Si no deseas que las modifiquen sin limitaciones y las distribuyan libremente, no las publiques aquí.
    Al mismo tiempo, asumimos que eres el autor de lo que escribiste, o lo copiaste de una fuente en el dominio público o con licencia libre. ¡No uses textos con copyright sin permiso!", @@ -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,9 +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-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 {{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.", @@ -1446,43 +1459,41 @@ "rcfilters-savedqueries-new-name-label": "Nombre", "rcfilters-savedqueries-new-name-placeholder": "Describe el propósito del filtro", "rcfilters-savedqueries-apply-label": "Crear filtro", + "rcfilters-savedqueries-apply-and-setdefault-label": "Crear filtro predeterminado", "rcfilters-savedqueries-cancel-label": "Cancelar", "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.", "rcfilters-filterlist-title": "Filtros", - "rcfilters-filterlist-whatsthis": "¿Qué es esto?", - "rcfilters-filterlist-feedbacklink": "Comparte tus comentarios sobre los filtros (beta) nuevos", + "rcfilters-filterlist-whatsthis": "¿Cómo funcionan?", + "rcfilters-filterlist-feedbacklink": "Comparte tus comentarios sobre estas (nuevas) herramientas de filtrado", "rcfilters-highlightbutton-title": "Resaltar los resultados", "rcfilters-highlightmenu-title": "Selecciona un color", "rcfilters-highlightmenu-help": "Selecciona un color para resaltar esta propiedad", "rcfilters-filterlist-noresults": "No se encontraron filtros", "rcfilters-noresults-conflict": "No se encontraron resultados porque los criterios de búsqueda están en conflicto.", "rcfilters-state-message-subset": "Este filtro no tiene ningún efecto debido a que sus resultados se incluyen con los de los siguientes: {{PLURAL:$2|filtro|filtros}} (intente destacarlo para distinguirlo): $1", - "rcfilters-state-message-fullcoverage": "Seleccionar todos los filtros de un grupo es lo mismo que seleccionar ninguno, por lo que este filtro no tiene efecto. El grupo incluye: $1", - "rcfilters-filtergroup-registration": "Registro de usuario", - "rcfilters-filter-registered-label": "Registrados", - "rcfilters-filter-registered-description": "Editores conectados.", - "rcfilters-filter-unregistered-label": "No registrados", - "rcfilters-filter-unregistered-description": "Editores no conectados.", - "rcfilters-filter-unregistered-conflicts-user-experience-level": "Este filtro está en conflicto con {{PLURAL:$2|el siguiente filtro|los siguientes filtros}} de nivel de experiencia, que solo {{PLURAL:$2|encuentra|encuentran}} usuarios registrados: $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-user-experience-level-conflicts-unregistered": "Los filtros de nivel de experiencia sólo encuentran usuarios registrados, por lo que este filtro entra en conflicto con el filtro \"No registrado\".", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "El filtro \"No registrado\" está en conflicto con uno o más filtros de nivel de Experiencia, que solo encuentran usuarios registrados. Los filtros en conflicto están marcados en el área Filtros Activos, anterior.", + "rcfilters-filtergroup-userExpLevel": "Registro de usuario y experiencia", + "rcfilters-filter-user-experience-level-registered-label": "Registrados", + "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.", @@ -1505,6 +1516,11 @@ "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-unseen-description": "Cambios en páginas que no has visitado desde que esos cambios tuvieron lugar.", + "rcfilters-filter-watchlistactivity-seen-label": "Cambios vistos", + "rcfilters-filter-watchlistactivity-seen-description": "Cambios en páginas que has visitado desde que esos cambios tuvieron lugar.", "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...", @@ -1517,17 +1533,26 @@ "rcfilters-hideminor-conflicts-typeofchange-global": "El filtro \"Ediciones menores\" está en conflicto con uno o más Tipos de filtros de Cambio, ya que ciertos tipos de cambio no pueden ser designados como \"menores\". Los filtros en conflicto están marcados en el área Filtros activos, anterior.", "rcfilters-hideminor-conflicts-typeofchange": "Ciertos tipos de cambio no pueden ser designados como \"menores\", por lo que este filtro entra en conflicto con los siguientes Tipos de filtros de Cambio: $1", "rcfilters-typeofchange-conflicts-hideminor": "Este filtro «Tipo de cambio» entra en conflicto con el filtro «Ediciones menores». Hay ciertos tipos de cambios que no pueden denominarse «menores».", - "rcfilters-filtergroup-lastRevision": "Revisión actual", - "rcfilters-filter-lastrevision-label": "Revisión actual", - "rcfilters-filter-lastrevision-description": "El cambio más reciente a una página.", - "rcfilters-filter-previousrevision-label": "Revisiones anteriores", - "rcfilters-filter-previousrevision-description": "Todos los cambios que no son los más recientes cambian a una página.", + "rcfilters-filtergroup-lastRevision": "Últimas revisiones", + "rcfilters-filter-lastrevision-label": "Última revisión", + "rcfilters-filter-lastrevision-description": "Solo el cambio más reciente a una página.", + "rcfilters-filter-previousrevision-label": "No la última revisión", + "rcfilters-filter-previousrevision-description": "Todos los cambios que no son la \"última revisión\".", "rcfilters-filter-excluded": "Excluido", "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", + "rcfilters-watchlist-edit-watchlist-button": "Edita tu lista de seguimiento", + "rcfilters-watchlist-showupdated": "Los cambios hechos a páginas que no has visitado desde que se efectuaron aparecen en negrita, acompañados de marcadores sólidos.", "rcnotefrom": "Debajo {{PLURAL:$5|aparece el cambio|aparecen los cambios}} desde $3, $4 (se muestran hasta $1).", "rclistfromreset": "Restablecer selección de fecha", "rclistfrom": "Mostrar cambios nuevos desde las $2 del $3", @@ -1908,6 +1933,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)", @@ -1970,9 +1997,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", @@ -2209,7 +2236,7 @@ "unwatchthispage": "Dejar de vigilar", "notanarticle": "No es una página de contenido", "notvisiblerev": "La última revisión de un usuario diferente ha sido borrada", - "watchlist-details": "{{PLURAL:$1|$1 página|$1 páginas}} en tu lista de seguimiento, sin contar las de discusión.", + "watchlist-details": "Hay {{PLURAL:$1|$1 página|$1 páginas}} en tu lista de seguimiento (más las páginas de discusión).", "wlheader-enotif": "La notificación por correo está activada.", "wlheader-showupdated": "Las páginas modificadas desde tu última visita aparecen en negrita.", "wlnote": "A continuación {{PLURAL:$1|se muestra el último cambio|se muestran los últimos $1 cambios}} en {{PLURAL:$2|la última hora|las últimas $2 horas}} a fecha de $4 $3.", @@ -2244,6 +2271,7 @@ "enotif_lastdiff": "Consulta $1 para ver este cambio", "enotif_anon_editor": "usuario anónimo $1", "enotif_body": "Hola, $WATCHINGUSERNAME:\n\n$PAGEINTRO $NEWPAGE\n\nResumen del editor: $PAGESUMMARY $PAGEMINOREDIT\n\nContacta al editor:\ncorreo: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nNo enviaremos más notificaciones si ocurre más actividad, a menos que visites esta página con la sesión iniciada. También puedes restablecer los estados de notificación para todas las páginas en tu lista de seguimiento.\n\nAtentamente, el sistema de notificaciones de {{SITENAME}}\n\n--\nPara cambiar tus ajustes de notificación por correo, visita\n{{canonicalurl:{{#special:Preferences}}}}\n\nPara cambiar los ajustes de tu lista de seguimiento, visita\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nPara quitar la página de tu lista de seguimiento, visita\n$UNWATCHURL\n\nPara ayuda y comentarios:\n$HELPPAGE", + "enotif_minoredit": "Esta es una edición menor", "created": "creada", "changed": "modificada", "deletepage": "Borrar página", @@ -2271,7 +2299,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}}", @@ -2296,7 +2325,7 @@ "changecontentmodel-submit": "Cambiar", "changecontentmodel-success-title": "Se cambió el modelo de contenido", "changecontentmodel-success-text": "Se ha cambiado el tipo de contenido de [[:$1]].", - "changecontentmodel-cannot-convert": "El contenido de [[:$1]] no se puede convertir a un tipo de $2.", + "changecontentmodel-cannot-convert": "No se puede convertir el contenido de [[:$1]] en un tipo de $2.", "changecontentmodel-nodirectediting": "El modelo de contenido $1 no admite la edición directa", "changecontentmodel-emptymodels-title": "No hay modelos de contenido disponibles", "changecontentmodel-emptymodels-text": "El contenido de [[:$1]] no se puede convertir a ningún tipo.", @@ -2521,7 +2550,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", @@ -2725,7 +2754,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.", @@ -3170,7 +3199,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", @@ -3480,7 +3509,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", @@ -3508,7 +3537,7 @@ "fileduplicatesearch-noresults": "Ningún archivo con el nombre «$1» encontrado.", "specialpages": "Páginas especiales", "specialpages-note-top": "Leyenda", - "specialpages-note": "* Páginas especiales normales.\n* Páginas especiales restringidas.", + "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", @@ -3627,6 +3656,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)", @@ -3892,7 +3923,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 b3bed3d6f0..da6b360066 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", @@ -522,9 +523,34 @@ "changepassword-throttled": "Oled hiljuti proovinud liiga palju kordi sisse logida.\nPalun oota $1, enne kui uuesti proovid.", "botpasswords": "Robotiparoolid", "botpasswords-summary": "Robotiparoolid võimaldavad API-põhist juurdepääsu kasutajakontole, ilma kasutamata konto peamisi autentimisandmeid. Kui konto on sisse logitud robotiparooliga, võivad saadaolevad kasutajaõigused olla piiratud.\n\nKui sa ei tea, miks sul on vaja robotiparooli, siis on parem seda mitte kasutada. Mitte keegi ei peaks paluma sul robotiparooli genereerida ja seda talle edasi anda.", + "botpasswords-disabled": "Robotiparoolid on keelatud.", + "botpasswords-no-central-id": "Et robotiparoole kasutada, pead olema ühendkontoga sisse logitud.", + "botpasswords-existing": "Olemasolevad robotiparoolid", "botpasswords-createnew": "Uue robotiparooli loomine", - "botpasswords-label-appid": "Roboti nimi:", + "botpasswords-editexisting": "Olemasoleva robotiparooli muutmine", + "botpasswords-label-appid": "Robotinimi:", "botpasswords-label-create": "Loo", + "botpasswords-label-update": "Uuenda", + "botpasswords-label-cancel": "Loobu", + "botpasswords-label-delete": "Kustuta", + "botpasswords-label-resetpassword": "Lähtesta parool", + "botpasswords-label-grants": "Rakendatavad volitused:", + "botpasswords-help-grants": "Volitused võimaldavad juurdepääsu õigustele, mis su kontol juba on. Siin volituse lubamine ei võimalda juurdepääsu õigustele, mida su kontol muidu pole. Lisateavet leiad [[Special:ListGrants|volituste loetelust]].", + "botpasswords-label-grants-column": "Volitatud", + "botpasswords-bad-appid": "Robotinimi \"$1\" ei sobi.", + "botpasswords-insert-failed": "Ei õnnestunud lisada robotinime \"$1\". Kas see on juba lisatud?", + "botpasswords-update-failed": "Ei õnnestunud uuendada robotinime \"$1\". Kas see on kustutatud?", + "botpasswords-created-title": "Robotiparool loodud", + "botpasswords-created-body": "Robotiparool kasutaja \"$2\" robotinimele \"$1\" on loodud.", + "botpasswords-updated-title": "Robotiparool uuendatud", + "botpasswords-updated-body": "Robotiparool kasutaja \"$2\" robotinimele \"$1\" on uuendatud.", + "botpasswords-deleted-title": "Robotiparool kustutatud", + "botpasswords-deleted-body": "Robotiparool kasutaja \"$2\" robotinimele \"$1\" on kustutatud.", + "botpasswords-newpassword": "Uus parool, millega kontole $1 sisse logida, on $2. Palun kirjuta see edaspidiseks üles.
    (Mõni vana robot nõuab, et sisselogimisnimi langeb kokku edaspidise kasutajanimega. Sellisel juhul saad kasutada nime $3 ja parooli $4.)", + "botpasswords-no-provider": "BotPasswordsSessionProvider pole saadaval.", + "botpasswords-restriction-failed": "Robotiparooli piirangud takistavad sisselogimist.", + "botpasswords-invalid-name": "Määratud kasutajanimi ei sisalda robotiparooli eraldajat (\"$1\").", + "botpasswords-not-exist": "Kasutaja \"$1\" robotinimele \"$2\" vastav robotiparool puudub.", "resetpass_forbidden": "Paroole ei saa muuta", "resetpass_forbidden-reason": "Paroole ei saa muuta: $1", "resetpass-no-info": "Pead olema sisselogitud, et sellele lehele pääseda.", @@ -552,6 +578,8 @@ "passwordreset-emailelement": "Kasutajanimi: \n$1\n\nAjutine parool: \n$2", "passwordreset-emailsentemail": "Kui oled sidunud konto selle e-posti aadressiga, siis saadetakse sulle parooli lähtestamise e-kiri.", "passwordreset-emailsentusername": "Parooli lähtestamise e-kiri saadetakse, kui olemas on kontoga seotud e-posti aadress.", + "passwordreset-nocaller": "Kutse saatja peab olema ära toodud", + "passwordreset-nosuchcaller": "Kutse saatjat pole olemas: $1", "passwordreset-ignored": "Parooli lähtestamine jäi rahuldamata. Võimalik, et ühtegi pakkujat polnud häälestatud.", "passwordreset-invalidemail": "Vigane e-posti aadress", "passwordreset-nodata": "Ära toomata jäid nii kasutajanimi kui ka e-posti aadress", @@ -689,8 +717,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 +986,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", @@ -1272,8 +1300,20 @@ "recentchanges-legend-heading": "Seletus:", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (vaata ka [[Special:NewPages|uute lehekülgede loendit]])", "recentchanges-submit": "Näita", + "rcfilters-tag-remove": "Eemalda \"$1\"", + "rcfilters-legend-heading": "Lühendite loetelu:", + "rcfilters-other-review-tools": "Muud ülevaatusriistad", + "rcfilters-group-results-by-page": "Rühmita tulemused lehekülje kaupa", + "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 {{PLURAL:$1|muudatust|$1 muudatust}}", + "rcfilters-days-title": "Viimased päevad", + "rcfilters-hours-title": "Viimased tunnid", + "rcfilters-days-show-days": "$1 {{PLURAL:$1|päev|päeva}}", + "rcfilters-days-show-hours": "$1 {{PLURAL:$1|tund|tundi}}", + "rcfilters-highlighted-filters-list": "Esile tõstetud: $1", "rcfilters-quickfilters": "Salvestatud filtrid", "rcfilters-quickfilters-placeholder-title": "Linke pole veel salvestatud", "rcfilters-quickfilters-placeholder-description": "Et filtri sätted salvestada ja et neid hiljem uuesti kasutada, klõpsa alloleva aktiivsete filtrite loendi juures järjehoidjaikooni.", @@ -1285,43 +1325,41 @@ "rcfilters-savedqueries-new-name-label": "Nimi", "rcfilters-savedqueries-new-name-placeholder": "Kirjelda filtri otstarvet", "rcfilters-savedqueries-apply-label": "Koosta filter", + "rcfilters-savedqueries-apply-and-setdefault-label": "Koosta vaikefilter", "rcfilters-savedqueries-cancel-label": "Loobu", "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.", "rcfilters-filterlist-title": "Filtrid", - "rcfilters-filterlist-whatsthis": "Mis see on?", - "rcfilters-filterlist-feedbacklink": "Anna uute filtrite beetaversiooni kohta tagasisidet", + "rcfilters-filterlist-whatsthis": "Kuidas see töötab?", + "rcfilters-filterlist-feedbacklink": "Ütle meile, mida arvad neist uutest filtririistadest.", "rcfilters-highlightbutton-title": "Tulemuste esiletõst", "rcfilters-highlightmenu-title": "Vali värvus", "rcfilters-highlightmenu-help": "Vali värvus, et see atribuut esile tõsta", "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-filtergroup-registration": "Registreerumine", - "rcfilters-filter-registered-label": "Registreerunud", - "rcfilters-filter-registered-description": "Sisse logitud kasutajad.", - "rcfilters-filter-unregistered-label": "Registreerumata", - "rcfilters-filter-unregistered-description": "Kasutajad, kes pole sisse logitud.", - "rcfilters-filter-unregistered-conflicts-user-experience-level": "See filter on konfliktis {{PLURAL:$2|järgmise kogemustaseme filtriga|järgmiste kogemustasemete filtritega}}, mis {{PLURAL:$2|leiab|leiavad}} ainult registreerunud kasutajaid: $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.", "rcfilters-filter-editsbyother-label": "Teiste muudatused", "rcfilters-filter-editsbyother-description": "Kõik muudatused peale sinu enda omade.", - "rcfilters-filtergroup-userExpLevel": "Kogemustase (ainult registreerunud kasutajate puhul)", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Kogemustaseme filtrid leiavad ainult registreerunud kasutajaid, mistõttu on see filter konfliktis filtriga \"{{int:rcfilters-filter-unregistered-label}}\".", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Filter \"{{int:rcfilters-filter-unregistered-label}}\" on konfliktis vähemalt ühe kogemustaseme filtriga, mis leiab ainult registreerunud kasutajaid. Konfliktsed filtrid on ära märgitud ülal aktiivsete filtrite loendis.", + "rcfilters-filtergroup-userExpLevel": "Registreerumine ja kasutaja kogemus", + "rcfilters-filter-user-experience-level-registered-label": "Registreerunud", + "rcfilters-filter-user-experience-level-registered-description": "Sisse logitud kasutajad.", + "rcfilters-filter-user-experience-level-unregistered-label": "Registreerumata", + "rcfilters-filter-user-experience-level-unregistered-description": "Kasutajad, kes pole sisse logitud.", "rcfilters-filter-user-experience-level-newcomer-label": "Äsjaalustanud", - "rcfilters-filter-user-experience-level-newcomer-description": "Alla 10 muudatuse või tegutsenud alla 4 päeva.", + "rcfilters-filter-user-experience-level-newcomer-description": "Registreerunud toimetajad, teinud alla 10 muudatuse või tegutsenud alla 4 päeva.", "rcfilters-filter-user-experience-level-learner-label": "Tutvujad", - "rcfilters-filter-user-experience-level-learner-description": "Rohkem kogemust kui äsjaalustanutel, aga vähem kui kogenud kasutajatel.", + "rcfilters-filter-user-experience-level-learner-description": "Registreerunud toimetajad, kellel on rohkem kogemust kui äsjaalustanutel, aga vähem kui kogenud kasutajatel.", "rcfilters-filter-user-experience-level-experienced-label": "Kogenud kasutajad", - "rcfilters-filter-user-experience-level-experienced-description": "Üle 500 muudatuse ja tegutsenud üle 30 päeva.", + "rcfilters-filter-user-experience-level-experienced-description": "Registreerunud toimetajad, teinud üle 500 muudatuse ja tegutsenud üle 30 päeva.", "rcfilters-filtergroup-automated": "Automaatne kaastöö", "rcfilters-filter-bots-label": "Robot", "rcfilters-filter-bots-description": "Automaattööriistade tehtud muudatused.", @@ -1344,6 +1382,11 @@ "rcfilters-filter-watchlist-watchednew-description": "Muudatused jälgimisloendi lehekülgedel, mida sa pole pärast muudatuse tegemist külastanud.", "rcfilters-filter-watchlist-notwatched-label": "Pole jälgimisloendis", "rcfilters-filter-watchlist-notwatched-description": "Kõik muu peale sinu jälgimisloendi lehekülgedel tehtud muudatuste.", + "rcfilters-filtergroup-watchlistactivity": "Jälgimisloendi tegevused", + "rcfilters-filter-watchlistactivity-unseen-label": "Nägemata muudatused", + "rcfilters-filter-watchlistactivity-unseen-description": "Muudatused lehekülgedel, mida sa pole pärast muudatuste tegemist külastanud.", + "rcfilters-filter-watchlistactivity-seen-label": "Nähtud muudatused", + "rcfilters-filter-watchlistactivity-seen-description": "Muudatused lehekülgedel, mida oled pärast muudatuste tegemist külastanud.", "rcfilters-filtergroup-changetype": "Muudatuse tüüp", "rcfilters-filter-pageedits-label": "Lehekülgede muutmine", "rcfilters-filter-pageedits-description": "Näiteks viki sisu, arutelude ja kategooriate kirjelduste muutmine.", @@ -1356,14 +1399,26 @@ "rcfilters-hideminor-conflicts-typeofchange-global": "Filter \"{{int:rcfilters-filter-minor-label}}\" on konfliktis vähemalt ühe muudatuste tüübifiltriga, sest teatud tüüpi muudatusi ei saa märkida pisimuudatusteks. Konfliktsed filtrid on ära märgitud ülal aktiivsete filtrite loendis.", "rcfilters-hideminor-conflicts-typeofchange": "Teatud tüüpi muudatusi ei saa märkida pisimuudatusteks. Seetõttu on see filter konfliktis järgmiste tüübifiltritega: $1", "rcfilters-typeofchange-conflicts-hideminor": "See muudatuste tüübifilter on konfliktis filtriga \"{{int:rcfilters-filter-minor-label}}\". Teatud tüüpi muudatusi ei saa märkida pisimuudatusteks.", - "rcfilters-filtergroup-lastRevision": "Viimane redaktsioon", + "rcfilters-filtergroup-lastRevision": "Viimased redaktsioonid", "rcfilters-filter-lastrevision-label": "Viimane redaktsioon", - "rcfilters-filter-lastrevision-description": "Muudatus, mis on leheküljel kõige viimane.", - "rcfilters-filter-previousrevision-label": "Varasemad redaktsioonid", - "rcfilters-filter-previousrevision-description": "Kõik muudatused, mis pole leheküljel kõige viimased.", - "rcfilters-filter-excluded": "Välja arvatud", + "rcfilters-filter-lastrevision-description": "Ainult muudatus, mis on leheküljel kõige viimane.", + "rcfilters-filter-previousrevision-label": "Pole viimane redaktsioon", + "rcfilters-filter-previousrevision-description": "Kõik muudatused, mis pole kõige viimased.", + "rcfilters-filter-excluded": "Välja jäetud", "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", + "rcfilters-watchlist-markseen-button": "Märgi kõik muudatused nähtuks", + "rcfilters-watchlist-edit-watchlist-button": "Muuda jälgimisloendit", + "rcfilters-watchlist-showupdated": "Muudatused lehekülgedel, mida sa pole pärast muudatuste tegemist külastanud, on rasvases kirjas ja tähistatud täidetud punktiga.", "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", @@ -1744,6 +1799,8 @@ "pageswithprop-legend": "Leheatribuudiga leheküljed", "pageswithprop-text": "Sellel leheküljel on loetletud mõnd leheatribuuti kasutavad leheküljed.", "pageswithprop-prop": "Atribuudi nimi:", + "pageswithprop-reverse": "Kasuta pöördjärjestust", + "pageswithprop-sortbyvalue": "Järjesta atribuudi väärtuse järgi", "pageswithprop-submit": "Mine", "pageswithprop-prophidden-long": "pika tekstiatribuudi väärtus peidetud ($1)", "pageswithprop-prophidden-binary": "kahendatribuudi väärtus peidetud ($1)", @@ -2045,6 +2102,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", @@ -2073,6 +2131,7 @@ "delete-warning-toobig": "See lehekülg on pika redigeerimislooga – üle {{PLURAL:$1|ühe muudatuse|$1 muudatuse}}.\nEttevaatust, selle kustutamine võib esile kutsuda häireid {{GRAMMAR:genitive|{{SITENAME}}}} andmebaasi töös.", "deleteprotected": "Seda lehekülge ei saa kustutada, sest see on kaitstud.", "deleting-backlinks-warning": "Hoiatus: [[Special:WhatLinksHere/{{FULLPAGENAME}}|Teised leheküljed]] viitavad leheküljele, mida oled kustutamas, või see lehekülg on kasutuses mallina.", + "deleting-subpages-warning": "Hoiatus: Oled kustutamas lehekülge, millel on [[Special:PrefixIndex/{{FULLPAGENAME}}/|{{PLURAL:$1|alamlehekülg|$1 alamlehekülge|51=üle 50 alamlehekülje}}]].", "rollback": "Tühista muudatused", "rollbacklink": "tühista", "rollbacklinkcount": "tühista {{PLURAL:$1|üks muudatus|$1 muudatust}}", @@ -2191,6 +2250,7 @@ "undelete-search-title": "Kustutatud lehekülgede otsimine", "undelete-search-box": "Kustutatud lehekülgede otsimine", "undelete-search-prefix": "Näita lehekülgi, mille pealkiri algab nii:", + "undelete-search-full": "Näita leheküljepealkirju, milles sisaldub:", "undelete-search-submit": "Otsi", "undelete-no-results": "Kustutatud lehekülgede arhiivist sellist lehekülge ei leidunud.", "undelete-filename-mismatch": "Failiversiooni ajatempliga $1 ei saa taastada, sest failinimed ei klapi.", @@ -2237,6 +2297,7 @@ "sp-contributions-newonly": "Näita ainult uute lehekülgedega alustamist", "sp-contributions-hideminor": "Peida pisimuudatused", "sp-contributions-submit": "Otsi", + "sp-contributions-outofrange": "Ei õnnestu näidata ühtegi tulemust. Päritud IP-aadressivahemik on suurem kui CIDR-vahemiku piirang /$1.", "whatlinkshere": "Lingid siia", "whatlinkshere-title": "Leheküljed, mis viitavad lehele \"$1\"", "whatlinkshere-page": "Lehekülg:", @@ -2553,6 +2614,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", @@ -3312,7 +3374,7 @@ "fileduplicatesearch-noresults": "Faili nimega \"$1\" ei leidu.", "specialpages": "Erileheküljed", "specialpages-note-top": "Seletus", - "specialpages-note": "* Harilikud erileheküljed.\n* Piiranguga erileheküljed.", + "specialpages-note-restricted": "* Harilikud erileheküljed.\n* Piiranguga erileheküljed.", "specialpages-group-maintenance": "Hooldusaruanded", "specialpages-group-other": "Teised erileheküljed", "specialpages-group-login": "Sisselogimine ja konto loomine", @@ -3431,6 +3493,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)", @@ -3805,14 +3874,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.", @@ -3821,9 +3901,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 9dd6be4c2b..81e8d193d1 100644 --- a/languages/i18n/eu.json +++ b/languages/i18n/eu.json @@ -60,7 +60,7 @@ "tog-shownumberswatching": "Ikusten duten erabiltzaile kopurua erakutsi", "tog-oldsig": "Zure egungo sinadura:", "tog-fancysig": "Sinadura wikitestu gisa tratatu (lotura automatikorik gabe)", - "tog-uselivepreview": "Zuzeneko aurrebista erabili", + "tog-uselivepreview": "Aurrekoa erakusten du orria berriro kargatu gabe", "tog-forceeditsummary": "Aldaketaren laburpena zuri uzterakoan ohartarazi", "tog-watchlisthideown": "Segimendu zerrendan nire aldaketak ezkutatu", "tog-watchlisthidebots": "Segimendu zerrendan bot-en aldaketak ezkutatu", @@ -182,7 +182,7 @@ "navigation-heading": "Nabigazio menua", "errorpagetitle": "Errorea", "returnto": "$1(e)ra itzuli.", - "tagline": "{{SITENAME}}(e)tik", + "tagline": "{{SITENAME}}tik", "help": "Laguntza", "search": "Bilatu", "searchbutton": "Bilatu", @@ -350,6 +350,7 @@ "title-invalid-interwiki": "Eskatutako orriaren tituluak bertan erabili ezin den interwiki linka darama.", "title-invalid-talk-namespace": "Eskatutako orriaren izenburuak agian existitzen ez den eztabaida-orri bati egiten dio erreferentzia.", "title-invalid-characters": "Eskatutako orriaren izenburuak baliagarri ez diren karaktereak ditu: \"$1\".", + "title-invalid-leading-colon": "Eskatutako orriaren izenburua puntuazio baliogabea dauka hasieran.", "perfcached": "Hurrengo datuak katxean gordeta daude eta litekeena da guztiz eguneratuta ez egotea. Gehienez {{PLURAL:$1|emaitza 1 dago|$1 emaitza daude}} eskuragarri katxean.", "perfcachedts": "Hurrengo datuak katxean daude, $1 eguneratu zen azkenekoz. {{PLURAL:$4|emaitza 1 dago|$4 emaitza daude}} eskuragarri katxean.", "querypage-no-updates": "Orrialde honen berritzeak ez dira baimentzen. Hemen dagoen data ez da zuzenean berrituko.", @@ -487,6 +488,7 @@ "createaccount-text": "Norbaitek zure e-postarekin kontu bat sortu du {{SITENAME}}(e)n ($4) \"$2\" izenarekin eta \"$3\" pasahitzarekin.\nOrain bertan sar zaitezke eta zure pasahitza aldatu.\n\nKontu honen sorrera akats bat dela uste baduzu mezu honi ez diozu zertan jaramonik egin.", "login-throttled": "Saioa hasteko saiakera gehiegi egin berri dituzu.\nBerriro saiatu aurretik $1 itxoin, mesedez.", "login-abort-generic": "Zure sarrerak akatsa izan du - Abortatua", + "login-migrated-generic": "Zure kontua migratu da, eta zure erabiltzaile-izena ez dago jadanik wiki honetan.", "loginlanguagelabel": "Hizkuntza: $1", "suspicious-userlogout": "Saioa amaitzeko egin duzun eskaria ukatu da. Izan ere, ematen du eskari hori gaizki dabilen nabigatzaile edo cache proxy batek bidali duela.", "createacct-another-realname-tip": "Benetako izena hautazkoa da.\nEmatea erabakitzen baduzu hori erabiliko da lanaren atribuzioa egiterako garaian.", @@ -527,6 +529,7 @@ "botpasswords-created-title": "Botaren pasahitza sortu da", "botpasswords-updated-title": "Botaren pasahitza eguneratu da", "botpasswords-deleted-title": "Botaren pasahitza ezabatu da", + "botpasswords-deleted-body": "$2 erabiltzailearen $1 errobot izenak duen errobot pasahitza ezabatua izan da.", "botpasswords-no-provider": "BotPasswordsSessionProvider ez dago eskuragarri.", "botpasswords-restriction-failed": "Errobot pasahitza murrizketek logina saihesten dute.", "resetpass_forbidden": "Ezin dira pasahitzak aldatu", @@ -653,11 +656,11 @@ "explainconflict": "Zu orrialdea aldatzen hasi ondoren beste norbaitek ere aldaketak egin ditu.\nGoiko testu koadroan ikus daiteke orrialdeak uneotan duen edukia.\nZure aldaketak beheko testu koadroan ikus daitezke.\nZure testua dagoenarekin elkartu beharko duzu.\nOrrialdea gordetzeko erabakitzen duzun unean goiko koadroko edukia '''bakarrik''' gordeko da.", "yourtext": "Zure testua", "storedversion": "Gordetako bertsioa", - "nonunicodebrowser": "'''OHARRA: Zure nabigatzailea ez dator Unicode arauarekin bat. Artikuluak modu seguruan aldatu ahal izateko beste sistema bat gaitu da: ASCII ez diren karaktereak kode hamaseitar bezala agertuko dira aldaketa koadroan.'''", "editingold": "'''KONTUZ: Artikulu honen bertsio zahar bat aldatzen ari zara. Gorde egiten baduzu, azkenengo aldaketa baino lehenagoko aldakuntzak, ezabatuak izango dira.'''", "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:", @@ -679,7 +682,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.", @@ -695,7 +698,9 @@ "content-not-allowed-here": "\"$1\" edukia ez dago baimendua [[$2]] orrialdean", "editwarning-warning": "Orri honetatik irteten bazara, egindako aldaketak galdu egingo dira, beharbada.\nSaioa hasi baduzu, mezu hau kendu dezakezu zure hobespenen orriko «{{int:prefs-editing}}» atalean.", "editpage-invalidcontentmodel-title": "Eduki eredua ez da onartzen.", + "editpage-invalidcontentmodel-text": "$1 eduki eredua ezin da erabili.", "editpage-notsupportedcontentformat-title": "Eduki formatu hori ez da onartzen", + "editpage-notsupportedcontentformat-text": "$2 eduki ereduak ezin da erabili $1 eduki formatuarekin.", "content-model-wikitext": "wikitestua", "content-model-text": "testu laua", "content-model-javascript": "JavaScript", @@ -715,6 +720,7 @@ "node-count-exceeded-category": "Nodo-zenbaketa gainditu den orrialdeak", "node-count-exceeded-warning": "Orriak nodo-kopuruaren muga gainditu du", "expansion-depth-exceeded-category": "Orrialdearen espantsio sakonera gainditu da", + "expansion-depth-exceeded-category-desc": "Orriak zabalkunde sakonera maximoa gainditzen du.", "expansion-depth-exceeded-warning": "Espantsio sakonera gainditu duten orrialdeak", "parser-unstrip-loop-warning": "Loop unstrip bat aurkitu da", "parser-unstrip-recursion-limit": "Unstrip errekurtsio limitea gainditu da ($1)", @@ -722,6 +728,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''", @@ -849,6 +856,7 @@ "editundo": "desegin", "diff-empty": "(Ez dago alderik)", "diff-multi-sameuser": "(Erabiltzaile berdinaren {{PLURAL:$1|erdiko ekarpen bat ez da|$1 erdiko ekarpen ez dira}} erakusten)", + "diff-multi-otherusers": "({{PLURAL:$1|Tarteko berrikusketa bat|$1 tarteko berrikusketak}} {{PLURAL:$2|beste erabiltzaile bat|$2 erabiltzaileak}} egina ez da erakusten)", "searchresults": "Bilaketaren emaitzak", "searchresults-title": "«$1» bilaketaren emaitzak", "titlematches": "Emaitzak artikuluen izenburuetan", @@ -970,10 +978,12 @@ "youremail": "E-posta:", "username": "{{GENDER:$1|Erabiltzaile izena}}:", "prefs-memberingroups": "{{PLURAL:$1|Taldeko|taldeetako}} {{GENDER:$2|kidea}}:", + "group-membership-link-with-expiry": "$1 ($2 arte)", "prefs-registration": "Erregistratzeko unea:", "yourrealname": "Benetako izena:", "yourlanguage": "Hizkuntza:", "yourvariant": "Edukiaren hizkuntza aldaera:", + "prefs-help-variant": "Wiki honen edukiaren orrialdeak bistaratzeko aukeratutako aldaera edo ortografia hobetsia.", "yournick": "Erabiltzaile izena:", "prefs-help-signature": "Eztabaida orrietako iruzkinak \"~~~~\" ikurrekin sinatu behar dira, honela zure sinadura eta sinatzeko-unea azalduko dira.", "badsig": "Baliogabeko sinadura; egiaztatu HTML etiketak.", @@ -1081,6 +1091,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", @@ -1090,6 +1101,7 @@ "right-protect": "Orrialde babestuak aldatu eta babes maila aldatu", "right-editprotected": "Babestutako orrialdeak aldatu (babes jauzirik gabe)", "right-editsemiprotected": "Aldatu \"{{int:protect-level-autoconfirmed}}\" babesa duten orrialdeak", + "right-editcontentmodel": "Aldatu orri bateko eduki eredua", "right-editinterface": "Erabiltzailearen interfazea aldatu", "right-editusercss": "Beste lankideen CSS fitxategiak aldatu", "right-edituserjs": "Beste lankideen JS fitxategiak aldatu", @@ -1151,6 +1163,7 @@ "action-createpage": "Sortu orri hau", "action-createtalk": "eztabaida orrialde hau sortu", "action-createaccount": "lankide hau sortu", + "action-autocreateaccount": "kanpoko erabiltzaile honen kontua automatikoki sortu", "action-history": "orrialde honen historia ikusi", "action-minoredit": "markatu aldaketa hau txikitzat", "action-move": "orri hau mugitu", @@ -1165,6 +1178,7 @@ "action-writeapi": "idazteko APIa erabili", "action-delete": "orrialde hau ezabatu", "action-deleterevision": "berrikuspenak ezabatu", + "action-deletelogentry": "ezabatu erregistroko sarrerak", "action-deletedhistory": "ikusi orri baten historia ezabatua", "action-deletedtext": "Ikusi ezabatutako berrikusketa testua", "action-browsearchive": "ezabatutako orrialdeak bilatu", @@ -1209,39 +1223,63 @@ "recentchanges-legend-heading": "Azalpenak:", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (ikus, gainera, [[Special:NewPages|orri berrien zerrenda]])", "recentchanges-submit": "Erakutsi", + "rcfilters-tag-remove": "$1 ezabatu", + "rcfilters-legend-heading": "Laburpenen zerrenda:", + "rcfilters-other-review-tools": "Beste berrikusketa tresna:", + "rcfilters-group-results-by-page": "Talde emaitzak orrika", + "rcfilters-grouping-title": "Taldekatzen", "rcfilters-activefilters": "Iragazki aktiboak", "rcfilters-advancedfilters": "Iragazki aurreratuak", + "rcfilters-limit-title": "Aldaketak erakutsi", + "rcfilters-limit-shownum": "Azken {{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-unsetdefault": "Kendu lehenetsi gisa", "rcfilters-savedqueries-remove": "Kendu", "rcfilters-savedqueries-new-name-label": "Izena", "rcfilters-savedqueries-new-name-placeholder": "Deskribatu filtro honen helburua", "rcfilters-savedqueries-apply-label": "Sortu iragazkia", + "rcfilters-savedqueries-apply-and-setdefault-label": "Iragazkia sortu", "rcfilters-savedqueries-cancel-label": "Utzi", "rcfilters-savedqueries-add-new-title": "Gorde oraingo iragazki ezarpenak", "rcfilters-restore-default-filters": "Leheneratu iragazki lehenetsiak", "rcfilters-clear-all-filters": "Iragazki guztiak garbitu", - "rcfilters-search-placeholder": "Aldaketa berriak iragazi (nabigatu ala idatzi)", + "rcfilters-show-new-changes": "Aldaketa berrienak ikusi", + "rcfilters-search-placeholder": "Azken aldaketak iragazi (arakatu ala idazten hasi)", "rcfilters-invalid-filter": "Balio ez duen iragazkia", + "rcfilters-empty-filter": "Filtro aktiborik ez dago. Ekarpen guztiak erakusten.", "rcfilters-filterlist-title": "Iragazkiak", - "rcfilters-filterlist-whatsthis": "Zer da hau?", + "rcfilters-filterlist-whatsthis": "Nola erabiltzen da?", + "rcfilters-filterlist-feedbacklink": "Esaguzu zer pentsatzen duzun iragazteko tresna hauei buruz (berriak)", "rcfilters-highlightbutton-title": "Nabarmendu emaitzak", "rcfilters-highlightmenu-title": "Hautatu kolore bat", + "rcfilters-highlightmenu-help": "Aukeratu kolore bat propietate hau nabarmentzeko", "rcfilters-filterlist-noresults": "Ez da iragazkirik aurkitu", - "rcfilters-filtergroup-registration": "Erabiltzaile erregistroa", - "rcfilters-filter-registered-label": "Erregistratuak", - "rcfilters-filter-unregistered-label": "Ez erregistratuak", + "rcfilters-noresults-conflict": "Ez da emaitzarik aurkitu bilaketa-irizpideak gatazkan daudelako", "rcfilters-filtergroup-authorship": "Ekarpenaren egiletza", "rcfilters-filter-editsbyself-label": "Zuk egindako aldaketak", "rcfilters-filter-editsbyself-description": "Zure ekarpenak", "rcfilters-filter-editsbyother-label": "Besteek egindako aldaketak", "rcfilters-filter-editsbyother-description": "Aldaketa guztiak norberarenak izan ezik.", + "rcfilters-filtergroup-userExpLevel": "Erabiltzailearen erregistroa eta esperientzia", + "rcfilters-filter-user-experience-level-registered-label": "Erregistratuak", + "rcfilters-filter-user-experience-level-registered-description": "Sesioa hasi duten editoreak.", + "rcfilters-filter-user-experience-level-unregistered-label": "Ez erregistratuak", + "rcfilters-filter-user-experience-level-unregistered-description": "Saioa hasi ez duten editoreak.", "rcfilters-filter-user-experience-level-newcomer-label": "Iritsiberriak", + "rcfilters-filter-user-experience-level-newcomer-description": "10 aldaketa eta 4 ekintza-egun baino gutxiagoko erregistratutako editoreak.", "rcfilters-filter-user-experience-level-learner-label": "Ikasleak", + "rcfilters-filter-user-experience-level-learner-description": "Erregistratutako editoreak, zeinen esperientzia \"Etorri berriak\" eta \"Erabiltzaile aurreratuen\" artean dagoena.", "rcfilters-filter-user-experience-level-experienced-label": "Erabiltzaile trebatuak", - "rcfilters-filter-user-experience-level-experienced-description": "30 eguneko jarduera eta 500 aldaketa baino gehiago.", + "rcfilters-filter-user-experience-level-experienced-description": "30 eguneko jarduera eta 500 aldaketa baino gehiago dituzten erregistratutako editoreak.", "rcfilters-filtergroup-automated": "Automatizatutako ekarpenak", "rcfilters-filter-bots-label": "Bot", "rcfilters-filter-bots-description": "Tresna automatizatuekin egindako aldaketak.", @@ -1263,6 +1301,9 @@ "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-filtergroup-watchlistactivity": "Ikus-zerrendaren jarduera", + "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...", @@ -1270,14 +1311,29 @@ "rcfilters-filter-newpages-description": "Orri berriak egiten dituzten aldaketak", "rcfilters-filter-categorization-label": "Kategoria aldaketak", "rcfilters-filter-logactions-label": "Erregistratutako ekintzak", - "rcfilters-filtergroup-lastRevision": "Azken berrikuspena", + "rcfilters-filter-logactions-description": "Administrazio-ekintzak, kontu sortzeak, ezabatze-orriak, kargak...", + "rcfilters-filtergroup-lastRevision": "Azken berrikuspenak", "rcfilters-filter-lastrevision-label": "Azken berrikuspena", "rcfilters-filter-lastrevision-description": "Orrialde bati eginiko aldaketarik berriena.", - "rcfilters-filter-previousrevision-label": "Aurreko berrikuspenak", + "rcfilters-filter-previousrevision-label": "Ez da azken berrikuspena", + "rcfilters-filter-previousrevision-description": "\"Azken berrikuspena\" ez diren aldaketa guztiak.", "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-liveupdates-button-title-off": "Gertatzen diren heinean aldaketa berriak erakutsi", + "rcfilters-watchlist-markseen-button": "Aldaketa guztiak ikusitakoak bezala markatu", + "rcfilters-watchlist-edit-watchlist-button": "Zure ikusitako orrien zerrenda aldatu", + "rcfilters-preference-label": "Azkenengo Aldaketen hobetutako bertsioa ezkutatu", + "rcfilters-preference-help": "2017 interfazearen birmoldaketa eta geroztik gehitu diren tresna guztietara bueltatzen da.", "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", @@ -1330,6 +1386,7 @@ "uploadbtn": "Fitxategia igo", "reuploaddesc": "Igotzeko formulariora itzuli.", "upload-tryagain": "Aldatutako fitxategiaren deskribapena bidali", + "upload-tryagain-nostash": "Bidali berriro kargatutako fitxategia eta aldatutako deskribapena", "uploadnologin": "Saioa hasi gabe", "uploadnologintext": "Fitxategiak igotzeko $1 behar duzu.", "upload_directory_missing": "Igoeren direktorioa ($1) ezin da aurkitu eta web zerbitzariak ezin du sortu.", @@ -1384,14 +1441,18 @@ "fileexists-shared-forbidden": "Badago izen hori daukan fitxategi bat elkarbanatutako fitxategi-biltegian.\nOraindik ere fitxategia igo nahi baduzu atzera itzuli eta izen berri bat erabili, mesedez. [[File:$1|thumb|center|$1]]", "file-exists-duplicate": "Fitxategi hau beste fitxategi {{PLURAL:$1|honen|hauen}} kopia bat da:", "file-deleted-duplicate": "Fitxategi honen ([[:$1]]) fitxategi berbera aldez aurretik ezabatua izan da. Fitxategi horren ezabaketa-erregistroa begiratu beharko zenuke berriz igo baino lehen.", + "file-deleted-duplicate-notitle": "Fitxategi honetarako fitxategi berdin bat aurretik ezabatu da eta titulua kendu egin da. Ordezkatutako fitxategiaren datuak ikusi ahal izateko ezabatutakoa ikusteko ahalmena duen norbaiti galdetu beharko zenioke berriro kargatu baino lehen.", "uploadwarning": "Igotzeko oharra", "uploadwarning-text": "Aldatu beheko fitxategiaren deskribapena, mesedez, eta saiatu berriz.", + "uploadwarning-text-nostash": "Fitxategia berriz kargatu, aldatu beheko azalpena eta saiatu berriro.", "savefile": "Fitxategia gorde", "uploaddisabled": "Igoerak ezgaituta daude", "copyuploaddisabled": "URL bidezko igoera desaktibatuta.", "uploaddisabledtext": "Fitxategiak igotzea ezgaituta dago.", "php-uploaddisabledtext": "Fitxategi igoerak PHP-n ezinduta daude. Ikusi fitxategi_igoerak mesedez.", "uploadscripted": "Fitxategi honek web zerbitzariak modu ezegokian interpretatu lezakeen HTML edo script kodea dauka.", + "upload-scripted-pi-callback": "Ezin da XML-styleheet prozesatzeko instrukzioa duen fitxategia igo.", + "upload-scripted-dtd": "Ezin dira DTD deklarazio ez estandarra duten SVG fitxategiak igo.", "uploadinvalidxml": "Ezin izan da analizatu XMLa igotako fitxategian.", "uploadvirus": "Fitxategiak birusa dauka! Xehetasunak: $1", "uploadjava": "Fitxategia ZIP bat da eta Java .class fitxategi bat du.\nJava fitxategiak igotzea ez dago baimendua, segurtasun muga batzuk hausteko aukera ematen duelako.", @@ -1404,6 +1465,7 @@ "upload-options": "Igoera-aukerak", "watchthisupload": "Fitxategi hau jarraitu", "filewasdeleted": "Izen hau duen fitxategi bat igo eta ezabatu da jada. $1 aztertu beharko zenuke berriz igo aurretik.", + "filename-thumb-name": "Koadro txikien izenburua dirudi. Ez igo koadro txikirik berriro wiki berdinera. Bestela, konpondu fitxategi izena esanguratsua izateko eta ez koadro txikiaren aurrizkirik ez izateko.", "filename-bad-prefix": "Igotzen ari zaren fitxategiaren izena '''\"$1\"'''ekin hasten da, normalki kamera digitalek automatikoki ezartzen duten izen ez deskriptibo bat.\nAukera ezazu, mesedez, fitxategi izen deskriptiboago bat.", "upload-proto-error": "Protokolo ezegokia", "upload-proto-error-text": "Kanpo igoerak http:// edo ftp:// hasiera duen URLa izan behar du.", @@ -1414,6 +1476,9 @@ "upload-too-many-redirects": "URLak birbideratze gehiegi zituen", "upload-http-error": "HTTP errorea gertatu da: $1", "upload-copy-upload-invalid-domain": "Domeinu honetan ezin dira igoerak kopiatu.", + "upload-foreign-cant-upload": "Wiki hau ez dago konfiguratuta fitxategiak kargatzeko eskatutako atzerritarren biltegian.", + "upload-foreign-cant-load-config": "Ezin izan da atzerriko fitxategiaren biltegira artxiboak igotzeko konfigurazioa kargatu.", + "upload-dialog-disabled": "Elkarrizketa honen bidez fitxategiak kargatzeko aukera desgaituta dago wiki honetan.", "upload-dialog-title": "Igo fitxategia", "upload-dialog-button-cancel": "Utzi", "upload-dialog-button-back": "Atzera", @@ -1422,6 +1487,7 @@ "upload-dialog-button-upload": "Igo", "upload-form-label-infoform-title": "Xehetasunak", "upload-form-label-infoform-name": "Izena", + "upload-form-label-infoform-name-tooltip": "Fitxategi izenburu deskribatzaile bakarra, fitxategi-izen gisa balioko duena. Hizkuntza arrunta erabil dezakezu espazioekin. Ez sartu fitxategiaren luzapena.", "upload-form-label-infoform-description": "Deskribapena", "upload-form-label-infoform-description-tooltip": "Azaldu laburki lanaren inguruko kontu aipagarri guztiak. Argazki batean, aipatu agertzen den gai nagusia, momentua, edo lekua.", "upload-form-label-usage-title": "Erabilera", @@ -1429,6 +1495,8 @@ "upload-form-label-own-work": "Hau neure lana da", "upload-form-label-infoform-categories": "Kategoriak", "upload-form-label-infoform-date": "Data", + "upload-form-label-own-work-message-generic-foreign": "Fitxategi hau partekatutako biltegian kargatzen ari naizela ulertzen dut. Zerbitzu-baldintzak eta lizentzien gidalerroen jarraipena egiten ari naizela egiaztatzen dut.", + "upload-form-label-not-own-work-message-generic-foreign": "Fitxategi hau partekatutako biltegiko gidalerroen arabera kargatzeko aukera ez baduzu, itxi elkarrizketa hau eta saiatu beste metodo bat.", "backend-fail-stream": "Ezin izan da \"$1\" fitxategiaren stream egin.", "backend-fail-backup": "Ezin izan da \"$1\" fitxategiaren backup egin.", "backend-fail-notexists": "$1 fitxategia ez da existitzen.", @@ -1459,12 +1527,19 @@ "lockmanager-fail-db-release": "Ezin izan da $1 datubasean giltzaraporik askatu.", "lockmanager-fail-svr-acquire": "Ezin dituzu $1 zerbitzariko giltzarpoak eskuratu.", "lockmanager-fail-svr-release": "Ezin izan da $1 zerbitzarian giltzaraporik askatu.", + "zip-file-open-error": "Errore bat gertatu da ZIP egiaztapenetarako fitxategia irekitzean.", "zip-wrong-format": "Zehaztutako fitxategia ez zen ZIP motakoa.", + "zip-bad": "Fitxategia hondatutako edo irakurtezina den ZIP fitxategi bat da. Ezin da ondo egiaztatu segurtasunerako.", + "zip-unsupported": "Fitxategia MediaWiki-k onartzen ez dituen ZIP funtzioak erabiltzen dituen ZIP fitxategia da. Ezin da segurtasunerako ondo egiaztatu.", "uploadstash": "Gordailu bat igo", + "uploadstash-summary": "Orrialde honek kargatutako fitxategietara sartu edo igotzeko prozesuan sartzeko aukera ematen du, baina oraindik ez dira argitaratu wikian. Fitxategi hauek ez daude ikusgai kargatu dituen erabiltzaileen kasuan ez bada.", "uploadstash-clear": "Ezabatu fitxategi ezkutuak", "uploadstash-nofiles": "Ez duzu kodetutako fitxategirik.", + "uploadstash-badtoken": "Ekintza hori egitean huts egin du, zure edizio kredentzialak iraungi direlako. Saiatu berriro mesedez.", "uploadstash-errclear": "Fitxategiak ezabatzeak akatsa eman du.", "uploadstash-refresh": "Fitxategien zerrenda eguneratu", + "uploadstash-thumbnail": "Koadro txikia ikusi", + "invalid-chunk-offset": "Desplazamendu zati baliogabea", "img-auth-accessdenied": "Sarbide ukatua", "img-auth-nopathinfo": "PATH_INFO falta da.\nZure zerbitzaria ez dago informazio hau pasatzeko konfiguratuta.\nCGI-oinarriduna izan daiteke, img_auth onartzen ez duena.\nIkusi https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization.", "img-auth-notindir": "Eskatutako bidea ez dago kofiguratutako igoera-direktorioan.", @@ -1505,7 +1580,7 @@ "listfiles_size": "Tamaina (byte)", "listfiles_description": "Deskribapena", "listfiles_count": "Bertsioak", - "listfiles-show-all": "Fitxategien bertsio zaharrak sartu", + "listfiles-show-all": "Fitxategien bertsio zaharrak barnean hartzen ditu", "listfiles-latestversion": "Oraingo bertsioa", "listfiles-latestversion-yes": "Bai", "listfiles-latestversion-no": "Ez", @@ -1547,6 +1622,7 @@ "filerevert-submit": "Leheneratu", "filerevert-success": "'''[[Media:$1|$1]]''' [$4 $3(e)ko, $2(e)tako bertsiora] lehenratua izan da.", "filerevert-badversion": "Ez dago aurreragoko fitxategi honen bertsio lokalik emandako denbora tartean.", + "filerevert-identical": "Fitxategiaren uneko bertsioa dagoeneko aukeratutakoaren berdina da.", "filedelete": "$1 ezabatu", "filedelete-legend": "Fitxategia ezabatu", "filedelete-intro": "'''[[Media:$1|$1]]''' fitxategiaezabatzen ari zara eta honen historiarekin batera.", @@ -1561,6 +1637,7 @@ "filedelete-reason-otherlist": "Bestelako arrazoiak", "filedelete-reason-dropdown": "*Ezabatzeko arrazoi ohikoa\n** Copyright bortxaketa\n** Bikoiztutako fitxategia", "filedelete-edit-reasonlist": "Ezabaketa arrazoiak aldatu", + "filedelete-maintenance": "Aldi baterako desgaituta dauden fitxategiak ezabatzea eta leheneratzea mantentze lanen bitartean.", "filedelete-maintenance-title": "Ezin da artxiboa ezabatu", "mimesearch": "MIME bilaketa", "mimesearch-summary": "Orrialde honek fitxategiak bere MIME motaren arabera iragaztea ahalbidetzen du. Iragazkia: eduki-mota/azpi-mota, adib. image/jpeg.", @@ -1568,6 +1645,8 @@ "download": "jaitsi", "unwatchedpages": "Jarraitu gabeko orrialdeak", "listredirects": "Birzuzenketen zerrenda", + "listduplicatedfiles": "Kopiak dituzten artxiboen zerrenda", + "listduplicatedfiles-summary": "Fitxategi zerrenda bat da, non fitxategiaren azken bertsioa beste fitxategi baten azken bertsioarekin bikoiztua den. Tokiko fitxategiak bakarrik kontuan hartzen dira.", "unusedtemplates": "Erabili gabeko txantiloiak", "unusedtemplatestext": "Orrialde honetan beste edozein orrialdetan erabiltzen ez diren {{ns:template}} izen-tarteko orrialdeak zerrendatzen dira. Ez ahaztu txantiloietara egon daitezkeen loturak egiaztatzeaz ezabatu aurretik.", "unusedtemplateswlh": "beste loturak", @@ -1597,9 +1676,13 @@ "statistics-users-active-desc": "Aurreko {{PLURAL:$1|egunean|egunetan}} jardueraren bat gauzatu duten erabiltzaileak", "pageswithprop": "Orrialde propietatea duten orrialdeak", "pageswithprop-legend": "Orrialde propietatea duten orrialdeak", + "pageswithprop-text": "Orrialde honetan orrialde baten jabetza jakin bat erabiltzen duten orriak zerrendatzen dira.", "pageswithprop-prop": "Ezaugarriaren izena:", + "pageswithprop-reverse": "Antolatu aldrebeseko ordenean", + "pageswithprop-sortbyvalue": "Balio propioaren arabera antolatu", "pageswithprop-submit": "Joan", "pageswithprop-prophidden-long": "testu luzearen ezagaurria izkutatua ($1)", + "pageswithprop-prophidden-binary": "$1 balio binario propietate ezkutua", "doubleredirects": "Birbideratze bikoitzak", "doubleredirectstext": "Lerro bakoitzean lehen eta bigarren birzuzenketetarako loturak ikus daitezke, eta baita edukia daukan edo eduki beharko lukeen orrialderako lotura ere. Lehen birzuzenketak azken honetara zuzendu beharko luke.", "double-redirect-fixed-move": "«[[$1]]» orria mugitu da.\nAutomatikoki eguneratu da, eta orain «[[$2]]» orrira darama.", @@ -1637,6 +1720,7 @@ "wantedpages-summary": "Lotura gehien dituzten eta existitzen ez diren orrialdeen zerrenda da hau, eurengana birzuzenketak baino ez dituzten orrialdeak kenduta. Eurenganako birzuzenketak dituzten baina existitzen ez diren orrialdeen zerrenda bat ikusteko, [[{{#special:BrokenRedirects}}|apurtutako birzuzenketen zerrendara]] jo dezakezu.", "wantedpages-badtitle": "Izenburu okerra hautatutako emaitzetan: $1", "wantedfiles": "Eskatutako fitxategiak", + "wantedfiletext-nocat-noforeign": "Hurrengo artxiboak erabiltzen ari dira baina ez dira existitzen.", "wantedtemplates": "Eskatutako txantiloiak", "mostlinked": "Gehien lotutako orrialdeak", "mostlinkedcategories": "Gehien lotutako kategoriak", @@ -1695,11 +1779,16 @@ "apihelp": "API laguntza", "apihelp-no-such-module": "Ez da \"$1\" modulua aurkitu.", "apisandbox": "API proba orria", + "apisandbox-jsonly": "API sandbox-a erabiltzeko JavaScript eskatzen da.", + "apisandbox-api-disabled": "APIa desgaituta dago gune honetan.", "apisandbox-fullscreen": "Zabaldu panela", + "apisandbox-fullscreen-tooltip": "Zabaldu sandbox panela arakatzailearen leihoa betetzeko.", "apisandbox-unfullscreen": "Erakutsi orria", + "apisandbox-unfullscreen-tooltip": "Gutxitu sandbox panela, MediaWiki nabigatzaile linkak eskuragarri egoteko.", "apisandbox-submit": "Egin eskaera", "apisandbox-reset": "Garbitu", "apisandbox-retry": "Saiatu berriro", + "apisandbox-loading": "API $1 modulorako informazioa kargatzen...", "apisandbox-no-parameters": "API modulu honek ez du parametrorik.", "apisandbox-helpurls": "Laguntza estekak", "apisandbox-examples": "Adibideak", @@ -1707,9 +1796,23 @@ "apisandbox-dynamic-parameters-add-label": "Gehitu parametroa:", "apisandbox-dynamic-parameters-add-placeholder": "Parametroaren izena", "apisandbox-dynamic-error-exists": "$1 parametro izena dagoeneko existitzen da", + "apisandbox-deprecated-parameters": "Aurretiaz zehaztutako parametroak", + "apisandbox-fetch-token": "Token-a automatikoki bete", + "apisandbox-submit-invalid-fields-title": "Zelai batzuk ez dute balio.", + "apisandbox-submit-invalid-fields-message": "Mesedez, zuzendu markatutako zelaiak eta saiatu berrio.", "apisandbox-results": "Emaitzak", "apisandbox-sending-request": "APIari eskaera bidaltzen...", "apisandbox-loading-results": "APIaren emaitzak jasotzen...", + "apisandbox-results-error": "Errore bat gertatu da API kontsulta-erantzuna kargatzean: $1", + "apisandbox-request-selectformat-label": "Erakutsi eskaera datuak horrela:", + "apisandbox-request-format-url-label": "URL kontsulta katea", + "apisandbox-request-url-label": "Eskatutako URLa:", + "apisandbox-request-json-label": "Eskatutako JSONa:", + "apisandbox-request-time": "Eskakisun denbora: {{PLURAL:$1|$1 ms}}", + "apisandbox-results-fixtoken": "Zuzendu token-a eta berrabiarazi", + "apisandbox-results-fixtoken-fail": "$1 token-a ezin izan da eskuratu.", + "apisandbox-alert-page": "Orri honetako zelaiek ez dute balio.", + "apisandbox-alert-field": "Zelai honetako balioak ez du balio.", "apisandbox-continue": "Jarraitu", "apisandbox-continue-clear": "Garbitu", "apisandbox-multivalue-all-values": "$1 (balio guztiak)", @@ -1719,8 +1822,11 @@ "booksources-text": "Jarraian liburu berri eta erabiliak saltzen dituzten guneetarako loturen zerrenda bat ikus dezakezu, bilatzen ari zaren liburu horientzako informazio gehigarria aurkitzeko lagungarria izan daitekeena:", "booksources-invalid-isbn": "Badirudi emandako ISBNa ez dela baliagarria; egiazta ezazu ea akatsik egin duzun jatorrizko iturritik kopiatzean.", "magiclink-tracking-rfc": "RFC lotura magikoak dituzten orrialdeak", + "magiclink-tracking-rfc-desc": "Orri honek RFC link magikoak erabiltzen ditu. Ikusi [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] migratzeko modua aztertzeko.", "magiclink-tracking-pmid": "PMID lotura magikoak dituzten orrialdeak", + "magiclink-tracking-pmid-desc": "Orri honek PMID link magikoak erabiltzen ditu. Ikusi [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] migratzeko modua aztertzeko.", "magiclink-tracking-isbn": "ISBN lotura magikoak dituzten orrialdeak", + "magiclink-tracking-isbn-desc": "Orri honek ISBN link magikoak erabiltzen ditu. Ikusi [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] migratzeko modua aztertzeko.", "specialloguserlabel": "Egilea:", "speciallogtitlelabel": "Helburua (izenburua edo {{ns:user}}: lankidea):", "log": "Erregistroak", @@ -1747,6 +1853,7 @@ "allpages-bad-ns": "{{SITENAME}}(e)k ez dauka \"$1\" izeneko izen-tarterik.", "allpages-hide-redirects": "Birzuzenketak ezkutatu", "cachedspecial-viewing-cached-ttl": "Orrialde honen cache betsioa ikusten ari zara, $1 adina izan dezakeena.", + "cachedspecial-viewing-cached-ts": "Orrialde honen cache-bertsioa ikusten ari zara, agian ez dena guztiz gaurkotu.", "cachedspecial-refresh-now": "Azkena ikusi.", "categories": "Kategoriak", "categories-submit": "Erakutsi", @@ -1876,6 +1983,7 @@ "enotif_lastdiff": "Aldaketa hau ikusteko, ikus $1.", "enotif_anon_editor": "$1 erabiltzaile anonimoa", "enotif_body": "Kaixo $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\n\nEgilearen laburpena: $PAGESUMMARY $PAGEMINOREDIT\n\nEgilearekin harremanetan jarri:\nposta: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nEz dira oharpen gehiago bidaliko orrialde hau berriz bisitatzen ez baduzu izena emanda zaudela.\nHorrez gain, orrialdeen oharpen konfigurazioa leheneratu dezakezu jarraipen zerrendatik.\n\n Adeitasunez {{SITENAME}}(e)ko oharpen sistema\n\n--\nZure epostaren jakinarazpenen konfigurazioa aldatzeko, ikus\n{{canonicalurl:{{#special:Preferences}}}}\n\nZure jarraipen zerrendako konfigurazioa aldatzeko, ikus\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nOrrialdea zure jarraipen zerrendatik ezabatzeko, ikus\n$UNWATCHURL\n\nLaguntza:\n$HELPPAGE", + "enotif_minoredit": "Aldaketa hau txikia da", "created": "sortu", "changed": "aldatu", "deletepage": "Orrialdea ezabatu", @@ -1902,11 +2010,14 @@ "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", "rollbacklinkcount": "desegin {{PLURAL:$1|edizio bat|$1 edizio}}", "rollbacklinkcount-morethan": "desegin {{PLURAL:$1|edizio bat|$1 edizio}} baino gehiago", "rollbackfailed": "Desegiteak huts egin dud", + "rollback-missingrevision": "Berrikusketa data ezin izan da kargatu.", "cantrollback": "Ezin da aldaketa desegin; erabiltzaile bakarrak hartu du parte.", "alreadyrolled": "Ezin da [[User:$2|$2]] ([[User talk:$2|eztabaida]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) wikilariak «[[:$1]]» orrian egindako azken aldaketa desegin;\nbeste norbaitek editatu edo desegin du jadanik.\n\nAzken aldaketa [[User:$3|$3]] ([[User talk:$3|eztabaida]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]) wikilariak egin du.", "editcomment": "Aldaketaren laburpena: $1.", @@ -1914,9 +2025,14 @@ "rollback-success": "{{GENDER:$3|$1}}; wikilariaren aldaketak deseginda,\nedukia {{GENDER:$4|$2}} wikilariaren azken bertsiora itzuli da.", "sessionfailure-title": "Saio-akatsa", "sessionfailure": "Badirudi saioarekin arazoren bat dagoela; bandalismoak saihesteko ekintza hau ezeztatu egin da. Mesedez, nabigatzaileko \"atzera\" botoian klik egin, hona ekarri zaituen orrialde hori berriz kargatu, eta saiatu berriz.", + "changecontentmodel": "Aldatu orri bateko eduki eredua", + "changecontentmodel-legend": "Aldatu eduki eredua", "changecontentmodel-title-label": "Orriaren izenburua", + "changecontentmodel-model-label": "Eduki eredu berria", "changecontentmodel-reason-label": "Arrazoia:", "changecontentmodel-submit": "Aldatu", + "changecontentmodel-success-title": "Eduki eredua aldatu egin da", + "changecontentmodel-emptymodels-title": "Eduki eredurik ez dago eskuragarri", "logentry-contentmodel-change-revertlink": "desegin", "logentry-contentmodel-change-revert": "desegin", "protectlogpage": "Babes erregistroa", @@ -1925,6 +2041,7 @@ "modifiedarticleprotection": "\"[[$1]]\"(r)en babes maila aldatu da", "unprotectedarticle": "\"[[$1]]\"-(r)i babesa kendu zaio", "movedarticleprotection": "babes hobespenak «[[$2]]» orritik «[[$1]]» orrira aldatu dira", + "unprotectedarticle-comment": "{{GENDER:$2|administratzaileak}} babesa kendu dio «[[$1]]» orriari", "protect-title": "«$1» babesten", "protect-title-notallowed": "\"$1\"en babes maila ikusi", "prot_1movedto2": "«[[$1]]» orria «[[$2]]» izenera aldatu da", @@ -1999,6 +2116,7 @@ "undelete-search-title": "Ezabatutako orrialdeak bilatu", "undelete-search-box": "Ezabatutako orrialdeak bilatu", "undelete-search-prefix": "Honela hasten diren orrialdeak erakutsi:", + "undelete-search-full": "Orrialde izenburuak erakutsi:", "undelete-search-submit": "Bilatu", "undelete-no-results": "Ez da bat datorren orrialderik aurkitu ezabaketen artxiboan.", "undelete-filename-mismatch": "Ezin da $1 denbora-marka duten fitxategi aldaketa ezabatua berrezarri: fitxategi-izena ez dator bat", @@ -2067,7 +2185,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:", @@ -2152,8 +2270,9 @@ "block-log-flags-hiddenname": "lankide-izen ezkutua", "range_block_disabled": "Administratzaileak IP eremuak blokeatzeko gaitasuna ezgaituta dago.", "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}}", @@ -2182,6 +2301,7 @@ "lockdbsuccesstext": "Datu-basea blokeatu egin da.
    Ez ahaztu mantenu lanak burutu ondoren [[Special:UnlockDB|blokeoa kentzeaz]].", "unlockdbsuccesstext": "Datu-basea desblokeatu egin da.", "lockfilenotwritable": "Ezin da datu-baseko blokeo fitxategian idatzi. Datu-basea blokeatu edo desblokeatzeko, zerbitzariak idazteko aukera izan beharra dauka.", + "databaselocked": "Datu-basea blokeatuta dago jada.", "databasenotlocked": "Datu-basea ez dago blokeatuta.", "lockedbyandtime": "({{GENDER:$1|$1}}k egina $2ko $3(e)tan)", "move-page": "Mugitu «$1»", @@ -2440,7 +2560,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", @@ -2466,6 +2586,7 @@ "pageinfo-category-pages": "Orrialde kopurua", "pageinfo-category-subcats": "Azpikategorien zenbakia", "pageinfo-category-files": "Fitxategi kopurua", + "pageinfo-user-id": "Erabiltzaile IDa", "markaspatrolleddiff": "Patruilatutzat markatu", "markaspatrolledtext": "Artikulu hau patruilatutzat markatu", "markaspatrolledtext-file": "Fitxategi honen bertsioa patruilatutzat markatu", @@ -2482,6 +2603,7 @@ "patrol-log-header": "Hau patruliatutako aldaketen log bat da.", "log-show-hide-patrol": "$1 patruilatze loga", "log-show-hide-tag": "$1 etiketa erregistroa", + "confirm-markpatrolled-button": "Ados", "deletedrevision": "$1 berrikuspen zaharra ezabatu da", "filedeleteerror-short": "Errorea fitxategia ezabatzerakoan: $1", "filedeleteerror-long": "Erroreak gertatu dira fitxategia ezabatzerakoan:\n\n$1", @@ -2518,7 +2640,10 @@ "newimages-legend": "Iragazkia", "newimages-label": "Fitxategia (edo bere zati bat):", "newimages-user": "IP helbidea edo erabiltzaile-izena", + "newimages-newbies": "Soilik kontu berrien ekarpenak erakutsi", "newimages-showbots": "Erakutsi botek igotako fitxategiak", + "newimages-hidepatrolled": "Izkutatu patruilatutako igoerak", + "newimages-mediatype": "Media mota:", "noimages": "Ez dago ezer ikusteko.", "ilsubmit": "Bilatu", "bydate": "dataren arabera", @@ -2936,6 +3061,7 @@ "deletedwhileediting": "'''Oharra''': Zu aldaketak egiten hasi ondoren orrialdea ezabatua izan da!", "confirmrecreate": "[[User:$1|$1]] erabiltzaileak ([[User talk:$1|eztabaida]]) orrialde hau ezabatu zu aldatzen hasi eta gero. Hona arrazoia: : ''$2'' Mesedez, baieztatu orrialde hau berriz sortu nahi duzula.", "recreate": "Birsortu", + "confirm-purge-title": "Orri hau purgatu", "confirm_purge_button": "Ados", "confirm-purge-top": "Orrialde honen katxea ezabatu?", "confirm-purge-bottom": "Orrialdea purgatzean katxea ezabatzen du eta orrialdearen bertsiorik eguneratuena erakustera behartzen du.", @@ -3050,6 +3176,7 @@ "redirect-page": "Orriaren IDa", "redirect-revision": "Orrialdearen berrikuspena", "redirect-file": "Fitxategiaren izena", + "redirect-logid": "Log IDa", "redirect-not-exists": "Ez da baliorik aurkitu", "fileduplicatesearch": "Artxibo bikoiztuen bilaketa", "fileduplicatesearch-summary": "Bikoiztutako fitxategiak bilatu bere hash balioaren arabera.", @@ -3061,7 +3188,7 @@ "fileduplicatesearch-noresults": "Ez da aurkitu \"$1\" izeneko fitxategirik.", "specialpages": "Orri bereziak", "specialpages-note-top": "Azalpenak", - "specialpages-note": "* Orri berezi arruntak.\n* Mugatutako orri bereziak.", + "specialpages-note-restricted": "* Orrialde arrunt bereziak.\n* Restricted special pages.", "specialpages-group-maintenance": "Mantentze-oharrak", "specialpages-group-other": "Beste orri berezi batzuk", "specialpages-group-login": "Hasi saioa / sortu kontua", @@ -3082,6 +3209,7 @@ "tag-filter": "[[Special:Tags|Etiketa]] iragazkia:", "tag-filter-submit": "Iragazkia", "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Etiketa|Etiketak}}]]: $2)", + "tag-mw-contentmodelchange": "Eduki eredu aldaketa", "tags-title": "Etiketak", "tags-intro": "Orri honek softwareak aldatzeko bezala marka ditzazkeen etiketak zerrendatzen ditu, eta berauen esanahia.", "tags-tag": "Etiketaren izena", @@ -3112,7 +3240,9 @@ "tags-delete-title": "Etiketa ezabatu", "tags-delete-explanation-initial": "Datu-basetik \"$1\" etiketa ezabatzera zoaz", "tags-delete-reason": "Arrazoia:", + "tags-delete-submit": "Betirako ezabatu etiketa hau", "tags-delete-not-found": "\"$1\" etiketa ez da existitzen.", + "tags-delete-no-permission": "Ez daukazu baimenik etiketa aldaketak ezabatzeko.", "tags-activate-title": "Etiketa aktibatu", "tags-activate-question": "\"$1\" etiketa aktibatzear zaude.", "tags-activate-reason": "Arrazoia:", @@ -3133,9 +3263,11 @@ "tags-edit-remove": "Kendu etiketa hauek:", "tags-edit-remove-all-tags": "(kendu etiketa guztiak)", "tags-edit-chosen-placeholder": "Hautatu etiketa batzuk", + "tags-edit-chosen-no-results": "Balio duen etiketarik ez da aurkitu", "tags-edit-reason": "Arrazoia:", "tags-edit-success": "Aldaketak ezarri dira.", "tags-edit-failure": "Ezin izan dira aldaketak ezarri:\n$1", + "tags-edit-nooldid-title": "Baliogabeko berrikusketa helburua", "comparepages": "Orrialdeak alderatu", "compare-page1": "1. orrialdea", "compare-page2": "2. orrialdea", @@ -3145,6 +3277,12 @@ "compare-invalid-title": "Zehaztutako izenburua ez dago zuzen.", "compare-title-not-exists": "Adierazi duzun izenburua ez da existitzen.", "compare-revision-not-exists": "Zehazturiko berrikuspena ez da existitzen.", + "diff-form": "Ezberdintasunak", + "diff-form-revid": "Ezberdintasunaren ID berrikusketa", + "diff-form-submit": "Erakutsi ezberdintasunak", + "permanentlink": "Lotura finkoa", + "permanentlink-revid": "Berrikuspen IDa", + "permanentlink-submit": "Berrikusketara joan", "dberr-problems": "Barkatu! Webgune honek zailtasun teknikoak jasaten ari da.", "dberr-again": "Saiatu pare bat minutu itxaroten edo kargatu ezazu orrialdea berriro.", "dberr-info": "($1: Ezin da datu-basera konektatu)", @@ -3167,6 +3305,7 @@ "htmlform-chosen-placeholder": "Aukeratu", "htmlform-cloner-create": "Gehitu gehiago", "htmlform-cloner-delete": "Kendu", + "htmlform-cloner-required": "Gutxienez balio bat behar da.", "htmlform-date-placeholder": "UUUU-HH-EE", "htmlform-time-placeholder": "OO:MM:SS", "htmlform-datetime-placeholder": "UUUU-HH-EE OO:MM:SS", @@ -3181,7 +3320,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", @@ -3202,11 +3341,13 @@ "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", "logentry-newusers-byemail": "$1(e)k $3 erabiltzaile kontua {{GENDER:$2|sortu du}} eta pasahitza emailez bidali da", "logentry-newusers-autocreate": "$1 erabiltzaile kontua automatikoki {{GENDER:$2|sortu da}}", + "logentry-protect-unprotect": "$1 {{GENDER:$2|administratzaileak}} babesa kendu dio «$3» orriari", "logentry-upload-upload": "$1(e)k $3 {{GENDER:$2|igo du}}", "logentry-upload-overwrite": "$1(e)k $3(r)en bertsio berria {{GENDER:$2|igo du}}", "logentry-upload-revert": "$1(e)k $3 {{GENDER:$2|igo du}}", @@ -3226,6 +3367,7 @@ "feedback-subject": "Gaia:", "feedback-submit": "Bidali", "feedback-thanks-title": "Eskerrik asko!", + "feedback-useragent": "Erabiltzaile agentea:", "searchsuggest-search": "{{SITENAME}} wikian bilatu", "searchsuggest-containing": "edukian...", "api-error-badtoken": "Barne akatsa: token okerra.", @@ -3275,7 +3417,9 @@ "pagelang-language": "Hizkuntza", "pagelang-use-default": "Hizkuntza lehenetsia erabili", "pagelang-select-lang": "Hizkuntza aukeratu", + "pagelang-reason": "Arrazoia", "pagelang-submit": "Bidali", + "pagelang-nonexistent-page": "$1 orria ez da existitzen.", "pagelang-unchanged-language": "$1 orrialdea jada $2 hizkuntzan dago.", "right-pagelang": "Aldatu orrialdearen hizkuntza", "action-pagelang": "orrialdearen hizkuntza aldatu", @@ -3307,6 +3451,7 @@ "special-characters-group-ipa": "NAF", "special-characters-group-symbols": "Ikurrak", "special-characters-group-greek": "Greziera", + "special-characters-group-greekextended": "Luzatutako Greziera", "special-characters-group-cyrillic": "Zirilikoa", "special-characters-group-arabic": "Arabiera", "special-characters-group-arabicextended": "Arabiera hedatua", @@ -3321,10 +3466,12 @@ "special-characters-group-thai": "Thaiera", "special-characters-group-lao": "Laosera", "special-characters-group-khmer": "Khmerrera", + "special-characters-group-canadianaboriginal": "Kanadiar aborigenoa", "special-characters-title-endash": "en lerroa", "special-characters-title-emdash": "em lerroa", "special-characters-title-minus": "minus zeinua", "mw-widgets-dateinput-no-date": "Ez duzu datarik aukeratu", + "mw-widgets-mediasearch-input-placeholder": "Multimedia bilatu", "mw-widgets-mediasearch-noresults": "Ez da emaitzarik aurkitu.", "mw-widgets-titleinput-description-new-page": "orri hori oraindik ez da existitzen", "mw-widgets-titleinput-description-redirect": "$1ra birzuzendu", @@ -3335,6 +3482,7 @@ "sessionprovider-generic": "$1 sesio", "randomrootpage": "Ausazko sustrai orria", "log-action-filter-block": "Blokeatze mota:", + "log-action-filter-contentmodel": "Eduki eredu motaren aldaketa:", "log-action-filter-delete": "Ezabatze mota:", "log-action-filter-import": "Inportazio mota:", "log-action-filter-move": "Mugimendu mota:", @@ -3347,6 +3495,9 @@ "log-action-filter-block-block": "Blokeatu", "log-action-filter-block-reblock": "Blokeoa aldatu", "log-action-filter-block-unblock": "blokeoa kendu", + "log-action-filter-contentmodel-change": "Aldatu eduki eredua", + "log-action-filter-delete-delete": "Orri ezabaketa", + "log-action-filter-delete-restore": "Ezabatutako orria berreskuratu", "log-action-filter-delete-revision": "Berrikuspen ezabaketa", "log-action-filter-import-interwiki": "Transwiki inportazioa", "log-action-filter-import-upload": "Inportatu XML igoera bidez", @@ -3354,19 +3505,51 @@ "log-action-filter-managetags-delete": "Etiketa ezabaketa", "log-action-filter-managetags-activate": "Etiketa aktibazioa", "log-action-filter-managetags-deactivate": "Etiketa desaktibazioa", + "log-action-filter-newusers-create": "Erabiltzaile anonimo batek sortua", + "log-action-filter-newusers-create2": "Izena emandako erabiltzaile batek idatzia", "log-action-filter-newusers-autocreate": "Sorrera automatikoa", + "log-action-filter-patrol-patrol": "Patruilaketa manuala", + "log-action-filter-patrol-autopatrol": "Patruilaketa automatikoa", "log-action-filter-protect-protect": "Babesa", + "log-action-filter-protect-modify": "Babespen aldaketa", + "log-action-filter-protect-unprotect": "Babesgabea", + "log-action-filter-protect-move_prot": "Mugitutako babesa", "log-action-filter-rights-rights": "Eskuzko aldaketa", "log-action-filter-rights-autopromote": "Aldaketa automatikoa", "log-action-filter-upload-upload": "Igoera berria", + "log-action-filter-upload-overwrite": "Birkargatu", + "authmanager-authplugin-setpass-failed-title": "Ezin izan da pasahitza aldatu", + "authmanager-authplugin-setpass-bad-domain": "Balio ez duen domeinua.", + "authmanager-autocreate-noperm": "Ezin da automatikoki erabiltzaile bat sortu.", "authmanager-userdoesnotexist": "\"$1\" erabiltzaile kontua ez dago erregistratua.", + "authmanager-retype-help": "Pasahitza berriro baieztatzeko.", "authmanager-email-label": "Emaila", "authmanager-email-help": "Helbide elektronikoa", "authmanager-realname-label": "Benetako izena", "authmanager-realname-help": "Erabiltzailearen benetako izena", + "authmanager-provider-password": "Pasahitzan oinarritutako baieztapena", + "authmanager-provider-password-domain": "Pasahitza eta domeinuan oinarritutako baieztapena", "authmanager-provider-temporarypassword": "Behin-behineko pasahitza", "authprovider-resetpass-skip-label": "Utzi", "authform-wrongtoken": "Token okerra", + "specialpage-securitylevel-not-allowed-title": "Baimenik gabe", + "authpage-cannot-login": "Saio hasiera ezin izan da burutu.", + "cannotauth-not-allowed-title": "Ez da baimendu", + "cannotauth-not-allowed": "Ez duzu baimenik orri hau erabiltzeko", + "changecredentials": "Kredentzialak aldatu", + "changecredentials-submit": "Kredentzialak aldatu", + "removecredentials": "Kredentzialak kendu", + "removecredentials-submit": "Kredentzialak kendu", + "credentialsform-provider": "Kredentzial mota:", "credentialsform-account": "Kontuaren izena:", - "gotointerwiki": "{{SITENAME}}(e)tik irteten" + "linkaccounts": "Kontuak lotu", + "linkaccounts-success-text": "Kontua lotu da.", + "linkaccounts-submit": "Kontuak lotu", + "unlinkaccounts": "Kontuak desestekatu", + "unlinkaccounts-success": "Kontua desestekatu da.", + "revid": "$1 berrikusi", + "pageid": "$1 orri IDa", + "gotointerwiki": "{{SITENAME}}(e)tik irteten", + "pagedata-title": "Orri data", + "pagedata-bad-title": "Izenburu baliogabea: $1" } diff --git a/languages/i18n/fa.json b/languages/i18n/fa.json index 47eed7a2f7..2f185fb183 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", @@ -721,7 +722,6 @@ "explainconflict": "از وقتی ویرایش این صفحه را آغاز کرده‌اید شخص دیگری آن را تغییر داده است.\nناحیهٔ متنی بالایی شامل متن صفحه به شکل کنونی آن است.\nتغییرات شما در ناحیهٔ متنی پایینی نشان داده شده‌است.\nشما باید تغییراتتان را با متن کنونی ترکیب کنید.\nبا فشردن دکمهٔ «$1» فقط متن ناحیهٔ متنی بالایی ذخیره خواهد شد.", "yourtext": "متن شما", "storedversion": "نسخهٔ ذخیره شده", - "nonunicodebrowser": "'''هشدار: مرورگر شما با استانداردهای یونیکد سازگار نیست.'''\nراه حلی به کار گرفته شده تا شما بتوانید صفحات را با امنیت ویرایش کنید: کاراکترهای غیر ASCII به صورت کدهایی در مبنای شانزده به شما نشان داده می‌شوند.", "editingold": "'''هشدار: شما در حال ویرایش نسخه‌ای قدیمی از این صفحه هستید.'''\nاگر ذخیره‌اش کنید، هر تغییری که پس از این نسخه انجام شده‌است از بین خواهد رفت.", "yourdiff": "تفاوت‌ها", "copyrightwarning": "لطفاً توجه داشته‌باشید که همهٔ مشارکت‌ها در {{SITENAME}} منتشرشده تحت $2 در نظر گرفته‌می‌شوند (برای جزئیات بیش‌تر $1 را ببینید).\nاگر نمی‌خواهید نوشته‌هایتان بی‌رحمانه ویرایش و توزیع شوند؛ بنابراین، آنها را اینجا ارائه نکنید.
    \nشما همچنین به ما تعهد می‌کنید که خودتان این را نوشته‌اید یا آن را از یک منبع با مالکیت عمومی یا مشابه آزاد آن برداشته‌اید (برای جزئیات بیش‌تر $1 را ببینید).\nکارهای دارای حق تکثیر را بدون اجازه ارائه نکنید!", @@ -749,8 +749,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به نظرمی‌رسد که صفحه حذف شده باشد.", @@ -789,6 +789,7 @@ "parser-template-loop-warning": "حلقه در الگو پیدا شد: [[$1]]", "template-loop-category": "صفحه‌های دارای حلقه در الگو", "template-loop-category-desc": "صفحه دارای حلقه در الگو، مثلا الگویی که از خودش درون خودش استفاده‌کرده‌است.", + "template-loop-warning": "هشدار: این صفحه [[:$1]] را صدا می‌کند که باعث می‌شود در حلقه بسته فراخوانی بیفتد (فراخوانی بی‌پایان)", "parser-template-recursion-depth-warning": "محدودیت عمق بازگشت الگو رد شد ($1)", "language-converter-depth-warning": "محدودیت عمق مبدل زبانی رد شد ($1)", "node-count-exceeded-category": "صفحه‌هایی که از حداکثر تعداد گره تجاوز کرده‌اند", @@ -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": "متفرقه", @@ -1058,6 +1059,7 @@ "timezoneregion-indian": "اقیانوس هند", "timezoneregion-pacific": "اقیانوس آرام", "allowemail": "دریافت ایمیل از دیگر کاربران ممکن باشد", + "email-blacklist-label": "این کاربران را از فرستادن رایانامه به من منع کن:", "prefs-searchoptions": "جستجو", "prefs-namespaces": "فضاهای نام", "default": "پیش‌فرض", @@ -1099,6 +1101,7 @@ "prefs-editor": "ویرایشگر", "prefs-preview": "پیش‌نمایش", "prefs-advancedrc": "گزینه‌های پیشرفته", + "prefs-opt-out": "گزینه برای بهبود", "prefs-advancedrendering": "گزینه‌های پیشرفته", "prefs-advancedsearchoptions": "گزینه‌های پیشرفته", "prefs-advancedwatchlist": "گزینه‌های پیشرفته", @@ -1222,7 +1225,7 @@ "right-mergehistory": "ادغام تاریخچهٔ صفحات", "right-userrights": "ویرایش تمام اختیارات کاربرها", "right-userrights-interwiki": "ویرایش اختیارات کاربرهای ویکی‌های دیگر", - "right-siteadmin": "قفل‌کردن و بازکردن پایگاه داده‌ها", + "right-siteadmin": "قفل‌کردن و بازکردن پایگاه‌های داده", "right-override-export-depth": "برون‌بری صفحه‌ها شامل صفحه‌های پیوند شده تا عمق ۵", "right-sendemail": "ارسال ایمیل به دیگر کاربران", "right-managechangetags": "ایجاد و غیرفعال کردن [[Special:Tags|برچسب‌ها]]", @@ -1304,7 +1307,7 @@ "action-mergehistory": "ادغام تاریخچهٔ این صفحه", "action-userrights": "ویرایش همهٔ اختیارات کاربری", "action-userrights-interwiki": "ویرایش اختیارات کاربری کاربران یک ویکی دیگر", - "action-siteadmin": "قفل‌کردن و بازکردن پایگاه داده‌ها", + "action-siteadmin": "قفل‌کردن و بازکردن پایگاه‌های داده", "action-sendemail": "ارسال ایمیل", "action-editmyoptions": "ویرایش ترجیحاتتان", "action-editmywatchlist": "فهرست پیگیری‌های خود را ویرایش کنید", @@ -1334,8 +1337,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": "برای ذخیره پالایه‌هایتان و استفاده مجدد آنها، در محیط فعال پالایه در پایین بر روی دکمهٔ بوک‌مارک کلیک کنید.", @@ -1347,43 +1362,41 @@ "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-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|پالایهٔ|پالایه‌های}} گسترده‌تری که در ادامه {{PLURAL:$2|آمده‌است|آمده‌اند}} شامل می‌شود (از پررنگ‌کننده برای تمایز استفاده کنید): $1", - "rcfilters-state-message-fullcoverage": "انتخاب تمام پالایه‌ها در یک گروه مثل این است که هیچ‌کدام را انتخاب نکنید، بنابراین پالایه‌ها اثری نداشتند. گروه شامل این موارد است: $1", - "rcfilters-filtergroup-registration": "ثبت نام کاربر", - "rcfilters-filter-registered-label": "ثبت شده", - "rcfilters-filter-registered-description": "ویرایشگران وارد شده به سامانه.", - "rcfilters-filter-unregistered-label": "ثبت‌نام نکرده", - "rcfilters-filter-unregistered-description": "ویرایشگرانی که به سامانه وارد نشده‌اند.", - "rcfilters-filter-unregistered-conflicts-user-experience-level": "این پالایه با {{PLURAL:$2|پالایه|پالایه‌های}} تجربهٔ زیر که فقط کاربران ثبت‌نام شده را {{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-filtergroup-user-experience-level-conflicts-unregistered": "پالایه‌های تجربه فقط کاربران ثبت‌نام کرده را پیدا می‌کنند، در نتیجه با پالایهٔ «کاربران ثبت‌نام نکرده» تعارض دارند.", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "پالایه «کاربران ثبت‌نام نکرده» با یک یا چند مورد از پالایه‌های تجربه در تعارض است. پالایه‌های دیگر در قسمت «پالایه‌های فعال» در بالا نشان داده شده‌اند.", + "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": "ویرایش توسط ابزارهای خودکار.", @@ -1406,6 +1419,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,18 +1436,28 @@ "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": "نشانه‌گذاری تمام تغییرات به‌عنوان خوانده‌شده", + "rcfilters-watchlist-edit-watchlist-button": "ویرایش فهرست صفحه‌های پی‌گیری‌هایتان", + "rcfilters-watchlist-showupdated": "تغییرات صفحاتی که شما بازدید نکردید از زمانی که تغییرات رخ داده به صورت پررنگ، با نشانگر توپر.", + "rcfilters-preference-label": "مخفی کردن نسخه بهبود یافته تغییرات اخیر", + "rcfilters-preference-help": "تغییرات رابط کاربری که در سال ۲۰۱۷ اضافه شده است را بر می‌گرداند.", "rcnotefrom": "در زیر تغییرات از $3, $4 (تا $1 {{PLURAL:$5|نشان داده شده‌است|نشان داده شده‌اند}}).", "rclistfromreset": "از نو کردن انتخاب تاریخ", "rclistfrom": "نمایش تغییرات تازه با شروع از $3 $2", @@ -1486,6 +1514,7 @@ "uploadbtn": "بارگذاری پرونده", "reuploaddesc": "بازگشت به فرم بارگذاری", "upload-tryagain": "ارسال توضیحات تغییر یافته پرونده", + "upload-tryagain-nostash": "فرستادن پرونده دوباره بارگذاری شده و توضیحات تغییر یافته", "uploadnologin": "به سامانه وارد نشده‌اید", "uploadnologintext": "برای بارگذاری پرونده باید $1.", "upload_directory_missing": "شاخهٔ بارگذاری ($1) وجود ندارد و قابل ایجاد نیست.", @@ -1545,6 +1574,7 @@ "file-deleted-duplicate-notitle": "یک پرونده یکسان بااین پرونده قبلاً حذف شده است و عنوان متوقف شده‌است.\nشما باید از کسی که دسترسی مشاهدهٔ پرونده متوقف شده را دارد، درخواست کنید تا شرایط را قبل از بارگذاری مجدد بررسی کند.", "uploadwarning": "هشدار بارگذاری", "uploadwarning-text": "لطفاً توضیحات پرونده را در زیر تغییر دهید و دوباره تلاش کنید.", + "uploadwarning-text-nostash": "لطفا پرونده را دوباره بارگذاری کنید، توضیحات را تغییر دهید و دوباره سعی کنید.", "savefile": "ذخیرهٔ پرونده", "uploaddisabled": "بارگذاری غیرفعال است.", "copyuploaddisabled": "بارگذاری از طریق نشانی اینترنتی غیرفعال است.", @@ -1706,7 +1736,7 @@ "listfiles_size": "اندازه", "listfiles_description": "توضیح", "listfiles_count": "نسخه‌ها", - "listfiles-show-all": "شامل نسخه‌های قدیمی عکس‌ها", + "listfiles-show-all": "شامل نسخه‌های قدیمی پرونده‌ها", "listfiles-latestversion": "نسخهٔ فعلی", "listfiles-latestversion-yes": "بله", "listfiles-latestversion-no": "خیر", @@ -1809,6 +1839,8 @@ "pageswithprop-legend": "صفحه‌های دارای خاصیت صفحه", "pageswithprop-text": "این صفحه فهرستی است از صفحه‌هایی که از یک خاصیت صفحهٔ خاص استفاده می‌کنند.", "pageswithprop-prop": "نام خاصیت:", + "pageswithprop-reverse": "ترتیب برعکس", + "pageswithprop-sortbyvalue": "ترتیب بر اساس مقدار ویژگی", "pageswithprop-submit": "برو", "pageswithprop-prophidden-long": "جزییات مخفی متن طولانی ($1)", "pageswithprop-prophidden-binary": "جزییات مقدار مخفی باینری ($1)", @@ -1941,6 +1973,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": "درخواست آدرس:", @@ -2110,7 +2143,7 @@ "unwatchthispage": "توقف پی‌گیری", "notanarticle": "صفحه محتوایی نیست", "notvisiblerev": "آخرین نسخه توسط کاربری دیگر حذف شده‌است", - "watchlist-details": "بدون احتساب صفحه‌های جداگانهٔ بحث، {{PLURAL:$1|$1 صفحه|$1 صفحه}} در فهرست پی‌گیری‌های شما قرار {{PLURAL:$1|دارد|دارند}}.", + "watchlist-details": "{{PLURAL:$1|$1 صفحه|$1 صفحه}} در فهرست پی‌گیری‌های شما قرار {{PLURAL:$1|دارد|دارند}}.", "wlheader-enotif": "ایمیل‌های اعلان فعال است.", "wlheader-showupdated": "صفحه‌هایی که پس از آخرین بازدید شما تغییر کرده‌اند پررنگ نمایش داده شده‌اند.", "wlnote": "در زیر {{PLURAL:$1|تغییری|$1 تغییری}} که در {{PLURAL:$2|ساعت|$2 ساعت}} گذشته انجام شده موجود است، تاریخ آخرین بازیابی: $3، $4", @@ -2145,6 +2178,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": "حذف صفحه", @@ -2156,7 +2190,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 مراجعه کنید.", @@ -2173,6 +2207,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 ویرایش", @@ -2214,7 +2249,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»", @@ -2291,6 +2326,7 @@ "undelete-search-title": "جستجوی صفحه‌های حذف‌شده", "undelete-search-box": "جستجوی صفحه‌های حذف‌شده.", "undelete-search-prefix": "نمایش صفحات با شروع از:", + "undelete-search-full": "نمایش صفحه‌هایی که عنوانشان شامل این عبارات است:", "undelete-search-submit": "برو", "undelete-no-results": "هیچ صفحهٔ منطبقی در بایگانی حذف‌شده‌ها یافت نشد.", "undelete-filename-mismatch": "امکان احیای نسخهٔ $1 وجود ندارد: نام پرونده مطابقت نمی‌کند.", @@ -2337,6 +2373,7 @@ "sp-contributions-newonly": "فقط نمایش ویرایش‌هایی که ایجاد صفحه هستند", "sp-contributions-hideminor": "پنهان کردن ویرایش‌های جزئی", "sp-contributions-submit": "جستجو", + "sp-contributions-outofrange": "قادر به نمایش نتیجه‌ای نیست. محدوده IP درخواست شده بزرگتر از حد CIDR /$1 است.", "whatlinkshere": "پیوندها به این صفحه", "whatlinkshere-title": "صفحه‌هایی که به «$1» پیوند دارند", "whatlinkshere-page": "صفحه:", @@ -2625,7 +2662,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» وارد نشد، چون شما مجاز به ایجاد آن نیستید.", @@ -3449,7 +3486,7 @@ "fileduplicatesearch-noresults": "پرونده‌ای با نام «$1» یافت نشد.", "specialpages": "صفحه‌های ویژه", "specialpages-note-top": "شرح علائم", - "specialpages-note": "* صفحه‌های ویژهٔ عادی.\n* صفحه‌های ویژهٔ محدودشده.", + "specialpages-note-restricted": "* صفحه‌های ویژهٔ معمولی.\n* صفحه‌های ویژهٔ محدودشده.", "specialpages-group-maintenance": "گزارش‌های نگهداری", "specialpages-group-other": "سایر صفحه‌های ویژه", "specialpages-group-login": "ورود / ثبت نام", @@ -3568,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)", @@ -3974,6 +4018,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 4a548dc264..5fd444aab1 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,10 +707,9 @@ "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.'''", "editingold": "'''Varoitus: Olet muokkaamassa vanhaa versiota tämän sivun tekstistä. Jos tallennat sen, kaikki tämän version jälkeen tehdyt muutokset katoavat.'''", "yourdiff": "Eroavaisuudet", "copyrightwarning": "'''Muutoksesi astuvat voimaan välittömästi.''' Kaikki {{GRAMMAR:illative|{{SITENAME}}}} tehtävät tuotokset katsotaan julkaistuksi $2 -lisenssin mukaisesti ($1). Jos et halua, että kirjoitustasi muokataan armottomasti ja uudelleenkäytetään vapaasti, älä tallenna kirjoitustasi. Tallentamalla muutoksesi lupaat, että kirjoitit tekstisi itse, tai kopioit sen jostain vapaasta lähteestä. '''ÄLÄ KÄYTÄ TEKIJÄNOIKEUDEN ALAISTA MATERIAALIA ILMAN LUPAA!'''", @@ -737,8 +737,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.", @@ -775,6 +775,7 @@ "post-expand-template-argument-warning": "'''Varoitus:''' Tällä sivulla on ainakin yksi mallineen muuttuja, jonka sisällytetty koko on liian suuri.\nNämä muuttujat on jätetty käsittelemättä.", "post-expand-template-argument-category": "Käsittelemättömiä mallinemuuttujia sisältävät sivut", "parser-template-loop-warning": "Mallinesilmukka havaittu: [[$1]]", + "template-loop-category": "Sivut joilla on mallinesilmukoita", "parser-template-recursion-depth-warning": "Mallineen rekursioraja ylittyi ($1)", "language-converter-depth-warning": "Kielimuuntimen syvyysraja ylittyi ($1)", "node-count-exceeded-category": "Sivut, joissa solmumäärä on ylitetty", @@ -1003,7 +1004,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", @@ -1316,52 +1317,66 @@ "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-quickfilters": "Tallennetut suodatinasetukset", + "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-quickfilters-placeholder-description": "Tallentaaksesi suodatinasetuksesi ja käyttääksesi niitä myöhemmin, napsauta kirjanmerkkikuvaketta alla olevalla \"Aktiiviset suodattimet\" -alueella.", "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-apply-label": "Tallenna asetukset", + "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.", "rcfilters-filterlist-title": "Suodattimet", - "rcfilters-filterlist-whatsthis": "Mikä tämä on?", - "rcfilters-filterlist-feedbacklink": "Anna palautetta uusista (beta) suodattimista", + "rcfilters-filterlist-whatsthis": "Miten nämä toimivat?", + "rcfilters-filterlist-feedbacklink": "Kerro mielipiteesi (uusista) suodattimista", "rcfilters-highlightbutton-title": "Korosta tulokset", "rcfilters-highlightmenu-title": "Valitse väri", "rcfilters-highlightmenu-help": "Valitse korostusväri tälle ominaisuudelle", "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-filtergroup-registration": "Käyttäjän rekisteröinti", - "rcfilters-filter-registered-label": "Rekisteröitynyt", - "rcfilters-filter-registered-description": "Sisäänkirjautuneiden muokkaukset.", - "rcfilters-filter-unregistered-label": "Rekisteröimätön", - "rcfilters-filter-unregistered-description": "Muokkaajat, jotka eivät ole kirjautuneet sisään.", - "rcfilters-filter-unregistered-conflicts-user-experience-level": "Tämä suodatin on ristiriidassa seuraavien kokemustaso {{PLURAL:$2|suodattimen|suodattimien}} kanssa, {{PLURAL:$2|joka|jotka}} löytävät vain rekisteröityneitä käyttäjiä: $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.", - "rcfilters-filtergroup-userExpLevel": "Kokemustaso (vain rekisteröityneet käyttäjät)", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Kokemustaso suodattimet löytävät vain rekisteröityneitä käyttäjiä, joten tämä suodatin on ristiriidassa \"Rekisteröimätön\" -suodattimen kanssa.", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "\"Rekisteröimätön\" -suodatin on ristiriidassa yhden tai useamman kokemustaso suodattimen kanssa, joka löytää vain rekisteröityneitä käyttäjiä. Ristiriidassa oleva suodatin on merkittynä Aktiivisissa suodattimissa, yläpuolella.", + "rcfilters-filtergroup-userExpLevel": "Käyttäjän rekisteröinti ja kokemus", + "rcfilters-filter-user-experience-level-registered-label": "Rekisteröitynyt", + "rcfilters-filter-user-experience-level-registered-description": "Sisäänkirjautuneet muokkaajat.", + "rcfilters-filter-user-experience-level-unregistered-label": "Rekisteröimätön", + "rcfilters-filter-user-experience-level-unregistered-description": "Muokkaajat, jotka eivät ole kirjautuneet sisään.", "rcfilters-filter-user-experience-level-newcomer-label": "Tulokkaat", - "rcfilters-filter-user-experience-level-newcomer-description": "Vähemmän kuin 10 muokkausta ja 4 päivää aktiivisuutta.", + "rcfilters-filter-user-experience-level-newcomer-description": "Rekisteröityneet muokkaajat, joilla vähemmän kuin 10 muokkausta ja 4 päivää aktiivisuutta.", "rcfilters-filter-user-experience-level-learner-label": "Oppijat", - "rcfilters-filter-user-experience-level-learner-description": "Enemmän kokemusta kuin \"tulokkailla\", mutta vähemmän kuin \"kokeneilla käyttäjillä\".", + "rcfilters-filter-user-experience-level-learner-description": "Rekisteröityneet muokkaajat, joiden kokemus on välillä \"tulokas\" ja \"kokenut käyttäjä\".", "rcfilters-filter-user-experience-level-experienced-label": "Kokeneet käyttäjät", - "rcfilters-filter-user-experience-level-experienced-description": "Enemmän kuin 30 päivää aktiivisuutta ja 500 muokkausta.", + "rcfilters-filter-user-experience-level-experienced-description": "Rekisteröityneet muokkaajat, joilla enemmän kuin 500 muokkausta ja 30 päivää aktiivisuutta.", "rcfilters-filtergroup-automated": "Automatisoidut muutokset", "rcfilters-filter-bots-label": "Botti", "rcfilters-filter-bots-description": "Automaattisilla työkaluilla tehdyt muokkaukset.", @@ -1381,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", @@ -1389,16 +1405,28 @@ "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-filter-excluded": "Poissuljettu", + "rcfilters-tag-prefix-namespace-inverted": ":ei $1", + "rcfilters-exclude-button-off": "Poissulje valitut", + "rcfilters-exclude-button-on": "Poissuljetaan valitut", + "rcfilters-view-advanced-filters-label": "Kehittyneet suodattimet", + "rcfilters-view-namespaces-tooltip": "Suodata tuloksia nimiavaruuden mukaan", + "rcfilters-view-tags-tooltip": "Suodata tuloksia käyttäen merkkauksia", + "rcfilters-liveupdates-button": "Live-päivitykset", + "rcfilters-watchlist-markseen-button": "Merkitse kaikki muutokset nähdyiksi", + "rcfilters-watchlist-edit-watchlist-button": "Muokkaa tarkkailemiasi sivuja", + "rcfilters-watchlist-showupdated": "Muutokset sivuihin, joilla et ole vieraillut sen jälkeen kun muutokset on tehty, on lihavoitu ja värimerkitty.", "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ä", @@ -1670,7 +1698,7 @@ "listfiles_size": "Koko", "listfiles_description": "Kuvaus", "listfiles_count": "Versioita", - "listfiles-show-all": "Näytä myös kuvien vanhemmat versiot", + "listfiles-show-all": "Näytä myös tiedostojen vanhemmat versiot", "listfiles-latestversion": "Uusin versio", "listfiles-latestversion-yes": "Kyllä", "listfiles-latestversion-no": "Ei", @@ -2098,6 +2126,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", @@ -2575,7 +2604,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ä.", @@ -2603,6 +2632,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ä", @@ -2806,6 +2836,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", @@ -3367,7 +3398,6 @@ "fileduplicatesearch-noresults": "Tiedostoa nimeltä ”$1” ei löytynyt.", "specialpages": "Toimintosivut", "specialpages-note-top": "Merkkien selitys", - "specialpages-note": "* Normaalit toimintosivut.\n* Rajoitetut toimintosivut.", "specialpages-group-maintenance": "Sivujen huoltaminen", "specialpages-group-other": "Muut", "specialpages-group-login": "Sisäänkirjautuminen ja tunnusten luonti", @@ -3417,7 +3447,7 @@ "tags-create-reason": "Syy:", "tags-create-submit": "Luo", "tags-create-no-name": "Sinun täytyy antaa merkkaukselle nimi.", - "tags-create-invalid-chars": "Merkkausten nimissä ei saa olla pilkkuja (,) tai kauttaviivoja (/).", + "tags-create-invalid-chars": "Merkkausten nimissä ei saa olla pilkkuja (,), putkia (|) tai kauttaviivoja (/).", "tags-create-invalid-title-chars": "Merkkausten nimissä ei saa olla sellaisia merkkejä, joita ei voida käyttää sivujen nimissä.", "tags-create-already-exists": "Merkkaus \"$1\" on jo olemassa.", "tags-create-warnings-above": "{{PLURAL:$2|Seuraava varoitus|Seuraavat varoitukset}} ilmenivät, kun yritettiin luoda merkkausta \"$1\":", @@ -3486,6 +3516,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 f818043ec0..c7670b300a 100644 --- a/languages/i18n/fr.json +++ b/languages/i18n/fr.json @@ -153,12 +153,17 @@ "Benoit Rochon", "Fitoschido", "Archaeodontosaurus", - "Trizek (WMF)" + "Trizek (WMF)", + "Framawiki", + "Jona", + "Epok", + "DePlusJean", + "Pierpao" ] }, "tog-underline": "Soulignement des liens :", "tog-hideminor": "Masquer les modifications mineures dans les modifications récentes", - "tog-hidepatrolled": "Masquer les modifications vérifiées dans les modifications récentes", + "tog-hidepatrolled": "Masquer les modifications relues dans les modifications récentes", "tog-newpageshidepatrolled": "Masquer les pages relues dans la liste des nouvelles pages", "tog-hidecategorization": "Masquer la catégorisation des pages", "tog-extendwatchlist": "Étendre la liste de suivi pour afficher toutes les modifications et pas uniquement les plus récentes", @@ -173,23 +178,24 @@ "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", "tog-oldsig": "Votre signature actuelle :", "tog-fancysig": "Traiter la signature comme du wikitexte (sans lien automatique)", - "tog-uselivepreview": "Utiliser l’aperçu rapide", + "tog-uselivepreview": "Afficher les aperçus sans recharger la page", "tog-forceeditsummary": "M’avertir lorsque je n’ai pas spécifié de résumé de modification", "tog-watchlisthideown": "Masquer mes propres modifications dans la liste de suivi", "tog-watchlisthidebots": "Masquer les modifications faites par des robots dans la liste de suivi", "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", @@ -198,7 +204,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", @@ -245,18 +251,18 @@ "october-gen": "octobre", "november-gen": "novembre", "december-gen": "décembre", - "jan": "jan", - "feb": "fév", - "mar": "mar", - "apr": "avr", + "jan": "janv.", + "feb": "fév.", + "mar": "mars", + "apr": "avr.", "may": "mai", "jun": "juin", - "jul": "juil", + "jul": "juill.", "aug": "août", - "sep": "sep", - "oct": "oct", - "nov": "nov", - "dec": "déc", + "sep": "sept.", + "oct": "oct.", + "nov": "nov.", + "dec": "déc.", "january-date": "{{PLURAL:$1|1=1ᵉʳ|$1}} janvier", "february-date": "{{PLURAL:$1|1=1ᵉʳ|$1}} février", "march-date": "{{PLURAL:$1|1=1ᵉʳ|$1}} mars", @@ -292,7 +298,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.", @@ -311,16 +317,16 @@ "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", + "searcharticle": "Continuer", "history": "Historique de la page", "history_short": "Historique", "history_small": "historique", "updatedmarker": "modifié depuis ma dernière visite", "printableversion": "Version imprimable", - "permalink": "Adresse permanente", + "permalink": "Lien permanent", "print": "Imprimer", "view": "Lire", "view-foreign": "Voir sur $1", @@ -354,7 +360,7 @@ "redirectedfrom": "(Redirigé depuis $1)", "redirectpagesub": "Page de redirection", "redirectto": "Rediriger vers :", - "lastmodifiedat": "Cette page a été modifiée pour la dernière fois le $1 à $2.", + "lastmodifiedat": "La dernière modification de cette page a été faite le $1 à $2.", "viewcount": "Cette page {{PLURAL:$1|0=n’a jamais été consultée|1=a été consultée une seule fois|a été consultée $1 fois}}.", "protectedpage": "Page protégée", "jumpto": "Aller à :", @@ -368,22 +374,22 @@ "pool-servererror": "Le service de réservation n’est pas disponible ($1).", "poolcounter-usage-error": "Erreur d’utilisation : $1", "aboutsite": "À propos de {{SITENAME}}", - "aboutpage": "Project:À propos", + "aboutpage": "Project:À propos de", "copyright": "Le contenu est disponible sous licence $1 sauf mention contraire.", "copyrightpage": "{{ns:project}}:Copyrights", "currentevents": "Actualités", - "currentevents-url": "Project:Actualités", + "currentevents-url": "Project: Actualités", "disclaimers": "Avertissements", - "disclaimerpage": "Project:Avertissements généraux", + "disclaimerpage": "Project: Avertissements généraux", "edithelp": "Aide pour l'édition", "helppage-top-gethelp": "Aide", "mainpage": "Accueil", "mainpage-description": "Accueil", "policy-url": "Project:Règles", "portal": "Communauté", - "portal-url": "Project:Accueil", + "portal-url": "Project: Portail communautaire", "privacy": "Politique de confidentialité", - "privacypage": "Project:Confidentialité", + "privacypage": "Project: Politique de confidentialité", "badaccess": "Erreur de permissions", "badaccess-group0": "Vous n’avez pas les droits suffisants pour réaliser l’action demandée.", "badaccess-groups": "L’action que vous essayez de réaliser n’est permise qu’aux utilisateurs {{PLURAL:$2|du groupe|d’un des groupes}} : $1.", @@ -459,7 +465,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", @@ -485,7 +491,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.", @@ -504,7 +510,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.", @@ -519,13 +525,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", @@ -582,7 +588,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", @@ -597,20 +603,20 @@ "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}}.", "passwordtoolong": "Les mots de passe ne peuvent pas dépasser $1 caractère{{PLURAL:$1||s}}.", "passwordtoopopular": "Les mots de passe trop courants ne peuvent pas être utilisés. Veuillez choisir un mot de passe plus original.", "password-name-match": "Votre mot de passe doit être différent de votre nom d’utilisateur.", - "password-login-forbidden": "L’utilisation de ce nom d’utilisateur et/ou de ce mot de passe a été interdite.", + "password-login-forbidden": "L’utilisation de ce nom d’utilisateur ou de ce mot de passe a été interdite.", "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}}.", @@ -620,7 +626,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éé", @@ -675,12 +681,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 robot nommé « $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.", @@ -819,8 +825,8 @@ "explainconflict": "Cette page a été changée après que vous avez commencé à la modifier.\nLa zone de modification supérieure contient le texte tel qu’il est actuellement enregistré dans la base de données.\nVos modifications apparaissent dans la zone de modification inférieure.\nVous allez devoir fusionner vos modifications dans le texte existant.\nSeul le texte de la zone supérieure sera sauvegardé si vous cliquez sur « $1 ».", "yourtext": "Votre texte", "storedversion": "La version enregistrée", - "nonunicodebrowser": "Attention : votre navigateur ne prend pas en charge l’Unicode.\nUn palliatif est en place vous permettant de modifier les pages en toute sécurité, faisant apparaître les caractères non-ASCII sous forme hexadécimale dans la boîte de modification.", "editingold": "Attention : vous êtes en train de modifier une ancienne version de cette page.\nSi vous la publiez, toutes les modifications effectuées depuis cette version seront perdues.", + "unicode-support-fail": "Votre navigateur semble ne pas rendre en charge l'Unicode. Ceci est nécessaire pour modifier les pages, aussi vos modifications n'ont pas été sauvegardées.", "yourdiff": "Différences", "copyrightwarning": "Toutes les contributions à {{SITENAME}} sont considérées comme publiées sous les termes de la $2 (voir $1 pour plus de détails). \nSi vous ne désirez pas que vos écrits soient modifiés et distribués à volonté, merci de ne pas les soumettre ici.
    \nVous nous promettez aussi que vous avez écrit ceci vous-même, ou que vous l’avez copié d’une source provenant du domaine public ou d’une ressource libre similaire. \nN’UTILISEZ PAS DE TRAVAUX SOUS DROIT D’AUTEUR SANS AUTORISATION EXPRESSE !", "copyrightwarning2": "Notez bien que toutes les contributions à {{SITENAME}} peuvent être modifiées, transformées ou supprimées par d’autres utilisateurs. \nSi vous ne désirez pas que vos écrits soient modifiés contre votre gré, merci de ne pas les soumettre ici.
    \nVous nous promettez aussi que vous avez écrit ceci vous-même, ou que vous l’avez copié d’une source provenant du domaine public, ou d’une ressource libre. (voir $1 pour plus de détails).\nN’UTILISEZ PAS DE TRAVAUX SOUS DROIT D’AUTEUR SANS AUTORISATION EXPRESSE !", @@ -848,8 +854,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.", @@ -889,6 +895,7 @@ "parser-template-loop-warning": "Modèle en boucle détecté : [[$1]]", "template-loop-category": "Pages avec des boucles de modèle", "template-loop-category-desc": "La page contient une boucle dans le modèle, c.à.d. un modèle qui s’appelle lui-même récursivement.", + "template-loop-warning": "Avertissement : Cette page appelle [[:$1]] ce qui provoque une boucle de modèles (un appel récursif infini).", "parser-template-recursion-depth-warning": "Limite de profondeur des appels récursifs de modèles dépassée ($1)", "language-converter-depth-warning": "Limite de profondeur du convertisseur de langue dépassée ($1)", "node-count-exceeded-category": "Pages dépassant le nombre de nœuds maximal", @@ -1119,7 +1126,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", @@ -1159,6 +1166,7 @@ "timezoneregion-indian": "Océan indien", "timezoneregion-pacific": "Océan pacifique", "allowemail": "Autoriser l'envoi de courriels venant d'autres utilisateurs", + "email-blacklist-label": "Empêcher ces utilisateurs de m'envoyer des courriels :", "prefs-searchoptions": "Recherche", "prefs-namespaces": "Espaces de noms", "default": "défaut", @@ -1185,7 +1193,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.", @@ -1200,6 +1208,7 @@ "prefs-editor": "Éditeur", "prefs-preview": "Aperçu", "prefs-advancedrc": "Options avancées", + "prefs-opt-out": "Refuser les améliorations", "prefs-advancedrendering": "Options avancées", "prefs-advancedsearchoptions": "Options avancées", "prefs-advancedwatchlist": "Options avancées", @@ -1437,9 +1446,20 @@ "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", + "rcfilters-grouping-title": "Regroupement", "rcfilters-activefilters": "Filtres actifs", "rcfilters-advancedfilters": "Filtres avancés", + "rcfilters-limit-title": "Modifications à afficher", + "rcfilters-limit-shownum": "Afficher {{PLURAL:$1|la dernière modification|les $1 dernières modifications}}", + "rcfilters-days-title": "Derniers jours", + "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.", @@ -1451,43 +1471,41 @@ "rcfilters-savedqueries-new-name-label": "Nom", "rcfilters-savedqueries-new-name-placeholder": "Décrire l'objet du filtre", "rcfilters-savedqueries-apply-label": "Créer un filtre", + "rcfilters-savedqueries-apply-and-setdefault-label": "Créer le filtre par défaut", "rcfilters-savedqueries-cancel-label": "Annuler", "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 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.", "rcfilters-filterlist-title": "Filtres", - "rcfilters-filterlist-whatsthis": "Qu’est-ce que c'est ?", - "rcfilters-filterlist-feedbacklink": "Fournir un commentaire sur les nouveaux filtres (en bêta)", + "rcfilters-filterlist-whatsthis": "Comment ça marche ?", + "rcfilters-filterlist-feedbacklink": "Nous dire ce que vous pensez de ces (nouveaux) outils de filtrage", "rcfilters-highlightbutton-title": "Mettre en valeur les résultats", "rcfilters-highlightmenu-title": "Choisir une couleur", "rcfilters-highlightmenu-help": "Sélectionner une couleur pour mettre en évidence cette propriété", "rcfilters-filterlist-noresults": "Aucun filtre trouvé", "rcfilters-noresults-conflict": "Aucun résultat trouvé car les critères de recherche sont en conflit", "rcfilters-state-message-subset": "Ce filtre n'a aucun effet, parce que ses résultats sont inclus dans ceux de la recherche suivante, {{PLURAL:$2|filtre plus étendu|filtres plus étendus}} (essayez la mise en forme pour le différencier): $1", - "rcfilters-state-message-fullcoverage": "Sélectionner tous les filtres dans un groupe est la même chose que d'en sélectionner aucun, aussi ce filtre n'a aucun effet. Le groupe comprend: $1", - "rcfilters-filtergroup-registration": "Inscription de l’utilisateur", - "rcfilters-filter-registered-label": "Connectés", - "rcfilters-filter-registered-description": "Éditeurs connectés.", - "rcfilters-filter-unregistered-label": "Non connectés", - "rcfilters-filter-unregistered-description": "Éditeurs qui ne sont pas connectés.", - "rcfilters-filter-unregistered-conflicts-user-experience-level": "Ce filtre est en conflit avec le{{PLURAL:$2| filtre|s filtres}} Experience suivant, qui ne {{PLURAL:$2|trouve|trouvent}} que des utilisateurs inscrits : $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.", "rcfilters-filter-editsbyother-label": "Modifications faites par les autres.", "rcfilters-filter-editsbyother-description": "Toutes les modifications sauf les votres.", - "rcfilters-filtergroup-userExpLevel": "Niveau d’expérience (uniquement pour les utilisateurs enregistrés)", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Les filtres Experience ne trouvent que des utilisateurs enregistrés, et ce filtre est en conflit avec le filtre \"non enregistré\".", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Le filtre \"non enregistrés\" est en conflit avec un ou plusieurs filtres Expérience, qui ne trouvent que les utilisateurs inscrits seulement. Les filtres en conflit sont marqués dans le champ des filtres actifs, ci-dessus.", + "rcfilters-filtergroup-userExpLevel": "Enregistrement des utilisateurs et expérience", + "rcfilters-filter-user-experience-level-registered-label": "Connecté", + "rcfilters-filter-user-experience-level-registered-description": "Éditeurs connectés.", + "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": "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": "Plus expérimenté que les « Nouveaux arrivants » mais moins que les « 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": "Plus de 30 jours d’activité et 500 modifications", + "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.", @@ -1510,6 +1528,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…", @@ -1522,18 +1545,28 @@ "rcfilters-hideminor-conflicts-typeofchange-global": "Le filtre « Modifications mineures » est en conflit avec au moins un filtre de Type de modification, parce que certains types de modification ne peuvent être marqués comme « mineurs ». Les filtres en conflit sont marqués dans la zone Filtres actifs ci-dessus.", "rcfilters-hideminor-conflicts-typeofchange": "Certains types de modification ne peuvent pas être qualifiés de « mineurs », donc ce filtre est en conflit avec les filtres de Type de modification suivants : $1", "rcfilters-typeofchange-conflicts-hideminor": "Ce filtre de Type de modification est en conflit avec le filtre « Modifications mineures ». Certains type sde modification ne peuvent pas être indiqués comme « mineurs ».", - "rcfilters-filtergroup-lastRevision": "Version actuelle", - "rcfilters-filter-lastrevision-label": "Version actuelle", - "rcfilters-filter-lastrevision-description": "Dernière modification apportée à une page.", - "rcfilters-filter-previousrevision-label": "Versions précédentes", - "rcfilters-filter-previousrevision-description": "Toutes les modifications apportées à une page et qui ne sont pas la dernière.", + "rcfilters-filtergroup-lastRevision": "Dernières révisions", + "rcfilters-filter-lastrevision-label": "Dernière révision", + "rcfilters-filter-lastrevision-description": "Uniquement la dernière modification apportée à une page.", + "rcfilters-filter-previousrevision-label": "Pas la dernière version", + "rcfilters-filter-previousrevision-description": "Toutes les modifications apportées à une page et qui ne concernent pas la « dernière version ».", "rcfilters-filter-excluded": "Exclu", "rcfilters-tag-prefix-namespace-inverted": ":not $1", + "rcfilters-exclude-button-off": "Exclure les sélectionnés", + "rcfilters-exclude-button-on": "Sélectionnés exclus", + "rcfilters-view-advanced-filters-label": "Filtres avancés", "rcfilters-view-tags": "Modifications marquées", "rcfilters-view-namespaces-tooltip": "Résultats du filtrage par espace de noms", "rcfilters-view-tags-tooltip": "Résultats du filtrage par balise d'édition", "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 dès qu'ils se produisent", + "rcfilters-watchlist-markseen-button": "Marquer toutes les modifications comme vues", + "rcfilters-watchlist-edit-watchlist-button": "Modifier votre liste de pages suivies", + "rcfilters-watchlist-showupdated": "Les modifications faites aux pages que vous n’avez pas visitées depuis qu’elles ont été modifiées sont en gras, avec des balises unies.", + "rcfilters-preference-label": "Masquer la version améliorée des modifications récentes", + "rcfilters-preference-help": "Restitue la version 2017 de l'interface ainsi que de tous les outils ajoutés alors et depuis.", "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", @@ -1592,6 +1625,7 @@ "uploadbtn": "Importer le fichier", "reuploaddesc": "Annuler l'importation et retourner au formulaire d'import", "upload-tryagain": "Envoyer la description du fichier modifiée", + "upload-tryagain-nostash": "Soumettre un fichier téléchargé de nouveau avec une description modifiée", "uploadnologin": "Non connecté", "uploadnologintext": "Vous devez vous $1 pour importer des fichiers.", "upload_directory_missing": "Le répertoire d’import de fichier ($1) est introuvable et n’a pas pu être créé par le serveur web.", @@ -1651,6 +1685,7 @@ "file-deleted-duplicate-notitle": "Un fichier identique à ce fichier a déjà été supprimé ainsi que le titre. \nVous devriez demander à quelqu'un la possibilité de vérifier le journal de ce fichier supprimé afin d'examiner la situation avant de l'importer à nouveau.", "uploadwarning": "Attention !", "uploadwarning-text": "Modifiez la description du fichier et essayez de nouveau.", + "uploadwarning-text-nostash": "Veuillez télécharger de nouveau le fichier, modifier la description ci-dessous et réessayer.", "savefile": "Sauvegarder le fichier", "uploaddisabled": "Désolé, l’import de fichiers est désactivé.", "copyuploaddisabled": "Import de fichier par URL désactivé.", @@ -1813,7 +1848,7 @@ "listfiles_size": "Taille", "listfiles_description": "Description", "listfiles_count": "Versions", - "listfiles-show-all": "Inclure les anciennes versions des images", + "listfiles-show-all": "Inclure les anciennes versions des fichiers", "listfiles-latestversion": "Version actuelle", "listfiles-latestversion-yes": "Oui", "listfiles-latestversion-no": "Non", @@ -1827,7 +1862,7 @@ "filehist-datetime": "Date et heure", "filehist-thumb": "Vignette", "filehist-thumbtext": "Vignette pour la version du $1", - "filehist-nothumb": "Pas de miniature", + "filehist-nothumb": "Aucune miniature", "filehist-user": "Utilisateur", "filehist-dimensions": "Dimensions", "filehist-filesize": "Taille du fichier", @@ -1917,6 +1952,8 @@ "pageswithprop-legend": "Pages avec une propriété de page", "pageswithprop-text": "Cette page liste les pages qui utilisent une propriété de page particulière.", "pageswithprop-prop": "Nom de la propriété :", + "pageswithprop-reverse": "Trier en ordre inverse", + "pageswithprop-sortbyvalue": "Trier par valeur de propriété", "pageswithprop-submit": "Lister", "pageswithprop-prophidden-long": "valeur de propriété de texte long masquée ($1)", "pageswithprop-prophidden-binary": "valeur de propriété binaire masquée ($1)", @@ -2219,7 +2256,7 @@ "unwatchthispage": "Ne plus suivre", "notanarticle": "Ce n'est pas une page de contenu", "notvisiblerev": "La dernière version relue par un utilisateur différent, a été supprimée", - "watchlist-details": "{{PLURAL:$1|$1 page|$1 pages}} dans votre liste de suivi, sans compter les pages de discussion.", + "watchlist-details": "{{PLURAL:$1|$1 page est|$1 pages sont}} dans votre liste de suivi (plus les pages de discussion).", "wlheader-enotif": "La notification par courriel est activée.", "wlheader-showupdated": "Les pages qui ont été modifiées depuis votre dernière visite sont affichées en gras.", "wlnote": "Ci-dessous {{PLURAL:$1|figure la dernière modification effectuée|figurent les $1 dernières modifications effectuées}} durant {{PLURAL:$2|la dernière heure|les $2 dernières heures}}, jusqu'au $3, $4.", @@ -2254,6 +2291,7 @@ "enotif_lastdiff": "Pour visualiser ces changements, voyez $1", "enotif_anon_editor": "utilisateur non-enregistré $1", "enotif_body": "{{GENDER:$WATCHINGUSERNAME|Cher|Chère|Cher}} $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nRésumé du contributeur : $PAGESUMMARY $PAGEMINOREDIT\n\nContactez ce contributeur :\ncourriel : $PAGEEDITOR_EMAIL\nwiki : $PAGEEDITOR_WIKI\n\nIl n’y aura pas d’autres notifications en cas de changements ultérieurs, à moins que vous ne visitiez cette page une fois connecté. Vous pouvez aussi réinitialiser les drapeaux de notification pour toutes les pages de votre liste de suivi.\n\nVotre système de notification de {{SITENAME}}\n\n--\nPour modifier les paramètres de notification par courriel, visitez\n{{canonicalurl:{{#special:Preferences}}}}\n\nPour modifier les paramètres de votre liste de suivi, visitez\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nPour supprimer la page de votre liste de suivi, visitez\n$UNWATCHURL\n\nRetour et assistance :\n$HELPPAGE", + "enotif_minoredit": "C’est une modification mineure", "created": "créée", "changed": "modifiée", "deletepage": "Supprimer la page", @@ -2282,6 +2320,7 @@ "delete-warning-toobig": "Cette page possède un historique important de modifications, dépassant $1 version{{PLURAL:$1||s}}.\nLa supprimer peut perturber le fonctionnement de la base de données de {{SITENAME}} ;\nveuillez procéder avec prudence.", "deleteprotected": "Vous ne pouvez pas supprimer cette page car elle a été protégée.", "deleting-backlinks-warning": "Attention : [[Special:WhatLinksHere/{{FULLPAGENAME}}|D’autres pages]] ont un lien vers ou incorporent la page que vous allez supprimer.", + "deleting-subpages-warning": "Attention : la page que vous essayez de supprimer possède [[Special:PrefixIndex/{{FULLPAGENAME}}/|{{PLURAL:$1|une sous-page|$1 sous-pages|51=plus de 50 sous-pages}}]].", "rollback": "Révoquer les modifications", "rollbacklink": "révoquer", "rollbacklinkcount": "révoquer $1 {{PLURAL:$1|modification|modifications}}", @@ -2447,6 +2486,7 @@ "sp-contributions-newonly": "Afficher uniquement les modifications qui sont des créations de page", "sp-contributions-hideminor": "Masquer les modifications mineures", "sp-contributions-submit": "Rechercher", + "sp-contributions-outofrange": "Impossible d’afficher un quelconque résultat. L’intervalle d’adresses IP est plus grand que la limite CIDR de /$1.", "whatlinkshere": "Pages liées", "whatlinkshere-title": "Pages qui pointent vers « $1 »", "whatlinkshere-page": "Page :", @@ -2572,7 +2612,7 @@ "ip_range_invalid": "Plage d’adresses IP incorrecte.", "ip_range_toolarge": "Les plages de blocage plus grandes que /$1 ne sont pas autorisées.", "proxyblocker": "Bloqueur de mandataires", - "proxyblockreason": "Votre adresse IP a été bloquée car il s'agit d'un mandataire ouvert.\nVeuillez contacter votre fournisseur d'accès Internet ou votre support technique et l'informer de ce sérieux problème de sécurité.", + "proxyblockreason": "Votre adresse IP a été bloquée car il s’agit d’un mandataire ouvert.\nVeuillez contacter votre fournisseur d’accès Internet ou votre soutien technique et l’informer de ce sérieux problème de sécurité.", "sorbsreason": "Votre adresse IP est listée comme mandataire ouvert dans le DNSBL utilisé par {{SITENAME}}.", "sorbs_create_account_reason": "Votre adresse IP est listée comme mandataire ouvert dans le DNSBL utilisé par {{SITENAME}}.\nVous ne pouvez pas créer un compte.", "softblockrangesreason": "Les contributions anonymes ne sont pas autorisées à partir de votre adresse IP ($1). Veuillez vous connecter.", @@ -2735,7 +2775,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.", @@ -2762,15 +2802,15 @@ "tooltip-pt-watchlist": "Une liste des pages dont vous suivez les modifications", "tooltip-pt-mycontris": "La liste de {{GENDER:|vos}} contributions", "tooltip-pt-anoncontribs": "Une liste des modifications effectuées depuis cette adresse IP", - "tooltip-pt-login": "Il est recommandé de vous identifier ; ce n'est cependant pas obligatoire.", + "tooltip-pt-login": "Vous êtes encouragé à vous connecter ; ce n’est cependant pas obligatoire.", "tooltip-pt-login-private": "Vous devez vous connecter pour utiliser ce wiki", "tooltip-pt-logout": "Se déconnecter", - "tooltip-pt-createaccount": "Il vous est conseillé de créer un compte et de vous connecter ; cependant, ce n’est pas obligatoire", + "tooltip-pt-createaccount": "Vous êtes encouragé à créer un compte utilisateur et vous connecter; ce n’est cependant pas obligatoire.", "tooltip-ca-talk": "Discussion au sujet de cette page de contenu", "tooltip-ca-edit": "Modifier le wikicode", "tooltip-ca-addsection": "Commencer une nouvelle section", "tooltip-ca-viewsource": "Cette page est protégée.\nVous pouvez toutefois en visualiser la source.", - "tooltip-ca-history": "Les versions passées de cette page (avec leurs contributeurs)", + "tooltip-ca-history": "Historique des versions de cette page", "tooltip-ca-protect": "Protéger cette page", "tooltip-ca-unprotect": "Changer la protection de cette page", "tooltip-ca-delete": "Supprimer cette page", @@ -2779,16 +2819,16 @@ "tooltip-ca-watch": "Ajouter cette page à votre liste de suivi", "tooltip-ca-unwatch": "Retirer cette page de votre liste de suivi", "tooltip-search": "Rechercher dans {{SITENAME}}", - "tooltip-search-go": "Aller vers une page portant exactement ce nom si elle existe.", + "tooltip-search-go": "Accédez à une page du même nom si elle existe", "tooltip-search-fulltext": "Rechercher les pages comportant ce texte.", - "tooltip-p-logo": "Page principale", + "tooltip-p-logo": "Visiter la page d’accueil", "tooltip-n-mainpage": "Visiter la page d'accueil du site", - "tooltip-n-mainpage-description": "Aller à l'accueil", - "tooltip-n-portal": "À propos du projet, ce que vous pouvez faire, où trouver des informations", - "tooltip-n-currentevents": "Trouver les informations de fond sur l'actualité du moment", + "tooltip-n-mainpage-description": "Accueil général", + "tooltip-n-portal": "À propos du projet, ce que vous pouvez faire, où trouver les informations", + "tooltip-n-currentevents": "Trouver plus d’informations sur les actualités en cours", "tooltip-n-recentchanges": "Liste des modifications récentes sur le wiki", "tooltip-n-randompage": "Afficher une page au hasard", - "tooltip-n-help": "Aide", + "tooltip-n-help": "Accès à l’aide", "tooltip-t-whatlinkshere": "Liste des pages liées qui pointent sur celle-ci", "tooltip-t-recentchangeslinked": "Liste des modifications récentes des pages appelées par celle-ci", "tooltip-feed-rss": "Flux RSS pour cette page", @@ -2800,7 +2840,7 @@ "tooltip-t-specialpages": "Liste de toutes les pages spéciales", "tooltip-t-print": "Version imprimable de cette page", "tooltip-t-permalink": "Adresse permanente de cette version de la page", - "tooltip-ca-nstab-main": "Voir la page de contenu", + "tooltip-ca-nstab-main": "Voir le contenu de la page", "tooltip-ca-nstab-user": "Voir la page utilisateur", "tooltip-ca-nstab-media": "Voir la page du média", "tooltip-ca-nstab-special": "Ceci est une page spéciale, et elle ne peut pas être modifiée.", @@ -2875,13 +2915,13 @@ "pageinfo-content-model-change": "modifier", "pageinfo-robot-policy": "Indexation par robots", "pageinfo-robot-index": "Autorisée", - "pageinfo-robot-noindex": "Interdite", + "pageinfo-robot-noindex": "Non autorisé", "pageinfo-watchers": "Nombre de contributeurs ayant la page dans leur liste de suivi", "pageinfo-visiting-watchers": "Nombre d’observateurs de la page ayant consulté les modifications récentes de la page", "pageinfo-few-watchers": "Moins de $1 {{PLURAL:$1|observateur|observateurs}}", "pageinfo-few-visiting-watchers": "Il peut ou non y avoir un observateur regardant les modifications récentes", "pageinfo-redirects-name": "Nombre de redirections vers cette page", - "pageinfo-subpages-name": "Sous-pages de cette page", + "pageinfo-subpages-name": "Nombre de sous-pages de cette page", "pageinfo-subpages-value": "$1 ($2 {{PLURAL:$2|redirection|redirections}}; $3 {{PLURAL:$3|non-redirection|non-redirections}})", "pageinfo-firstuser": "Créateur de la page", "pageinfo-firsttime": "Date de création de la page", @@ -2926,7 +2966,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", @@ -2943,7 +2983,7 @@ "widthheightpage": "$1 × $2, $3 page{{PLURAL:$3||s}}", "file-info": "Taille du fichier : $1, type MIME : $2", "file-info-size": "$1 × $2 pixels, taille du fichier : $3, type MIME : $4", - "file-info-size-pages": "$1 × $2 pixels, taille de fichier : $3, type MIME : $4, $5 page{{PLURAL:$5||s}}", + "file-info-size-pages": "$1 × $2 pixels ; taille du fichier : $3 ; type MIME : $4 ; $5 page{{PLURAL:$5||s}}", "file-nohires": "Pas de plus haute résolution disponible.", "svg-long-desc": "Fichier SVG, résolution de $1 × $2 pixels, taille : $3", "svg-long-desc-animated": "Fichier SVG animé, résolution $1 × $2 pixels, taille du fichier : $3", @@ -3054,7 +3094,7 @@ "exif-relatedsoundfile": "Fichier audio associé", "exif-datetimeoriginal": "Date de la prise originelle", "exif-datetimedigitized": "Date de la numérisation", - "exif-subsectime": "Date de modification", + "exif-subsectime": "Date en fraction de seconde", "exif-subsectimeoriginal": "Date de la prise originelle", "exif-subsectimedigitized": "Date de la numérisation", "exif-exposuretime": "Temps d'exposition", @@ -3600,7 +3640,7 @@ "fileduplicatesearch-noresults": "Aucun fichier nommé « $1 » n'a été trouvé.", "specialpages": "Pages spéciales", "specialpages-note-top": "Légende", - "specialpages-note": "* Pages spéciales normales.\n* Pages spéciales restreintes.", + "specialpages-note-restricted": "* Pages spéciales normales.\n* Pages spéciales restreintes.", "specialpages-group-maintenance": "Rapports de maintenance", "specialpages-group-other": "Autres pages spéciales", "specialpages-group-login": "S'identifier / s'inscrire", @@ -3657,7 +3697,7 @@ "tags-create-warnings-below": "Voulez-vous continuer la création de la balise?", "tags-delete-title": "Supprimer la balise", "tags-delete-explanation-initial": "Vous êtes sur le point de supprimer la balise « $1 » de la base de données.", - "tags-delete-explanation-in-use": "Elle sera supprimée de {{PLURAL:$2|$2 révision ou entrée de journal à laquelle|toutes les $2 révisions et/ou entrées de journal auxquelles}} elle est actuellement appliquée.", + "tags-delete-explanation-in-use": "Elle sera supprimée de {{PLURAL:$2|$2 révision ou entrée de journal à laquelle|toutes les $2 révisions ou entrées de journal auxquelles}} elle est actuellement appliquée.", "tags-delete-explanation-warning": "Cette action est irréversible et ne peut pas être annulée, même pas par les administrateurs de base de données. Soyez certain que c'est cette balise que vous voulez supprimer.", "tags-delete-explanation-active": "La balise « $1 » est toujours active, et continuera à être appliquée dans le futur. Pour arrêter cela, allez à l'endroit (ou aux endroits) où la balise est appliquée, et désactivez la.", "tags-delete-reason": "Motif :", @@ -3719,6 +3759,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)", @@ -3853,7 +3900,7 @@ "feedback-thanks": "Merci ! Votre commentaire a été publié sur la page « [$2 $1] ».", "feedback-thanks-title": "Merci !", "feedback-useragent": "Agent utilisateur :", - "searchsuggest-search": "Rechercher sur {{SITENAME}}", + "searchsuggest-search": "Rechercher dans {{SITENAME}}", "searchsuggest-containing": "contenant...", "api-error-badtoken": "Erreur interne : mauvais « jeton ».", "api-error-emptypage": "Création de pages vide n'est pas autorisée.", @@ -3916,12 +3963,12 @@ "log-name-pagelang": "Tracer les changements de langue", "log-description-pagelang": "Ceci est un journal des changements dans les langues des pages.", "logentry-pagelang-pagelang": "$1 {{GENDER:$2|a changé}} la langue de la page $3 de $4 à $5.", - "default-skin-not-found": "Oups ! L’habillage par défaut pour votre wiki, défini par $wgDefaultSkin comme $1, n’est pas disponible.\n\nVotre installation semble inclure {{PLURAL:$4|l’habillage suivant|les habillages suivants}}. Voyez [https://www.mediawiki.org/wiki/Manual:Skin_configuration le manuel de configuration des habillages] pour savoir comment {{PLURAL:$4|l’|les }}activer et choisir celui par défaut.\n\n$2\n\n; Si vous venez juste d’installer MediaWiki :\n: Vous l’avez probablement installé depuis git, ou directement depuis le code source avec une autre méthode. C’est normal. Essayez d’installer des habillages depuis [https://www.mediawiki.org/wiki/Category:All_skins le répertoire des habillages de mediawiki.org], en:\n:* Téléchargeant le [https://www.mediawiki.org/wiki/Download fichier tar de l’installeur], qui comprend plusieurs habillages et extensions. Vous pouvez copier et coller le répertoire skins/ depuis là.\n:* Téléchargeant les fichiers tar d’habillage individuel depuis [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Téléchargeant des habillages avec Git].\n: Faire ainsi ne devrait pas interférer avec votre dépôt git, si vous êtes un développeur de MediaWiki.\n\n; Si vous venez juste de mettre à jour MediaWiki :\n: MediaWiki 1.24 et au-delà n’active plus automatiquement les habillages installés (voyez [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery le manuel sur la découverte automatique des habillages]). Vous pouvez coller {{PLURAL:$5|la ligne suivante|les lignes suivantes}} dans LocalSettings.php pour activer {{PLURAL:$5|l’habillage actuellement installé|tous les habillages actuellement installés}} :\n\n
    $3
    \n\n; Si vous venez de modifier LocalSettings.php :\n: Vérifiez deux fois le nom des habillages pour éviter les erreurs de frappe.", - "default-skin-not-found-no-skins": "Oups ! L’habillage par défaut pour votre wiki , défini par $wgDefaultSkin comme $1, n’est pas disponible.\n\nVous n’avez aucun habillage d’installé.\n\n; Si vous venez juste d’installer ou de mettre à jour MediaWiki :\n: Vous l’avez sans doute fait depuis git, ou directement depuis le code source avec une autre méthode. C’est normal. MediaWiki 1.24 et au-delà n’inclut aucun habillage dans le dépôt principal. Essayez d’installer des habillages depuis [https://www.mediawiki.org/wiki/Category:All_skins le répertoire des habillages de mediawiki.org], en :\n:* Téléchargeant [https://www.mediawiki.org/wiki/Download le fichier tar de l’installeur], qui comprend différents habillages et extensions. Vous pouvez copier et coller le répertoire skins/ depuis là.\n:* Téléchargeant les fichiers tar d’habillage individuel depuis [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Utiliser Git pour télécharger des habillages].\n: Faire ainsi ne devrait pas interférer avec votre dépôt git si vous êtes un développeur de MediaWiki. Voyez [https://www.mediawiki.org/wiki/Manual:Skin_configuration le manuel de la configuration des habillages] pour des instructions sur la manière d’activer les habillages et choisir celui par défaut.", + "default-skin-not-found": "Oups ! L’habillage par défaut pour votre wiki, défini par $wgDefaultSkin comme $1, n’est pas disponible.\n\nVotre installation semble inclure {{PLURAL:$4|l’habillage suivant|les habillages suivants}}. Voyez [https://www.mediawiki.org/wiki/Manual:Skin_configuration le manuel de configuration des habillages] pour savoir comment {{PLURAL:$4|l’|les }}activer et choisir celui par défaut.\n\n$2\n\n; Si vous venez juste d’installer MediaWiki :\n: Vous l’avez probablement installé depuis git, ou directement depuis le code source avec une autre méthode. C’est normal. Essayez d’installer des habillages depuis [https://www.mediawiki.org/wiki/Category:All_skins le répertoire des habillages de mediawiki.org], en:\n:* Téléchargeant le [https://www.mediawiki.org/wiki/Download fichier tar du programme d’installation], qui comprend plusieurs habillages et extensions. Vous pouvez copier et coller le répertoire skins/ depuis là.\n:* Téléchargeant les fichiers tar d’habillage individuel depuis [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Téléchargeant des habillages avec Git].\n: Faire ainsi ne devrait pas interférer avec votre dépôt git, si vous êtes un développeur de MediaWiki.\n\n; Si vous venez juste de mettre à jour MediaWiki :\n: MediaWiki 1.24 et au-delà n’active plus automatiquement les habillages installés (voyez [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery le manuel sur la découverte automatique des habillages]). Vous pouvez coller {{PLURAL:$5|la ligne suivante|les lignes suivantes}} dans LocalSettings.php pour activer {{PLURAL:$5|l’habillage actuellement installé|tous les habillages actuellement installés}} :\n\n
    $3
    \n\n; Si vous venez de modifier LocalSettings.php :\n: Vérifiez deux fois le nom des habillages pour éviter les erreurs de frappe.", + "default-skin-not-found-no-skins": "Oups ! L’habillage par défaut pour votre wiki , défini par $wgDefaultSkin comme $1, n’est pas disponible.\n\nVous n’avez aucun habillage d’installé.\n\n; Si vous venez juste d’installer ou de mettre à jour MediaWiki :\n: Vous l’avez sans doute fait depuis git, ou directement depuis le code source avec une autre méthode. C’est normal. MediaWiki 1.24 et au-delà n’inclut aucun habillage dans le dépôt principal. Essayez d’installer des habillages depuis [https://www.mediawiki.org/wiki/Category:All_skins le répertoire des habillages de mediawiki.org], en :\n:* Téléchargeant [https://www.mediawiki.org/wiki/Download le fichier tar du programme d’installation], qui comprend différents habillages et extensions. Vous pouvez copier et coller le répertoire skins/ depuis là.\n:* Téléchargeant les fichiers tar d’habillage individuel depuis [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Utiliser Git pour télécharger des habillages].\n: Faire ainsi ne devrait pas interférer avec votre dépôt git si vous êtes un développeur de MediaWiki. Voyez [https://www.mediawiki.org/wiki/Manual:Skin_configuration le manuel de la configuration des habillages] pour des instructions sur la manière d’activer les habillages et choisir celui par défaut.", "default-skin-not-found-row-enabled": "* $1 / $2 (activé)", "default-skin-not-found-row-disabled": "* $1 / $2 (désactivé)", "mediastatistics": "Statistiques sur les médias", - "mediastatistics-summary": "Statistiques sur les types de fichier téléversés. Elles ne prennent en compte que la version la plus récente d’un fichier. Les versions anciennes ou supprimées des fichiers sont exclues.", + "mediastatistics-summary": "Statistiques sur les types de fichiers téléversés. Elles ne prennent en compte que la version la plus récente des fichiers. Les versions anciennes ou supprimées sont exclues.", "mediastatistics-nbytes": "{{PLURAL:$1|$1 octet|$1 octets}} ($2 ; $3%)", "mediastatistics-bytespertype": "Taille totale de fichiers pour cette section : {{PLURAL:$1|$1 octet|$1 octets}} ($2 ; $3%).", "mediastatistics-allbytes": "Taille totale pour tous les fichiers : {{PLURAL:$1|$1 octet|$1 octets}} ($2).", @@ -3930,7 +3977,7 @@ "mediastatistics-table-count": "Nombre de fichiers", "mediastatistics-table-totalbytes": "Taille combinée", "mediastatistics-header-unknown": "Inconnu", - "mediastatistics-header-bitmap": "Images raster", + "mediastatistics-header-bitmap": "Images matricielles", "mediastatistics-header-drawing": "Dessins (images vectorielles)", "mediastatistics-header-audio": "Audio", "mediastatistics-header-video": "Vidéos", @@ -4128,6 +4175,6 @@ "undelete-cantcreate": "Vous ne pouvez pas annuler la suppression de cette page car il n’existe pas de page avec ce nom, et vous n’êtes pas autorisé à la créer.", "pagedata-title": "Données de page", "pagedata-text": "Cette page fournit une interface de données aux pages. Veuillez fournir le titre de la page dans l’URL en utilisant la syntaxe de sous-page.\n* La négociation de contenu s’applique d’après l’entête Accept de votre client. Cela veut dire que les données de la page seront fournies dans le format préféré par votre client.", - "pagedata-not-acceptable": "Aucun format correspondant trouvé. Types MIME supportés : $1", + "pagedata-not-acceptable": "Aucun format correspondant trouvé. Types MIME pris en charge : $1", "pagedata-bad-title": "Titre non valide : $1." } diff --git a/languages/i18n/frc.json b/languages/i18n/frc.json index 7680da0353..1c100afc00 100644 --- a/languages/i18n/frc.json +++ b/languages/i18n/frc.json @@ -9,13 +9,15 @@ "Urhixidur", "Zetud", "Hangmanwa7id", - "Stisc-14" + "Stisc-14", + "Pierpao" ] }, "tog-underline": "Souligner les liens:", "tog-hideminor": "Cacher les petits changements dans la liste des derniers changements", - "tog-hidepatrolled": "↓ Cacher les petits changements dans la liste des derniers changements", - "tog-newpageshidepatrolled": "↓Cacher pages patrollés de la list des pages nouveau", + "tog-hidepatrolled": "Cacher les petits changements dans la liste des derniers changements", + "tog-newpageshidepatrolled": "Cacher pages patrollés de la list des pages nouveau", + "tog-hidecategorization": "Masquer la catégorisation des pages", "tog-extendwatchlist": "Agrandir la liste des pages guettées pour montrer tous les changements", "tog-usenewrc": "User les derniers changements improuvés (JavaScript)", "tog-numberheadings": "Mettre les numéros sus les en-têtes", @@ -44,6 +46,7 @@ "tog-watchlisthideliu": "Cacher édites de useurs anonymes du liste de pages guettées", "tog-watchlisthideanons": "Cacher édites de useurs anonymes du liste de pages guettées", "tog-watchlisthidepatrolled": "Cacher les changements faits par les bots dans la liste des pages guettées", + "tog-watchlisthidecategorization": "Masquer la catégorisation des pages", "tog-ccmeonemails": "Envoyer une copie des e-mails que j'envoye aux autres useurs", "tog-diffonly": "Couper la page sous les diffs", "underline-always": "Tout le temps", @@ -135,13 +138,7 @@ "anontalk": "Discussion avec cette adresse IP", "navigation": "Navigation", "and": " et", - "qbfind": "Charcher", - "qbbrowse": "Regarder", - "qbedit": "Changer", - "qbpageoptions": "Page de choix", - "qbmyoptions": "Mes options", "faq": "Questions Communes", - "faqpage": "Project:Questions Communes", "actions": "Actions", "namespaces": "Espaces des noms", "variants": "Variantes", @@ -164,29 +161,19 @@ "view-foreign": "Regarde sur $1", "edit": "Changer", "create": "Créer", - "editthispage": "Faire un changement", - "create-this-page": "Créer cette page", "delete": "Supprimer", - "deletethispage": "Supprimer cette page", - "undeletethispage": "Restaurer cette page", "undelete_short": "Restaurer {{PLURAL:$1|un changement|$1 changements}}", "viewdeleted_short": "Regarder {{PLURAL:$1|un changement effacée|$1 changements effacées}}", "protect": "Protéger", "protect_change": "Changer le niveau de protection", - "protectthispage": "Protéger cette page", "unprotect": "Changer la protection", - "unprotectthispage": "Changer la protection de cette page", "newpage": "Nouvelle page", - "talkpage": "Discuter cette page", "talkpagelinktext": "Discuter", "specialpage": "Page espéciale", "personaltools": "Outils personnels", - "articlepage": "Voir l'article", "talk": "Discussion", "views": "Vues", "toolbox": "Outils", - "userpage": "Page d'useur", - "projectpage": "Page des projets", "imagepage": "Regarder la page du fichier", "mediawikipage": "Page des messages", "templatepage": "Page de patron", @@ -459,7 +446,6 @@ "explainconflict": "Quèqu'une d'autre a changé cette page depuis vous avez commencé à la changer.\nLa boëtte de changements en haut contient le texte de la page comme c'est asteur.\nVos changements sont montrés dans la boëtte de changements en bas.\nIl foudra que vous mettez vos changements dans le texte qu'est là asteur.\n'''Juste''' le texte dans la boëtte de changements en haut va être sauvé quand vous pèsez \"$1\".", "yourtext": "Votre texte", "storedversion": "Version sauvée", - "nonunicodebrowser": "'''ATTENTION: Votre navigateur supporte pas les caractères unicode. Une solution de peu de durée a été trouvée pour que vous peuvez changer des articles sans problèmes. Les caractères qui sont pas ASCII va apparaître dans la boëte de changements comme des codes hexadécimaux.'''", "editingold": "'''ATTENTION: Vous êtes après changer une vieille version de cette page. Si vous le sauverait, vous perdrait n'importe quels changements faits depuis cette version.'''", "yourdiff": "Différences", "copyrightwarning": "Notez donc que toutes les contributions à {{SITENAME}} sont considérées d’être libérées sous le $2 (voyez $1 pour les détails). Si vous voulez pas que votre écriture soye changée sans pitié et redistribuée à volonté, mettez donc pas votre écriture ici.
    Vous êtes après nous promettre aussi que vous l’avez écrit vous-même ou que vous l’avez copié du domaine public ou un autre ressource libre. ''' METTEZ PAS DE L’OUVRAGE SOUS COPYRIGHT ICI SANS PERMISSION !'''", diff --git a/languages/i18n/frr.json b/languages/i18n/frr.json index 817b636e52..8802a8efdc 100644 --- a/languages/i18n/frr.json +++ b/languages/i18n/frr.json @@ -165,7 +165,7 @@ "errorpagetitle": "Diar as wat skiaf gingen", "returnto": "Turag tu sidj $1.", "tagline": "Faan {{SITENAME}}", - "help": "Halep", + "help": "MediaWiki Halep", "search": "Schük", "search-ignored-headings": " #
    \n# Auerskraften, diar bi't schüken ei beaachtet wurd.\n# Jodiar feranrangen wurd seekert, wan det sidj mä det auerskraft indeksiaret wurden as.\n# Dü könst det sidjenindeksiarang föörtji, wan dü en nul-edit maagest.\n# Syntax:\n#   * Ales, wat bääft en dobelkrüs („#“) stäänt, as en komentaar.\n#   * Arke rä, wat ei leesag as, as di akeroot tiitel, diar ei beaachtet woort.\nFutnuuten\nFerwisangen\nLuke uk diar\n #
    ", "searchbutton": "Schük", @@ -1719,6 +1719,7 @@ "listgrouprights-namespaceprotection-header": "Nöömrüm mögelkhaiden", "listgrouprights-namespaceprotection-namespace": "Nöömrüm", "listgrouprights-namespaceprotection-restrictedto": "Rochten faan di brüker tu bewerkin", + "listgrants": "Brükerrochten (list)", "trackingcategories": "Kategoriin ferfulge", "trackingcategories-summary": "Üüb detdiar sidj stun ferfulagt kategoriin, diar faan't MediaWiki-software iindraanj wurden san. Hör nöömer kön feranert wurd, wan dü a süsteem-noorachten uun a {{ns:8}}-nöömrüm feranerst.", "trackingcategories-msg": "Kategorii ferfulge", @@ -1813,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", @@ -1957,7 +1958,7 @@ "namespace_association": "Ferbünjen nöömrüm", "tooltip-namespace_association": "Saat diar en tiaken, am di ferbünjen nöömrüm of diskusjuunsnöömrüm mä iintubetjin.", "blanknamespace": "(Sidjen)", - "contributions": "{{GENDER:$1|Brüker}} bidracher", + "contributions": "{{GENDER:$1|Brüker}}bidracher", "contributions-title": "Brükerbidracher för \"$1\"", "mycontris": "Bidracher", "anoncontribs": "Bidracher", @@ -2042,6 +2043,7 @@ "unblocked-id": "Sperang $1 as apheewen", "unblocked-ip": "[[Special:Contributions/$1|$1]] as freiden wurden.", "blocklist": "Speret brükern", + "autoblocklist": "Automaatisk speren", "ipblocklist": "Speret brükern", "ipblocklist-legend": "Speret brüker finj", "blocklist-userblocks": "Brükersperen ei uunwise", @@ -2984,12 +2986,11 @@ "fileduplicatesearch-noresults": "Nian datei mä di nööm „$1“ fünjen.", "specialpages": "Spezial-sidjen", "specialpages-note-top": "Legend", - "specialpages-note": "* Normool spezial-sidjen\n* Spezial-sidjen mä tugripsrochten", "specialpages-group-maintenance": "Werksteedsidjen", "specialpages-group-other": "Ööder spezial-sidjen", "specialpages-group-login": "Melde di uun of skriiw di iin", "specialpages-group-changes": "Leetst feranrangen an logbuken", - "specialpages-group-media": "Medien", + "specialpages-group-media": "Meedien", "specialpages-group-users": "Brükern an rochten", "specialpages-group-highuse": "Flooksis brükt sidjen", "specialpages-group-pages": "Sidjen", @@ -3292,5 +3293,9 @@ "mw-widgets-dateinput-no-date": "Nian dootem ütjsoocht", "mw-widgets-titleinput-description-new-page": "sidj jaft at noch ei", "mw-widgets-titleinput-description-redirect": "widjerfeerang tu $1", - "randomrootpage": "Tufelag stamsidj" + "randomrootpage": "Tufelag stamsidj", + "changecredentials": "Uunmeldeinformatjuunen feranre", + "changecredentials-submit": "Uunmeldeinformatjuunen feranre", + "removecredentials": "Uunmeldeinformatjuunen wechnem", + "removecredentials-submit": "Uunmeldeinformatjuunen wechnem" } diff --git a/languages/i18n/fy.json b/languages/i18n/fy.json index 486fd64852..2b7bda777d 100644 --- a/languages/i18n/fy.json +++ b/languages/i18n/fy.json @@ -135,7 +135,7 @@ "category-empty": "Yn dizze kategory binne gjin siden of triemmen opnaam.", "hidden-categories": "Ferburgen {{PLURAL:$1|kategory|kategoryen}}", "hidden-category-category": "Ferburgen kategoryen", - "category-subcat-count": "{{PLURAL:$2|Dizze kategory hat allinne de folgjende ûnderkategory.|Dizze kategory hat de folgjende {{PLURAL:$1|ûnderkategory|$1 ûnderkategoryen}}, fan in totaal fan $2.}}", + "category-subcat-count": "{{PLURAL:$2|Dizze kategory hat allinne de folgjende ûnderkategory.|Dizze kategory hat de folgjende {{PLURAL:$1|ûnderkategory|$1 ûnderkategoryen}}, fan yn totaal $2.}}", "category-subcat-count-limited": "Dizze kategory hat de folgjende {{PLURAL:$1|ûnderkategory|$1 ûnderkategoryen}}.", "category-article-count": "{{PLURAL:$2|Dizze kategory befettet allinne de folgjende side.|De folgjende {{PLURAL:$1|side is|$1 siden binne}} yn dizze kategory, fan yn totaal $2.}}", "category-article-count-limited": "De folgjende {{PLURAL:$1|side is|$1 siden binne}} yn dizze kategory.", @@ -512,7 +512,6 @@ "explainconflict": "In oar hat de side feroare sûnt jo begûn binne mei it bewurkjen.\nIt earste bewurkingsfjild is hoe't de tekst wilens wurden is.\nJo feroarings stean yn it twadde fjild.\nDy wurde allinnich tapast safier as jo se yn it earste fjild ynpasse.\n'''Allinnich''' de tekst út it earste fjild kin fêstlein wurde.", "yourtext": "Jo tekst", "storedversion": "Fêstleine ferzje", - "nonunicodebrowser": "Warskôging: Jo browser kin net goed oer de wei mei unicode.\nDêr wurdt troch de MediaWiki software rekken mei holden, dat Jo kinne dan dochs sûnder problemen siden bewurkje: net-ASCII tekens wurden yn it bewurkingsfjild werjûn as heksadesimale koades.", "editingold": "Warskôging: Jo binne dwaande mei in âldere ferzje fan dizze side.\nSoene jo dy fêstlizze, dan is alles wei wat sûnt dy tiid feroare is.", "yourdiff": "Feroarings", "copyrightwarning": "Tink derom dat alle bydragen oan {{SITENAME}} beskôge wurde frijjûn te wêzen ûnder de $2 (sjoch $1 foar bysûnderheden). As jo net wolle dat jo tekst troch oaren neffens eigen goedfinen bewurke en ferspraat wurde kin, kies dan net foar 'Side Bewarje'.
    \nHjirby sizze jo tagelyk ta, dat jo dizze tekst sels skreaun hawwe, of oernommen hawwe út in frije, iepenbiere boarne.
    \n'''BRûK GJIN MATERIAAL DAT BESKERME WURDT TROCH AUTERURSRJOCHT, OF JO MOATTE DêR TASTIMMING TA HAWWE!
    ", @@ -1914,7 +1913,6 @@ "fileduplicatesearch-result-n": "De triem \"$1\" hat {{PLURAL:$2|1 duplikaat|$2 duplikaten}}.", "specialpages": "Bysûndere siden", "specialpages-note-top": "Leginda", - "specialpages-note": "* Normale bysûndere siden.\n* Beheinde bysûndere siden.", "specialpages-group-maintenance": "Underhâld siden", "specialpages-group-other": "Oare bysûndere siden", "specialpages-group-login": "Oanmelde / registrearje", @@ -1955,6 +1953,7 @@ "compare-rev2": "Refyzje 2", "compare-submit": "Ferlykje", "compare-invalid-title": "Unjildige titel.", + "diff-form": "in '''formulier'''", "htmlform-submit": "Ferstjoere", "htmlform-no": "Nee", "htmlform-yes": "Ja", 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 9de6680469..a86294d2d7 100644 --- a/languages/i18n/gl.json +++ b/languages/i18n/gl.json @@ -54,13 +54,14 @@ "tog-shownumberswatching": "Mostrar o número de usuarios que están a vixiar", "tog-oldsig": "A súa sinatura actual:", "tog-fancysig": "Tratar a sinatura como se fose texto wiki (sen ligazón automática)", - "tog-uselivepreview": "Usar a vista previa en tempo real", + "tog-uselivepreview": "Amosar as vistas previas sen recargar a páxina", "tog-forceeditsummary": "Avisar cando o campo resumo estea baleiro", "tog-watchlisthideown": "Agochar as edicións propias na lista de vixilancia", "tog-watchlisthidebots": "Agochar as edicións dos bots na lista de vixilancia", "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", @@ -690,7 +691,6 @@ "explainconflict": "Alguén cambiou esta páxina desde que comezou a editala.\nA área de texto superior contén o texto da páxina tal e como existe na actualidade.\nOs seus cambios móstranse na área inferior.\nPode mesturar os seus cambios co texto existente.\n'''Só''' se gardará o texto na área superior cando prema en \"$1\".", "yourtext": "O seu texto", "storedversion": "Versión gardada", - "nonunicodebrowser": "'''Atención: O seu navegador non soporta o Unicode.'''\nExiste unha solución que lle permite editar páxinas con seguridade: os caracteres non incluídos no ASCII aparecerán na caixa de edición como códigos hexadecimais.", "editingold": "'''Atención: Está editando unha revisión vella desta páxina.'''\nSe a garda, perderanse os cambios realizados tras esta revisión.", "yourdiff": "Diferenzas", "copyrightwarning": "Por favor, teña en conta que todas as contribucións feitas en {{SITENAME}} se consideran publicadas baixo a $2 (consulte $1 para obter máis detalles).\nSe non quere que os seus escritos sexan editados sen piedade e redistribuídos sen límites, entón non os publique aquí.
    \nDo mesmo xeito, comprométese a que o que vostede escriba é da súa autoría ou está copiado dun recurso de dominio público ou que procede dunha fonte libre.\nNon envíe material con dereitos de autoría sen permiso!", @@ -719,8 +719,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.", @@ -760,6 +760,7 @@ "parser-template-loop-warning": "Detectouse un modelo en bucle: [[$1]]", "template-loop-category": "Páxinas con bucles de modelo", "template-loop-category-desc": "A páxina contén un bucle de modelo, por exemplo, un modelo que se chama a si mesmo recursivamente.", + "template-loop-warning": "Aviso: Esta páxina chama [[:$1]] o que causa un ciclo infinito de modelo (unha chamada recursiva sen fin).", "parser-template-recursion-depth-warning": "Excedeuse o límite de profundidade de recursión do modelo ($1)", "language-converter-depth-warning": "Excedeuse o límite de profundidade do convertedor de lingua ($1)", "node-count-exceeded-category": "Páxinas nas que se supera o número de nodos", @@ -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", @@ -1030,6 +1031,7 @@ "timezoneregion-indian": "Océano Índico", "timezoneregion-pacific": "Océano Pacífico", "allowemail": "Admitir mensaxes de correo electrónico doutros usuarios", + "email-blacklist-label": "Prohibir a eses usuarios enviarme correos electrónicosː", "prefs-searchoptions": "Procura", "prefs-namespaces": "Espazos de nomes", "default": "predeterminado", @@ -1073,6 +1075,7 @@ "prefs-editor": "Editor", "prefs-preview": "Vista previa", "prefs-advancedrc": "Opcións avanzadas", + "prefs-opt-out": "Excluír de melloras", "prefs-advancedrendering": "Opcións avanzadas", "prefs-advancedsearchoptions": "Opcións avanzadas", "prefs-advancedwatchlist": "Opcións avanzadas", @@ -1311,9 +1314,20 @@ "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", + "rcfilters-grouping-title": "Agrupamento", "rcfilters-activefilters": "Filtros activos", "rcfilters-advancedfilters": "Filtros avanzados", + "rcfilters-limit-title": "Modificacións a amosar", + "rcfilters-limit-shownum": "Amosar {{PLURAL:$1|a última modificación|as últimas $1 modificacións}}", + "rcfilters-days-title": "Últimos días", + "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.", @@ -1325,43 +1339,41 @@ "rcfilters-savedqueries-new-name-label": "Nome", "rcfilters-savedqueries-new-name-placeholder": "Describe o propósito do filtro", "rcfilters-savedqueries-apply-label": "Crear filtro", + "rcfilters-savedqueries-apply-and-setdefault-label": "Crear filtro por defecto", "rcfilters-savedqueries-cancel-label": "Cancelar", "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-search-placeholder": "Filtrar os cambios recentes (ollar ou comezar a escribir)", + "rcfilters-show-new-changes": "Mostrar os cambios máis recentes", + "rcfilters-search-placeholder": "Filtrar os cambios recentes (navegar ou comezar a escribir)", "rcfilters-invalid-filter": "Filtro no válido", "rcfilters-empty-filter": "Non hai filtros activos. Móstranse tódalas contribucións.", "rcfilters-filterlist-title": "Filtros", - "rcfilters-filterlist-whatsthis": "Que é isto?", - "rcfilters-filterlist-feedbacklink": "Deixar comentarios sobre os novos filtros (en fase beta)", + "rcfilters-filterlist-whatsthis": "Como funciona isto?", + "rcfilters-filterlist-feedbacklink": "Coméntenos o que pensa sobre estas (novas) ferramentas de filtrado", "rcfilters-highlightbutton-title": "Resaltar resultados", "rcfilters-highlightmenu-title": "Seleccione unha cor", "rcfilters-highlightmenu-help": "Seleccione unha cor para resaltar esta propiedade", "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-filtergroup-registration": "Rexistro de usuario", - "rcfilters-filter-registered-label": "Rexistrado", - "rcfilters-filter-registered-description": "Editores autenticados.", - "rcfilters-filter-unregistered-label": "Non rexistrado", - "rcfilters-filter-unregistered-description": "Editores que non están autenticados.", - "rcfilters-filter-unregistered-conflicts-user-experience-level": "Este filtro está en conflito {{PLURAL:$2|co seguinte filtro|cos seguintes filtros}} Experience, que {{PLURAL:$2|atopa|atopan}} só usuarios rexistradosː $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", "rcfilters-filter-editsbyother-label": "Modificacións doutros.", "rcfilters-filter-editsbyother-description": "Tódolos cambios, excepto os seus.", - "rcfilters-filtergroup-userExpLevel": "Nivel de experiencia (só para usuarios rexistrados)", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Os filtros Experience só atopan usuarios rexistrados, polo que este filtro está en conflito co filtro \"non rexistrado\".", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "O filtro \"non rexistrados\" está en conflito cun ou máis filtros Experience, que só atopan usuarios rexistrados. Os filtros en conflito están marcados na área dos filtros activos, arriba.", + "rcfilters-filtergroup-userExpLevel": "Rexistro de usuarios e experiencia", + "rcfilters-filter-user-experience-level-registered-label": "Rexistrados", + "rcfilters-filter-user-experience-level-registered-description": "Editores autenticados.", + "rcfilters-filter-user-experience-level-unregistered-label": "Non rexistrados", + "rcfilters-filter-user-experience-level-unregistered-description": "Editores que non están autenticados.", "rcfilters-filter-user-experience-level-newcomer-label": "Chegados recentemente", - "rcfilters-filter-user-experience-level-newcomer-description": "Menos de 10 edicións e 4 días de actividade.", + "rcfilters-filter-user-experience-level-newcomer-description": "Editores rexistrados con menos de 10 edicións e 4 días de actividade.", "rcfilters-filter-user-experience-level-learner-label": "Aprendices", - "rcfilters-filter-user-experience-level-learner-description": "Máis experimentado que os \"usuarios novatos\" pero menos que os \"usuarios experimentados\".", + "rcfilters-filter-user-experience-level-learner-description": "Editores rexistrados cuxa experiencia está entre os \"usuarios novatos\" e os \"usuarios experimentados\".", "rcfilters-filter-user-experience-level-experienced-label": "Usuarios experimentados", - "rcfilters-filter-user-experience-level-experienced-description": "Máis de 30 días de actividade e 500 edicións.", + "rcfilters-filter-user-experience-level-experienced-description": "Editores rexistrados con máis de 500 edicións e 30 días de actividade.", "rcfilters-filtergroup-automated": "Contribucións automatizadas", "rcfilters-filter-bots-label": "Bot", "rcfilters-filter-bots-description": "Edicións realizadas por ferramentas automatizadas.", @@ -1384,6 +1396,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...", @@ -1396,18 +1413,28 @@ "rcfilters-hideminor-conflicts-typeofchange-global": "O filtro \"edicións menores\" está en conflito con un ou máis filtros Tipo de modificación, porque certos tipos de modificación non poden designarse como \"menores\". Os filtros en conflito están marcados na zona Filtros activos, arriba.", "rcfilters-hideminor-conflicts-typeofchange": "Certos tipos de modificación non poden designarse como \"menores\", polo que este filtro entra en conflito cos seguintes filtros Tipo de modificaciónː $1", "rcfilters-typeofchange-conflicts-hideminor": "Este filtro Tipo de modificación entra en conflito co filtro \"Modificacións menores\". Certos tipos de modificación non poden designarse como \"menores\".", - "rcfilters-filtergroup-lastRevision": "Versión actual", - "rcfilters-filter-lastrevision-label": "Versión actual", - "rcfilters-filter-lastrevision-description": "A última modificación a unha páxina.", - "rcfilters-filter-previousrevision-label": "Versións anteriores", - "rcfilters-filter-previousrevision-description": "Tódolos cambios realizados nunha páxina e que non son os máis recentes.", + "rcfilters-filtergroup-lastRevision": "Últimas revisións", + "rcfilters-filter-lastrevision-label": "Últimas revisións", + "rcfilters-filter-lastrevision-description": "Só a última modificación a unha páxina.", + "rcfilters-filter-previousrevision-label": "Non a última edición", + "rcfilters-filter-previousrevision-description": "Tódolos cambios realizados nunha páxina e que non son a \"última modificación\".", "rcfilters-filter-excluded": "Excluído", "rcfilters-tag-prefix-namespace-inverted": ":non $1", + "rcfilters-exclude-button-off": "Excluír os seleccionados", + "rcfilters-exclude-button-on": "Excluíndo os seleccionados", + "rcfilters-view-advanced-filters-label": "Filtros avanzados", "rcfilters-view-tags": "Edicións marcadas", "rcfilters-view-namespaces-tooltip": "Filtrar resultados por espazo de nomes", "rcfilters-view-tags-tooltip": "Filtrar resultados usando etiquetas de edición", "rcfilters-view-return-to-default-tooltip": "Volver ó menú principal do filtro", "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", + "rcfilters-watchlist-edit-watchlist-button": "Editar a súa lista de páxinas vixiadas", + "rcfilters-watchlist-showupdated": "Os cambios feitos en páxinas que non visitou dende que se efectuaron aparecen en grosas, acompañados de marcadores sólidos.", + "rcfilters-preference-label": "Ocultar a versión mellorada de cambios recentes", + "rcfilters-preference-help": "Reverte o redeseño da interface de 2017 e tódalas ferramentas engadidas dende entón.", "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", @@ -1466,6 +1493,7 @@ "uploadbtn": "Subir un ficheiro", "reuploaddesc": "Cancelar a subida e volver ao formulario de subidas", "upload-tryagain": "Enviar a descrición do ficheiro modificada", + "upload-tryagain-nostash": "Enviar o ficheiro a volver a subir e a descrición modificada", "uploadnologin": "Non accedeu ao sistema", "uploadnologintext": "Debe $1 para poder cargar ficheiros.", "upload_directory_missing": "Falta o directorio de carga ($1) e non pode ser creado polo servidor da páxina web.", @@ -1525,6 +1553,7 @@ "file-deleted-duplicate-notitle": "Un ficheiro idéntico a este foi borrado con anterioridade e o título foi suprimido.\nDebería contactar con alguén capaz de ver os datos de ficheiros borrados para que revise esta situación antes de subilo de novo.", "uploadwarning": "Advertencia ao cargar o ficheiro", "uploadwarning-text": "Por favor, modifique a descrición do ficheiro e inténteo de novo.", + "uploadwarning-text-nostash": "Por favor, suba de novo o ficheiro, modifique a descrición abaixo e inténteo de novo.", "savefile": "Gardar o ficheiro", "uploaddisabled": "A subida de ficheiros está desactivada.", "copyuploaddisabled": "A carga mediante URL está desactivada.", @@ -1687,7 +1716,7 @@ "listfiles_size": "Tamaño", "listfiles_description": "Descrición", "listfiles_count": "Versións", - "listfiles-show-all": "Incluír as versións vellas das imaxes", + "listfiles-show-all": "Incluír as versións vellas dos ficheiros", "listfiles-latestversion": "Versión actual", "listfiles-latestversion-yes": "Si", "listfiles-latestversion-no": "Non", @@ -1791,6 +1820,8 @@ "pageswithprop-legend": "Páxinas cunha propiedade de páxina", "pageswithprop-text": "Esta páxina lista aquelas páxinas que utilizan unha propiedade de páxina determinada.", "pageswithprop-prop": "Nome da propiedade:", + "pageswithprop-reverse": "Ordenar en orde inversa", + "pageswithprop-sortbyvalue": "Ordenar por valor de propiedade", "pageswithprop-submit": "Mostrar", "pageswithprop-prophidden-long": "agochouse o valor de propiedade de texto longo ($1)", "pageswithprop-prophidden-binary": "agochouse o valor de propiedade binaria ($1)", @@ -2097,7 +2128,7 @@ "unwatchthispage": "Deixar de vixiar", "notanarticle": "Non é unha páxina de contido", "notvisiblerev": "A revisión foi borrada", - "watchlist-details": "Hai {{PLURAL:$1|unha páxina|$1 páxinas}} na súa lista de vixilancia, sen contar as de conversa.", + "watchlist-details": "Hai {{PLURAL:$1|$1 páxina|$1 páxinas}} na súa lista de vixilancia (máis as páxinas de conversa).", "wlheader-enotif": "A notificación por correo electrónico está activada.", "wlheader-showupdated": "As páxinas que cambiaron desde a súa última visita móstranse en letra grosa.", "wlnote": "A continuación {{PLURAL:$1|está a última modificación|están as últimas $1 modificacións}} {{PLURAL:$2|na última hora|nas últimas $2 horas}} ata o $3 ás $4.", @@ -2132,6 +2163,7 @@ "enotif_lastdiff": "Consulte $1 para ver este cambio", "enotif_anon_editor": "usuario anónimo $1", "enotif_body": "Boas, $WATCHINGUSERNAME:\n\n$PAGEINTRO $NEWPAGE\n\nResumo de edición: $PAGESUMMARY $PAGEMINOREDIT\n\nPode contactar co editor:\npor correo electrónico: $PAGEEDITOR_EMAIL\nno wiki: $PAGEEDITOR_WIKI\n\nNon se producirán máis notificacións en caso de que haxa actividade nova ata que acceda ao sistema e visite a páxina. Pode restablecer os indicadores de aviso de notificación para o conxunto das páxinas marcadas na súa lista de vixilancia.\n\nO sistema de avisos de {{SITENAME}}\n\n--\nPara cambiar as notificacións por correo electrónico, visite\n{{canonicalurl:{{#special:Preferences}}}}\n\n\nPara cambiar a súa lista de vixilancia, visite\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nPara borrar a páxina da súa lista de vixilancia, visite\n$UNWATCHURL\n\nAxuda:\n$HELPPAGE", + "enotif_minoredit": "Esta é unha edición pequena", "created": "creada", "changed": "modificada", "deletepage": "Borrar a páxina", @@ -2160,6 +2192,7 @@ "delete-warning-toobig": "Esta páxina conta cun historial de edicións longo, de máis {{PLURAL:$1|dunha revisión|de $1 revisións}}.\nAo eliminala pódense provocar problemas de funcionamento nas operacións da base de datos de {{SITENAME}};\nproceda con coidado.", "deleteprotected": "Non pode borrar esta páxina porque está protexida.", "deleting-backlinks-warning": "Atención: [[Special:WhatLinksHere/{{FULLPAGENAME}}|Outras páxinas]] conteñen unha ligazón ou unha transclusión da páxina que está a piques de borrar.", + "deleting-subpages-warning": "Aviso: A páxina que quere eliminar ten [[Special:PrefixIndex/{{FULLPAGENAME}}/|{{PLURAL:$1|unha subpáxina|$1 subpáxinas|51=máis de 50 subpáxinas}}]].", "rollback": "Reverter as edicións", "rollbacklink": "reverter", "rollbacklinkcount": "reverter $1 {{PLURAL:$1|edición|edicións}}", @@ -2327,6 +2360,7 @@ "sp-contributions-newonly": "Mostrar só as edicións que crearon páxinas", "sp-contributions-hideminor": "Agochar as edicións pequenas", "sp-contributions-submit": "Procurar", + "sp-contributions-outofrange": "Non é posible amosar ningún resultado. O rango de direccións IP pedida é maior que os límites CIDR de /$1.", "whatlinkshere": "Páxinas que ligan con esta", "whatlinkshere-title": "Páxinas que ligan con \"$1\"", "whatlinkshere-page": "Páxina:", @@ -2615,7 +2649,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.", @@ -3439,7 +3473,7 @@ "fileduplicatesearch-noresults": "Non se atopou ningún ficheiro chamado \"$1\".", "specialpages": "Páxinas especiais", "specialpages-note-top": "Lenda", - "specialpages-note": "* Páxinas especiais normais.\n* Páxinas especiais restrinxidas.", + "specialpages-note-restricted": "* Páxinas especiais normais.\n* Páxinas especiais restrinxidas.", "specialpages-group-maintenance": "Informes de mantemento", "specialpages-group-other": "Outras páxinas especiais", "specialpages-group-login": "Rexistro", @@ -3558,6 +3592,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/glk.json b/languages/i18n/glk.json index d521606cf6..0cbdff40b8 100644 --- a/languages/i18n/glk.json +++ b/languages/i18n/glk.json @@ -348,6 +348,7 @@ "template-semiprotected": "(نيمه بپأسه)", "hiddencategories": "اي ولگ {{PLURAL:$1|ىکته جخۊته جرگه|$1 جخۊته جرگه}} مئن دره:", "moveddeleted-notice": "اي ولگ حذفأبؤکه.\nحذف ؤ اينتقالˇ سياهه اي ولگˇ ويسين اي بۊن نۊشؤن بدأکه.", + "content-model-wikitext": "ويکي-وؤت", "viewpagelogs": "اي ولگˇ سياهه'نه دئن", "currentrev-asof": "هسأىي نۊسخه تا $1", "revisionasof": "نۊسخه $1", @@ -356,10 +357,12 @@ "currentrevisionlink": "هسأىى نۊسخهٰ نۊشؤن دأن", "cur": "ألؤن", "last": "دأميشکي", + "history-feed-title": "دچينواچينؤنˇ تاريخچه", "rev-deleted-user": "(کارگيري نؤم حذفأبؤ)", "rev-delundel": "نۊشؤن دأن/جۊخۊسانئن", "revdelete-hide-user": "کارگيري نؤم/آى.پي", "revdelete-reason-dropdown": "*حذفˇ هرماله دليلؤن\n** چاکۊدنحقه نقض گۊدن\n** نظر ىا اطلاعاتي که مؤناسب نيه\n** کارگيري نؤمي که مؤناسب نيه\n** اطلاعاتي که اۊنˇ مئن تؤهمت دره", + "mergelog": "ادغامˇ سياهه", "history-title": "\"$1\"ˇ واگرداني تارئخ", "difference-title": "$1: نۊسخه'نˇ تؤفير", "lineno": "رچ $1:", @@ -426,6 +429,7 @@ "right-sendemail": "باخي کارگيرؤنه ايمىل بخسأن", "newuserlogpage": "کارگير چاگۊدنˇ سياهه", "newuserlogpagetext": "اي ىکته سياهه' کارگير چاگۊدنؤنˇ جي", + "rightslog": "کارگيرˇ اختياراتˇ سياهه", "action-edit": "اي ولگه دچينواچين بکۊن", "action-createaccount": "اي کارگيري حيسابه چاکۊن", "action-move-categorypages": "جرگه ولگؤنه جابجا گۊدن", @@ -469,6 +473,7 @@ "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|کارگير}} پىگير]", "rc-change-size-new": "$1 {{PLURAL:$1|باىت}} تغييرˇ پسي", "recentchangeslinked": "مۊرتبطˇ تغىيرؤن", + "recentchangeslinked-feed": "مۊرتبطˇ تغييرؤن", "recentchangeslinked-toolbox": "مۊرتبطˇ تغىيرؤن", "recentchangeslinked-title": "\"$1\"ˇ مۊرتبط تغييرؤن", "recentchangeslinked-summary": "اي جير، ىکته ليسته تينين بىنين آخري تغييرؤن أجي اۊ ولگؤنˇ مئن کي اي ولگˇ جي خال ببؤن (ىا جرگهٔ مؤردˇ نظرˇ جي). اۊ ولگؤني که [[Special:Watchlist|شيمئه پىگيري ليست]]۱ميئن دبۊن پۊررنگ نۊشؤن بدأبۊنن.", @@ -478,6 +483,7 @@ "upload-file-error-text": "وختي حقسأى بؤدبۊ که سرورˇ مئن ىکته مؤوقتي فاىل چاگۊده بۊبۊن، سأب بۊبؤ.\n\nىکته [[Special:ListUsers/sysop|کيا]] أمرأ تماس بگيرين.", "upload-misc-error-text": "جيرأکشئنˇ زمت، ىکته سأب بۊبؤ که مألۊم نيه چيسه.\nلؤطف بکۊنين بىنين اينترنتي نۊشؤني مؤعتبر ؤ دسفأرس ايسه ؤ هندئه حقسأى بکۊنين.\n\nأگه هندئه دۊرۊسأنۊبؤ، ىکته [[Special:ListUsers/sysop|کيا'ن]] أمرأ تماس بگيرين.", "img-auth-accessdenied": "شيمئه دسفأرس نيه", + "license": "جواز نؤمه:", "license-header": "جواز", "license-nopreview": "(پيشادئن ئبه هيچي ننأ)", "listfiles-userdoesnotexist": "\"$1\" کارگيري حيساب ثبت نۊبؤ.", @@ -519,7 +525,10 @@ "suppress": "دۊخۊسانگري", "booksources": "کيتابˇ سربسؤن", "booksources-search": "وامج", + "specialloguserlabel": "مۊجري:", "log": "سياههٰ‌ن", + "all-logs-page": "همته عۊمۊمي سياهه'ن", + "allpages": "همته ولگؤن", "allarticles": "همته ولگؤن", "allpagessubmit": "بۊشۊ", "categories": "جرگه'ن", @@ -538,6 +547,8 @@ "emailuser-title-target": "اي {{GENDER:$1|کارگيره}} ايمىل بخسأن.", "usermaildisabled": "نشأنه کارگير ئبه ايمىل خسأنئن.", "usermaildisabledtext": "شمه اي ويکي مئن مننين باخي کارگيرؤنه ايمىل بخسأنين", + "usermessage-editor": "سيستمˇ پيغؤم-رسؤن", + "watchlist": "پىگيتنؤنˇ ليست", "mywatchlist": "پىگيتنؤنˇ ليست", "watch": "پىگيتن", "wlheader-enotif": "فأندرˇ ايمىل کار کؤنه.", @@ -547,6 +558,8 @@ "alreadyrolled": "نشأنه [[:$1]]ˇ آخري دچينواچينه که [[User:$2|$2]] ([[User talk:$2|talk]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); بؤده، پساوگردانئن؛ اينˇ پيشي، ىک نفر وانيويسه دچينواچين ىا پساوگردان بؤده.\n\nولگˇ آخري دچينواچينه [[User:$3|$3]] ([[User talk:$3|talk]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]) بؤده.", "protectlogpage": "پأسنˇ سياهه", "protect-level-sysop": "فقط کيا'ن", + "restriction-edit": "دچينواچين", + "restriction-move": "جابجا گۊدن", "restriction-level-sysop": "قاىم بپأسه", "undeletehistorynoadmin": "اي ولگ حذفأبؤ.\nاي ولگˇ حذفأبؤنˇ دليل باني اۊ کارگيرؤنˇ نۊشؤني که حذفˇ پيشي اي ولگه دچينواچين بؤده بؤن، جيري فيچالˇ مئن بمأ.\nاي حذفأبؤ دچينواچينؤنˇ أصلˇ وؤت خالي کيا'نˇ دسفأرسه.", "namespace": "نؤمفضا:", @@ -558,10 +571,16 @@ "contributions": "{{GENDER:$1|کارگير}}ˇ مۊشارکتؤن", "mycontris": "مۊشارکتؤن", "anoncontribs": "مۊشارکتؤن", + "contribsub2": "{{GENDER:$3|$1}} ($2)ˇ ويسين", + "uctop": "(ألؤنˇ نۊسخه)", "month": "اي ماه مئن (ؤ دأميشک):", "year": "اي سالˇ مئن (ؤ دأميشک):", + "sp-contributions-blocklog": "دبۊستنˇ سياهه'ن", "sp-contributions-uploads": "جؤرأکشئنؤن", + "sp-contributions-logs": "سياههٰ‌ن", "sp-contributions-talk": "گب", + "sp-contributions-search": "مۊشارکتؤنˇ وامج", + "sp-contributions-username": "آى-پيˇ آدرس يا کارگيري نؤم:", "sp-contributions-submit": "وامج", "whatlinkshere": "هرچي خال ببؤ ائره", "whatlinkshere-title": "ولگؤني گه «$1»ˇ أمرأ خال دأنن", @@ -581,6 +600,7 @@ "contribslink": "ياوري‌ئن", "block-log-flags-nousertalk": "مننه خۊ گبˇ ولگه دچينواچين بکۊنه", "block-log-flags-hiddenname": "دۊخۊسانئه کارگيري نؤم", + "proxyblocker": "پراکسي دبۊستنچي", "movecategorypage-warning": "اخظار: شمه جرگه ولگه جابجا کأدرين. شيمه حواس بمؤنه کي فقط ولگ جابجا بنه ؤ ولگؤن قديمي جرگه مئن مؤنن ؤ تازه جرگه مئن نشنن.", "cant-move-category-page": "شمه اجازه ندأنين جرگهٰ‌نˇ ولگه جابجا بکۊنين.", "cant-move-to-category-page": "شمه ايجازه ندأنين ىکته ولگه ببرين ىکته جرگه ولگˇ مئن.", @@ -637,11 +657,22 @@ "tooltip-summary": "فيچالسه وارد بکۊنين", "pageinfo-header-edits": "تاريخچهٰ دچينواچين گۊدن", "pageinfo-header-restrictions": "ولگه پأسن", + "pageinfo-header-properties": "ولگˇ ويژگيئن", + "pageinfo-display-title": "تيتره نۊشؤن دأن", + "pageinfo-article-id": "ولگˇ شناسه", "pageinfo-robot-index": "مؤجاز", "pageinfo-firstuser": "ولگˇ چاکۊنکس", + "pageinfo-firsttime": "ولگˇ چاگۊدنˇ زمت", + "pageinfo-lastuser": "آخري دچينواچين گۊدنکس", + "pageinfo-lasttime": "آخري دچينواچينˇ تاريخ", + "pageinfo-edits": "همته دچينواچينؤنˇ تعداد", + "pageinfo-recent-edits": "آخري دچينواچينؤنˇ تعداد ($1 ˇ أخيرˇ ميئن)", + "pageinfo-recent-authors": "آخري تنها نويشتنکسؤنˇ تعداد", "pageinfo-hidden-categories": "جخۊته {{PLURAL:$1| جرگه|جرگه}} ( $1 )", "pageinfo-toolboxlink": "ولگˇ اطلاعات", + "pageinfo-contentpage-yes": "أهأ", "pageinfo-category-info": "جرگه اطلاعات", + "patrol-log-page": "گشتˇ سياهه", "previousdiff": "→ قديمي‌ترˇ دچينواچين", "nextdiff": "تازه‌ترˇ دچينواچين ←", "file-info-size": "$1 × $2 پیکسل، فاىلˇ واويراز: $3، نوع MIME فاىل: $4", @@ -661,6 +692,11 @@ "monthsall": "همه", "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|گب]])", "redirect-submit": "بۊشۊ", + "redirect-lookup": "وامج:", + "redirect-value": "مقدار:", + "redirect-user": "کارگيرˇ شناسه", + "redirect-page": "ولگˇ شناسه", + "redirect-revision": "ولگˇ نۊسخه", "redirect-file": "فايلˇ نؤم", "specialpages": "خاصˇ ولگؤن", "specialpages-group-login": "ديرين/ثبتˇ نؤم", @@ -669,6 +705,7 @@ "logentry-newusers-create": "کارگيري حساب $1 {{GENDER:$2|چاگۊده-بۊبؤ}}", "logentry-upload-upload": "$1 $3 {{GENDER:$2|جؤرأکشئه}}", "searchsuggest-search": "{{SITENAME}} مئن وامج", + "duration-days": "$1 رۊز", "expand_templates_preview": "پيشادئن", "default-skin-not-found": "اؤخ! پيشفرضˇ قالبي که شيمه ويکي ئبه مئن تعريف ببؤ به عنوانˇ $1، دسفرس نيه.\n\nبه نظر می‌آید نصب شما شامل پوسته‌های زیر می‌شود. [https://www.mediawiki.org/wiki/Manual:Skin_configuration راهنما: تنظیمات پوسته] را برای کسب اطلاعات در باره چگونگی فعال‌ساختن آن‌ها و انتخاب پیش‌فرض ببینید.\n\n$2\n\n; اگر اخیراً مدیاویکی را نصب کرده‌اید:\n: احتمالاً از گیت، یا به طور مستقیم از کد مبدأ که از چند متد دیگر استفاده می‌کند نصب کردید. انتظار می‌رود. چند {{PLURAL:$4|پوسته|پوسته}} از [https://www.mediawiki.org/wiki/Category:All_skins فهرست پوسته mediawiki.org] نصب کنید، که همراه چندین پوسته و افزونه هستند. شما می‌توانید شاخه skins/ را از آن نسخه‌برداری کرده و بچسبانید.\n\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins استفاده از گیت برای دریافت پوسته‌ها].\n: انجام این کار با مخزن گیت‌تان تداخل نمی‌کند اگر توسعه‌دهنده مدیاویکی هستید.\n\n; اگر اخیراً مدیاویکی را ارتقاء دادید:\n: مدیاویکی ۱٫۲۴ و تازه‌تر دیگر به طور خودکار پوسته‌های نصب‌شده را فعال نمی‌کند ([https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery راهنما: کشف خودکار پوسته] را ببینید). شما می‌توانید خطوط زیر را به داخل LocalSettings.php بچسبانید تا {{PLURAL:$5|همه|همه}} پوسته‌های نصب‌شده را فعال کنید:\n\n
    $3
    \n\n; اگر اخیراً LocalSettings.php را تغییر دادید:\n: نام پوسته‌ها را برای غلط املایی دوباره بررسی کنید." } diff --git a/languages/i18n/gor.json b/languages/i18n/gor.json index bafdb74270..8390907363 100644 --- a/languages/i18n/gor.json +++ b/languages/i18n/gor.json @@ -480,25 +480,37 @@ "minoredit": "Utiye biloli'o ngo'idi", "watchthis": "Dahayi halaman botiye", "savearticle": "Tahuwa halaman", + "preview": "Bilohipo", "showpreview": "Bilohi pratayang", "showdiff": "Popobilohe u loboli'a", "anoneditwarning": "Mopo'eela: Yi'o diipo tilumuwo. Alamat IP olemu ma ontonga lo tawu daata wonu yi'o momoli'o. Wonu Yi'o [$1 tumuwoto log] meyalo [$2 mohutu akun], u biloli'umu madiatribusikan ode tanggulumu, wolo huna uweewoliyo.", + "blockedtext": "'''Tanggulumu meyalo alamat IP ulemu ma diblokir.'''\n\nBlokir pilohutu lo $1.\nAlasani u yilohiliyo de'uwito ''$2''.\n\n* Blokir tilumula lonto: $8\n* Blokir mopulita to: $6\n* Sasaran pemblokiran: $7\n\nYi'o mowali mohubungi $1 meyalo [[{{MediaWiki:Grouppage-sysop}}|pengurus uweewo]] motombilu lo masalah botiye.\n\nYi'o ja mowali mopohuna fitur ''molawo surel ode pengguna botiye'' ngopohiya yi'o ma lopotuwoto alamat surel u sah to[[Special:Preferences|preferensi akun]] wawu yi'o didu diblokir mopomake.\n\nAlamat IP ulemu de'uwito $3, wawu ID pemblokiran de'uwito $5.\nWuduwa mayi tala tuwawu meyalo oluwo lo habari botiye to timi'idu yiyintu monto olemu.", "loginreqlink": "tumuwoto log", "newarticletext": "Yi'o lodudu'a wumbuta ode halaman diya'a. \nWonu mohutu halaman botiye, ketik tuwango halaman to kotak to tibawa botiye (bilohi [$1 halaman wubodu] ode habari wumbutiyo). \nWonu Yi'o ja sangaja tilumuwota ode halaman botiye, kutiya tombol mohuwalingo.", + "anontalkpagetext": "---\nUtiya halaman lo'iya ode pengguna anonim ta diipo lohutu akun, meyalo tita ta ja lopohuna.\nSababu uwito, ami lopohuna alamat IP u pilomakeliyo molapu oliyo.\nAlamat IP odito mowali pomake lotawu ngolo lota pe'eenta.\nWonu yi'o pengguna anonim wawu lorasa lo'iya lotawu ja mopiyohu ode olemu, toduwolo [[Special:CreateAccount|create a account]] meyalo [[Special:UserLogin|log in]] alihu mopelehiya u molilingu wolo pengguna anonim to sa'ati tuwawu.", "noarticletext": "Sa'ati botiye diya'a teks to halaman botiye.\nYi'o mowali [[Special:Search/{{PAGENAME}}|mololohu judul halaman botiye]] to halaman-halaman uweewo, [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} mololohu log a'ayita], meyalo [{{fullurl:{{FULLPAGENAME}}|action=edit}} mohutu halaman botiye].", "noarticletext-nopermission": "!Sa'ati botiye diya'a teks to halaman boptiye.\nYi'o mowali [[Special:Search/{{PAGENAME}}|mololohu judul halaman botiye]] to halaman-halaman uweewo, meyalo [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} mololohu log a'ayita], dabo Yi'o ja o ijin mohutu halaman botiye.", + "userpage-userdoesnotexist-view": "Ta ohu'uwo \"$1\" diyaalu to daputari.", + "clearyourcache": "Tuladu:Yilapato tilahu, yi'o musti lumawode to cache browser web bolo mo'oonto u yiloboli'a.\n* Firefox/Safari: Tahan Shift to'u yiloduto Reload, meyalo woduta Ctrl-F5 meyalo Ctrl-R (⌘-R di Mac)\n* Google Chrome: Woduta Ctrl-Shift-R (⌘-Shift-R di Mac)\n* Internet Explorer: Woduta Ctrl to'u yiloduto Refresh, meyalo woduta Ctrl-F5\n* Opera: Pergi ke Menu → Settings (Opera → Preferences di Mac) lalu ke Privacy & security → Clear browsing data → Cached images and files.", + "previewnote": "Elayi utiye bo mopobilohu.\nU biloli'umu diipo tilahu!", + "continue-editing": "Ntali ode area momoli'o", "editing": "Momoli'o $1", "creating": "Mohutu $1", "editingsection": "Momoli'o $1 (tayadu)", "yourdiff": "Hihede", "templatesused": "{{PLURAL:$1|Template}} pilopohuna to halaman botiye:", + "templatesusedpreview": "{{PLURAL:$1|Template|Templates}} pilomake to'u mopobilohu.", "template-protected": "(he dahalo)", "template-semiprotected": "(dahalo-ngowa)", "hiddencategories": "Halaman botiye woluwo anggota {{PLURAL:$1|1 kategori wanto-wanto'o $1}}:", + "permissionserrors": "Tilala haku momu'o", "permissionserrorstext-withaction": "Yi'o ja haku akses $2, sababu {{PLURAL:$1|alasani}} botiya:", - "moveddeleted-notice": "Halaman botiye ma yiluluto.\nSebagai referensi, botiya log piloluluta wawu piloheyiya halaman botiye.", + "recreate-moveddeleted-warn": "Mopo'ota: Yi'o lohutu ulangi hlaman u ma yiluluto.\n\nPopotimbangiyapo huhutumu botiye delo mowali poturusiyolo.\nBotiya log piloluluta wawu piloheyiya halaman botiye.", + "moveddeleted-notice": "Halaman botiye ma yiluluto.\nLog piloluluta, pilodahawa wawu piloheyiya halaman botiye woluwo to tibawa pohutu referensi.", "postedit-confirmation-saved": "Biloli'umu ma tilahu.", "edit-already-exists": "Ja mowali mohutu halaman bohu. Ma woluwo.", + "content-model-wikitext": "tuladu wiki", + "undo-failure": "U biloli'a botiya ja mowali pohuwalingo sababu lodulehe ta lomoli'o.", "viewpagelogs": "Bilohi log lo halaman botiye", "currentrev-asof": "Biloli'o pulitiyo to $1", "revisionasof": "Biloli'o to $1", @@ -508,22 +520,32 @@ "currentrevisionlink": "Biloli'o pulitiyo", "cur": "mst", "last": "diipo", + "histlegend": "Tulawota diff: Tuwoti kasi lo radio loboli'a u mopobandingiyo wawu woduta enter meyalo tombol to tibawa.
    \nLegenda: ({{int:cur}}) = hihede wolo biloli'a pulitiyo, ({{int:last}}) = hihede wolo u biloli'a muloolo, {{int:minoreditletter}} = bilili'o ngo'idi.", "history-fieldset-title": "Lolohe u biloli'o", "histfirst": "mohihewo da'a", "histlast": "bohu da'a", + "history-feed-title": "Riwayati lo'u biloli'o", + "history-feed-description": "Riwayati bilolio to halaman wiki botiye", + "history-feed-item-nocomment": "$1 to $2", "rev-delundel": "popobilohe/wanto'a", + "mergelog": "Log mopohimbunguwo", "history-title": "Riwayati lo'u loboli'a lonto \"$1\"", "difference-title": "$1 hihede revisi", "lineno": "Baarisi $1:", + "compareselectedversions": "Popotadenga u tilulawoto", "editundo": "pohuwalinga", + "diff-empty": "(Diya'a hihedeliyo)", "diff-multi-sameuser": "({{PLURAL:$1|$1 revisi wolota}} pilohutu lo tawu ngota ja pilopobilohu)", + "diff-multi-otherusers": "({{PLURAL:$1|Tuwawu lopo'opiyohu wolota|$1 lopo'opiyohu wolota}} pilohutu {{PLURAL:$2|ngota ta ohu'uwo uweewo|$2 ta ohu'uwo}} ja pilopobilohu)", "searchresults": "U yilotapu", "searchresults-title": "U yilotapu lololohe \"$1\"", "prevn": "{{PLURAL:$1|$1}} to'udiipo", "nextn": "{{PLURAL:$1|$1}} lapatiyoma'o", + "prevn-title": "To'u diipo $1 {{PLURAL:$1|hasili}}", "nextn-title": "$1 {{PLURAL:$1|hasili}}lapatiyoma'o", "shown-title": "Popobilohe $1 {{PLURAL:$1|haasili}} per halaman", "viewprevnext": "Bilohi ($1 {{int:pipe-separator}} $2) ($3)", + "searchmenu-exists": "Woluwo halaman otanggula \"[[:$1]]\" to wiki botiye. {{PLURAL: $2|0=|Bilohi olo u yilotapu uweewo.}}", "searchmenu-new": "mohutu halaman \"[[:$1]]\" to wiki botiya! {{PLURAL:$2|0=Bilohi halaman u yilotapu yilolohumu.|Bilohi hasili u yilotapu to'u yilolohu}}", "searchprofile-articles": "Tuwango halaman", "searchprofile-images": "Multimedia", @@ -534,27 +556,34 @@ "searchprofile-everything-tooltip": "Mololohe nga'amila tuwango situs (wolo halaman polo'iyalo)", "searchprofile-advanced-tooltip": "Mololohu to huwali lo tanggulo biasa", "search-result-size": "$1 ({{PLURAL:$2|1 tahe|$2 tahe}})", + "search-result-category-size": "{{PLURAL:$1|1 anggota|$1 anggota}} ({{PLURAL:$2|1 subkategori|$2 subkategori}}, {{PLURAL:$3|1 berkas|$3 berkas}})", "search-redirect": "(pilobale lonto $1)", "search-section": "(tayadu) $1", + "search-file-match": "(sama lo tuwango berkas)", "search-suggest": "Patujumu yito:$1", "searchall": "nga'amila", "search-showingresults": "{{PLURAL:$4|hASIL $1 of $3|Hasil $1 - $2 lonto $3}}", "search-nonefound": "Diya'a hasili mohumayawa lo kriteria", "powersearch-toggleall": "Nga'amila", "powersearch-togglenone": "Diya'a", - "powersearch-remember": "Eelayi u tilulawoto wonu mololohe pe'eentamayi", + "powersearch-remember": "Toloma u tilulawoto wonu mololohe pe'eenta mayi", "mypreferences": "Preperensi", "prefs-skin": "Alipo", "searchresultshead": "Lolohe", "prefs-searchoptions": "Lolohe", "prefs-namespaces": "Huwali lo tanggulo", - "default": "Kakali", + "default": "kakali", "yourrealname": "Tanggula banari", "yourlanguage": "Bahasa", + "group-bot": "Bot", + "group-sysop": "Pengurus", "grouppage-bot": "{{ns:project}}:Bot", + "grouppage-sysop": "{{ns:project}}:Pengurus", "right-writeapi": "Mopohuna API moluladu", "newuserlogpage": "Log ta ohu'uwo bohu", + "rightslog": "Log haku ta ohu'uwo", "action-edit": "boli'a halaman botiye", + "action-createaccount": "mohutu akun lo ta ohu'uwo botiya", "enhancedrc-history": "riwayati", "recentchanges": "Boheli loboli'a mola", "recentchanges-legend": "Tulawotolo boheli loboli'a mola", @@ -568,6 +597,7 @@ "recentchanges-label-plusminus": "Loboli'o tu'udu halaman boti to delomo bita", "recentchanges-legend-heading": "Keterangan:", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (bilohi olo [[Special:NewPages|list of new pages]])", + "rcnotefrom": "To tibawa botiye {{PLURAL:$5|loboli'a}} anggadu $3, $4 (popobilohe sambe $1 loboli'a).", "rclistfrom": "Popobilohe u loboli'a lonto $2, $3", "rcshowhideminor": "$1 biloli'o ngo'idi", "rcshowhideminor-show": "Popobilohe", @@ -581,6 +611,7 @@ "rcshowhideanons": "$1 biloli'o lo tawu weewo", "rcshowhideanons-show": "Popobilohe", "rcshowhideanons-hide": "Wanto'a", + "rcshowhidepatr": "$1 biloli'o terpatroli", "rcshowhidemine": "$1 biloli'u'u", "rcshowhidemine-show": "Popobilohe", "rcshowhidemine-hide": "Wanto'a", @@ -595,15 +626,19 @@ "rc-change-size-new": "$1 {{PLURAL:$1|bita}} lapato biloli'o", "rc-old-title": "bohuliyo pilohutu odelo \"$1\"", "recentchangeslinked": "Loboli'a wayitiyo", + "recentchangeslinked-feed": "Loboli'a wayitiyo", "recentchangeslinked-toolbox": "Loboli'o wayitiyo", "recentchangeslinked-title": "Loboli'a a'aayita wolo $1", "recentchangeslinked-summary": "Utiye daputari lo'ubawa to halaman a'ayita wolo halaman tuwawu (meyalo tayadu to kategori tuwawu)\nHalaman to [[Special:Watchlist|he'awasiyamu]] ontonga cetakiya mohulodu.", "recentchangeslinked-page": "Tanggulo halaman:", "recentchangeslinked-to": "Poppobilohe loboli'a to halaman wayitiyo wolo halaman hepoposadiyalo", "upload": "Detohe berkas", + "uploadlogpage": "Detohu log", "filedesc": "Limbu'o", + "license": "Lisensi", "license-header": "Tayadu lisensi", "imgfile": "berkas", + "listfiles": "Daputari berkas", "file-anchor-link": "Berkas", "filehist": "Riwaayati lo berkas", "filehist-help": "Klik to tanggal/wakutu momilohe berkas to saa'ati botiye.", @@ -612,38 +647,66 @@ "filehist-datetime": "Tanggal/Wakutu", "filehist-thumb": "Kiki'o", "filehist-thumbtext": "u kiki'o versi lo $1", + "filehist-nothumb": "Diya'a gambari kikino", "filehist-user": "Ta ohu'uwo", "filehist-dimensions": "Dimensi", "filehist-comment": "Lo'iya", "imagelinks": "Berkas u pilopohuna", "linkstoimage": "{{PLURAL:$1|halaman lapatiyoma'o}} o wumbuta ode berkas botiye:", + "linkstoimage-more": "Limbata lo $1 {{PLURAL:$1|halaman}} o wumbuta ode berkas botiye.\nDaputari botiya mopobilohu {{PLURAL:$1|wumbuta halaman bungaliyo}} ode berkas botiye wamba'o.\nWoluwo [[Special:WhatLinksHere/$2|daputari ganapu]] u sadi-sadiya.", "nolinkstoimage": "Diya'a halaman u owumbuta ode berkas botiye", + "linkstoimage-redirect": "$1 (mopobale berkas) $2", "sharedupload-desc-here": "Berkas botiye lonto $1 wawu hepohunaliyo to poroyek uweewo.\nDeskripsi lonto [$2 halaman deskripsiliyo] woluwo to tibawa botiya.", + "filepage-nofile": "Diya'a berkas lo tanggula botiye", "upload-disallowed-here": "Yi'o diila mowali modeehe berkas botiye", "randompage": "Halaman totonula", "statistics": "Statistik", + "double-redirect-fixer": "Revisi mopobale", "nbytes": "$1 {{PLURAL:$1|bita}}", "nmembers": "$1 {{PLURAL:$1|tuwango}}", + "prefixindex": "Nga'amila halaman woluwo awalan", "listusers": "Daputari ta ohu'uwo", "newpages": "Halaman bohu", + "move": "Heyiya", "pager-newer-n": "{{PLURAL:$1|bohu da'a|$1bohu da'a}}", "pager-older-n": "{{PLURAL:$1|$1 mohihewo}}", "booksources": "Bungo buku", "booksources-search-legend": "Lolohe to bungo lo buku", "booksources-search": "Lolohe", + "specialloguserlabel": "Ta ohu'uwo", + "speciallogtitlelabel": "Target (judul meyalo{{ns:ta ohu'uwo}}:tanggulo ta ohu'uwo ode ta ohu'uwo)", "log": "Log", + "all-logs-page": "Nga'amila log publik", + "alllogstext": "Himbunguwa nga'amila log u sadi-sadiya to {{SITENAME}}.\nYi'o mowali mopo'okikingo bibilohu lo'u molulawota tayadu log, tanggulo ta ohu'uwo (sensitif kapitalisasi), meyalo judul halaman (sensitif kapitalisasi olo).", + "logempty": "Ja yilotapu entri log u mohumayawa.", + "allpages": "Nga'amila halaman", "allarticles": "Nga'amila halaman", "allpagessubmit": "Ntali", + "allpages-hide-redirects": "Wanto'a mopobale", "categories": "Kategori", + "listgrouprights-members": "(daputari lo anggota)", + "emailuser": "Lawola surel ta ohu'uwo botiye", + "usermessage-editor": "Sistem lo tahuli", + "watchlist": "U he'awasiyalo", "mywatchlist": "Daputari he'awasiyalo", + "watchlistfor2": "Ode $1 $2", "watch": "Dahayi", + "unwatch": "Batali mongawasi", + "watchlist-details": "{{PLURAL:$1|$1 halaman}} to dputari he'awasiyamu, ja wayitiyo halaman lo'iya.", + "wlheader-showupdated": "Halaman ma loboli'a to pulitiyo nila'omu mowali bilohela to bold.", + "wlnote": "To tibawa botiye {{PLURAL:$1|loboli'a|$1 loboli'a}} pulitiyo to delomo {{PLURAL:$2|jam|$2 jam}}, per $3, $4.", "wlshowlast": "Popobilohe $1 jam $2 dulahe pulitiyo", + "watchlist-options": "Tulawoto daputari he'awasiyalo", + "enotif_reset": "Tuwoti nga'amila halaman ma nila'o", "dellogpage": "Log loluluto", "rollbacklink": "wuwalinga", "rollbacklinkcount": "pohuwalinga $1 {{PLURAL:$1|biloli'o}}", "protectlogpage": "Log mopo'aamani", "protectedarticle": "modaha \"[[$1]]\"", + "modifiedarticleprotection": "momoli'a lenggota lo dudaha ode \"[[$1]]\"", "protect-default": "Poluliya nga'amila ta ohu'uwo", + "restriction-edit": "Boli'a", + "restriction-move": "Heyiya", "namespace": "Huwali lo tanggulo", "invert": "Pohuwalinga tilulawoto", "tooltip-invert": "Centang kotak botiye u mopowanto'o halaman yiloboli'a to delomo huwali lo tanggulo tilulawoto (wawu huwali lo tanggulo a'ayita wanu dicentang)", @@ -651,14 +714,23 @@ "tooltip-namespace_association": "Centang halaman botiye u mopowayito huwali lo tanggulo lo'iyawa meyalo subjek u a'ayita wolo huwali lo tanggulo u tilulawoto.", "blanknamespace": "(Bungaliyo)", "contributions": "Kontribusi {{GENDER:$1|Ta ohu'uwo}}", + "contributions-title": "Kontribusi ta ohu'uwo ode $1", "mycontris": "Kontribusi", "anoncontribs": "Kontribusi", + "contribsub2": "Ode {{GENDER:$3|$1}} ($2)", + "nocontribs": "Diya'a u loboli'a mohumayawa lo kriteria botiya.", "uctop": "(masatiya)", "month": "Lonto hulalo (wawu to'udiipo)", "year": "Lonto taawunu (wawu to'udiipo)", + "sp-contributions-newbies": "Popobilohe bo lonto ta ohu'uwo bohu", + "sp-contributions-blocklog": "bubuli log", + "sp-contributions-uploads": "u diletohu", "sp-contributions-logs": "log", "sp-contributions-talk": "lo'iya", "sp-contributions-search": "Lolohe kontribusi", + "sp-contributions-username": "Alamat IP meyalo tanggulo ta ohu'uwo", + "sp-contributions-toponly": "Popobiloho bo biloli'a to yitaato", + "sp-contributions-newonly": "Popobilohe biloli'o bo u lohutu halaman", "sp-contributions-submit": "Lolohe", "whatlinkshere": "Wumbuta", "whatlinkshere-title": "Halaman botiye o wumbuta ode \"$1\"", @@ -676,11 +748,19 @@ "whatlinkshere-hidelinks": "$1 wumbuta", "whatlinkshere-hideimages": "$1 berkas wumbuta", "whatlinkshere-filters": "U'ayahu", + "ipboptions": "2 jam:2 hours,1 huyi:1 day,3 huyi:3 days,1 diminggu:1 week,2 diminggu:2 weeks,1 hula:1 month,3 hula:3 months,6 hula:6 months,1 taawunu:1 year,layito:infinite", + "infiniteblock": "ja to enggade", "blocklink": "tangguwalo", "contribslink": "kontrib", + "blocklogpage": "Bubuli log", + "blocklogentry": "momubulo [[$1]] wolo pulito wakutu $2 $3", + "reblock-logentry": "momoli'o blokir [[$1]] wolo wakutu pulitiyo $2 $3", + "block-log-flags-nocreate": "mohutu akun pilateyaliyo", + "proxyblocker": "Bubulo proxi", "movelogpage": "Log piloheyiya", "export": "Ekspor halaman", "thumbnail-more": "Po'odamanga", + "importlogpage": "Log impor", "tooltip-pt-userpage": "Halaman {{GENDER:|Yi'o ta ohu'uwo}}", "tooltip-pt-mytalk": "Halaman {{GENDER:|posilitamu}}", "tooltip-pt-preferences": "Preferensi{{GENDER:|Yi'o}}", @@ -714,6 +794,7 @@ "tooltip-t-recentchangeslinked": "Boheli loboli'a mola to halaman owumbuta ode halaman botiye", "tooltip-feed-atom": "Paalo atom ode halaman botiya", "tooltip-t-contributions": "Daputari kontribusi {{GENDER:$1|ta ohu'uwo botiye}}", + "tooltip-t-emailuser": "Lawola surel ode {{GENDER:$1|ta ohu'uwo botiye}}", "tooltip-t-upload": "Detohe berkas-berkas", "tooltip-t-specialpages": "Daputari nga'amila halaman spesial", "tooltip-t-print": "Persi ciletaki halaman botiye", @@ -723,20 +804,58 @@ "tooltip-ca-nstab-special": "Utiye halaman istimewa, wawu ja mowali boli'olo", "tooltip-ca-nstab-project": "Bilohi halaman poroyek", "tooltip-ca-nstab-image": "Bilohi berkas lo halaman", + "tooltip-ca-nstab-mediawiki": "Bilohi tahuli lo sistem", "tooltip-ca-nstab-template": "Bilohi template", "tooltip-ca-nstab-category": "Bilohi kategori halaman", + "tooltip-minoredit": "Tuwoti utiye biloli'a kiki'o", "tooltip-save": "Tahuwa u biloli'umu", "tooltip-preview": "Bilohipo u biloli'umu. Popopasiya utiye to'u diipo molahu.", "tooltip-diff": "Bilohi u loboli'o pilohutumu", "tooltip-compareselectedversions": "Bilohi hihede lohalaman duluwo u tilulawoto.", + "tooltip-watch": "Poduhengama'o halaman botiye to daputari he'awasiyalo", "tooltip-rollback": "\"Wuwalingo\" lopobatali u pilo'opiyohu to halaman botiye ode kontributor pulitiyo pe'enta lo klik.", "tooltip-undo": "\"wuwalingo\" lopobatali u biloli'a botiye wawu lomu'o kotak momoli'o wolo mode pratayang. Alasani mowali duhengalo to kotak limbu-limbu'o.", "tooltip-summary": "Tuwota tulade limbu-limbu'o", "simpleantispam-label": "Momarakisa anti-spam.\nkekeya tuwangalo!", + "pageinfo-title": "Informasi untuk \"$1\"", + "pageinfo-header-basic": "Bungo lo habari", + "pageinfo-header-edits": "Riwayati lomoli'o", + "pageinfo-header-restrictions": "Dudaha halaman", + "pageinfo-header-properties": "Properti halaman", + "pageinfo-display-title": "Judul bibilohu", + "pageinfo-default-sort": "Tunuhe u'unti kakali", + "pageinfo-length": "Haya'o halaman (to delomo bita)", + "pageinfo-article-id": "ID Halaman", + "pageinfo-language": "Bahasa tuwango halaman", + "pageinfo-content-model": "Model tuwango halaman", + "pageinfo-robot-policy": "Pengindeksan monto robot", + "pageinfo-robot-index": "Mowali (lo'otapu ijini)", + "pageinfo-robot-noindex": "Ja mowali", + "pageinfo-watchers": "Jumula lo ta hemongawasi halaman", + "pageinfo-few-watchers": "I'ilangi to'u $1 {{PLURAL:$1|pengunjung}}", + "pageinfo-redirects-name": "Jumula u pilobale ode halaman botiya", + "pageinfo-subpages-name": "Nomoro meyalo tayadu halaman botiye", + "pageinfo-subpages-value": "$1 ($2 {{PLURAL:$2|mopobale}}; $3 {{PLURAL:$3|non-mopobale}})", + "pageinfo-firstuser": "Ta lohutu halaman", + "pageinfo-firsttime": "Tanggal pilohutuwa halaman", + "pageinfo-lastuser": "Ta lolulade pulitiyo", + "pageinfo-lasttime": "Tanggal lomoli'a pulitiyo", + "pageinfo-edits": "Jumula nga'amila u biloli'o", + "pageinfo-authors": "Jumula nga'amila ta hepolulade hihihede", + "pageinfo-recent-edits": "Jumula boheli biloli'a mola (to delomo $1 pulitiyo)", + "pageinfo-recent-authors": "Jumula lo ta hepolulade bohu hihihede", + "pageinfo-magic-words": "{{PLURAL:$1|kata}} ajaib ($1)", + "pageinfo-hidden-categories": "{{PLURAL:$1|dalala}} wanto-wanto'o ($1)", + "pageinfo-templates": "{{PLURAL:$1|templat}} yang ditransklusi ($1)", "pageinfo-toolboxlink": "Halaman habari", + "pageinfo-contentpage": "Yirekeni odelo halaman konten", + "pageinfo-contentpage-yes": "Jo", + "patrol-log-page": "Log patroli", "previousdiff": "← Biloli'o to'udiipo", "nextdiff": "Biloli'o lapatiyoma'o →", + "widthheightpage": "$1 × $2, $3 {{PLURAL:$3|halaman}}", "file-info-size": "$1 x $2 piksel, tu'udu berkas:$3, MIME tipe: $4", + "file-info-size-pages": "$1 × $2 piksel, ukuran berkas: $3, tipe MIME: $4, $5 {{PLURAL:$5|halaman}}", "file-nohires": "Diya'a resolusi damango", "svg-long-desc": "Berkas SGV, nominal $1 x $2 piksel, damango berkas:$3", "show-big-image": "Berkas asli", @@ -760,14 +879,42 @@ "exif-orientation-1": "Normal", "namespacesall": "nga'amila", "monthsall": "nga'amila", + "imgmultipagenext": "halaman wumbutiyo", + "imgmultigo": "Ntali", + "imgmultigoto": "Ntali ode halaman $1", + "watchlisttools-clear": "Luluta daputari he'awasiyalo", + "watchlisttools-view": "Popobilohe u loboli'a wayitiyo", + "watchlisttools-edit": "Popobilohe wawu boli'a daputari he'awasiyalo", + "watchlisttools-raw": "Boli'a daputari he'awasiyalo meenggo", "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|bisala]])", + "redirect": "Lopobale payu ID berkas, ta ohu'uwo, halaman, revisi, meyalo log", + "redirect-summary": "Halaman istimewa botiye loheyi ode berkas (odelo tanggulo berkasliyo), halaman (sesuai ID revisinya), meyalo halaman pengguna (sesuai ID numerik penggunanya). Penggunaan: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], meyalo[[{{#Special:Redirect}}/user/101]].", + "redirect-submit": "Ntali", + "redirect-lookup": "Yilolohu", + "redirect-value": "Niai", + "redirect-user": "ID lo ta ohu'uwo", + "redirect-page": "ID Halaman", + "redirect-revision": "Halaman biloli'o", + "redirect-file": "Tanggulo berkas", "specialpages": "Halaman Spesial", "tag-filter": "[[Special:Tags|Tag]]filter:", "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Tag}}]]: $2)", "tags-active-yes": "Jo", + "tags-active-no": "De'e", + "tags-hitcount": "$1 {{PLURAL:$1|boli'o|loboli'a}}", "logentry-delete-delete": "$1 {{GENDER:$2|moluluto}}halaman $3", + "logentry-delete-restore": "$1 {{GENDER:$2|mopowuwalingo}} halaman $3 ($4)", + "logentry-delete-revision": "$1 {{GENDER:$2|momoli'o}} bibilohu {{PLURAL:$5|$5 revisi}} to halaman $3: $4", + "revdelete-content-hid": "tuwango yilanto'o", "logentry-move-move": "$1 {{GENDER:$2|moheyi}} halaman $3 ode $4", + "logentry-move-move-noredirect": "$1 {{GENDER:$2|loheyi}} halaman $3 ode $4 ja lohutu pengalihan", + "logentry-move-move_redir": "$1 {{GENDER:$2|loheyi}} halaman $3 ode $4 lodeehu pengalihan", + "logentry-patrol-patrol-auto": "$1 otomatis {{GENDER:$2|tuwoti}} biloli'o $4 lonto halaman $3 pilatroli", "logentry-newusers-create": "Ta ohu'uwo akun $1 {{GENDER:$2|mohutu}}", + "logentry-newusers-autocreate": "Akun $1 {{GENDER:$2|pilohutu}} otomatis", "logentry-upload-upload": "$1 {{GENDER:$2|mengunggah}} $3", - "searchsuggest-search": "Lolohe {{SITENAME}}" + "logentry-upload-overwrite": "$1 {{GENDER:$2|mopodetohu}} versi bohu lo $3", + "searchsuggest-search": "Lolohe {{SITENAME}}", + "duration-days": "$1 {{PLURAL:$1|huyi}}", + "randomrootpage": "Halaman totonulalo" } diff --git a/languages/i18n/got.json b/languages/i18n/got.json index fd90bda66e..d848eec694 100644 --- a/languages/i18n/got.json +++ b/languages/i18n/got.json @@ -78,6 +78,7 @@ "category_header": "𐌻𐌰𐌿𐌱𐍉𐍃 𐌹𐌽 𐌺𐌿𐌽𐌾𐌰 \"$1\"", "subcategories": "𐌼𐌹𐌽𐌽𐌹𐌶𐍉𐌽𐌰 𐌺𐌿𐌽𐌾𐌰", "category-media-header": "𐌼𐌴𐌳𐌾𐌰 𐌹𐌽 𐌺𐌿𐌽𐌾𐌰 \"$1\"", + "category-empty": "𐌸𐌰𐍄𐌰 𐌺𐌿𐌽𐌹 𐌽𐌿 𐌽𐌹 𐌷𐌰𐌱𐌰𐌹𐌸 𐌻𐌰𐌿𐌱𐌰𐌽𐍃 𐌸𐌰𐌿 𐌼𐌰𐌹𐌳𐌾𐌰.", "hidden-categories": "{{PLURAL:$1|𐌰𐍆𐍆𐌹𐌻𐌷𐌰𐌽 𐌺𐌿𐌽𐌹|𐌰𐍆𐍆𐌹𐌻𐌷𐌰𐌽𐌰 𐌺𐌿𐌽𐌾𐌰}}", "hidden-category-category": "𐌰𐍆𐍆𐌹𐌻𐌷𐌰𐌽𐌰 𐌺𐌿𐌽𐌾𐌰", "category-subcat-count": "{{PLURAL:$2|𐌸𐌰𐍄𐌰 𐌺𐌿𐌽𐌹 𐌷𐌰𐌱𐌰𐌹𐌸 𐌸𐌰𐍄𐌴𐌹𐌽𐌴𐌹 𐌹𐍆𐍄𐌿𐌼 𐌼𐌹𐌽𐌽𐌹𐌶𐍉𐌽 𐌺𐌿𐌽𐌹|𐌸𐌰𐍄𐌰 𐌺𐌿𐌽𐌹 𐌷𐌰𐌱𐌰𐌹𐌸 {{PLURAL:$1|𐌼𐌹𐌽𐌽𐌹𐌶𐍉𐌽 𐌺𐌿𐌽𐌹|𐌹𐍆𐍄𐌿𐌼𐌰 $1 𐌼𐌹𐌽𐌽𐌹𐌶𐍉𐌽𐌰 𐌺𐌿𐌽𐌾𐌰}}, 𐌰𐌻𐌻𐌰𐌹𐌶𐌴 $2 𐌺𐌿𐌽𐌾𐌴.}}", @@ -92,10 +93,6 @@ "mytalk": "𐌲𐌰𐍅𐌰𐌿𐍂𐌳𐌾𐌰", "navigation": "𐌻𐌰𐌿𐌱𐌰𐌲𐌰𐍅𐌹𐍃𐍃𐌴𐌹𐍃", "and": "𐌾𐌰𐌷", - "qbfind": "𐌱𐌹𐌲𐌹𐍄", - "qbedit": "𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹", - "qbpageoptions": "𐍃𐌰 𐌻𐌰𐌿𐍆𐍃", - "qbmyoptions": "𐌼𐌴𐌹𐌽𐌰𐌹 𐌻𐌰𐌿𐌱𐍉𐍃", "actions": "𐍄𐍉𐌾𐌰", "namespaces": "𐌽𐌰𐌼𐌰𐍂𐌿𐌼𐌰", "variants": "𐌼𐌹𐍃𐍃𐌰𐌻𐌴𐌹𐌺", @@ -116,25 +113,17 @@ "view-foreign": "𐍃𐌰𐌹𐍈 𐌰𐌽𐌰 $1", "edit": "𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹", "create": "𐍃𐌺𐌰𐍀𐌴𐌹", - "editthispage": "𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹 𐌸𐌰𐌽𐌰 𐌻𐌰𐌿𐍆", - "create-this-page": "𐍃𐌺𐌰𐍀𐌴𐌹 𐌸𐌰𐌽𐌰 𐌻𐌰𐌿𐍆", "delete": "𐍆𐍂𐌰𐌵𐌹𐍃𐍄𐌴𐌹", - "deletethispage": "𐍆𐍂𐌰𐌵𐌹𐍃𐍄𐌴𐌹 𐌸𐌰𐌼𐌼𐌰 𐌻𐌰𐌿𐌱𐌰", - "undeletethispage": "𐌽𐌰𐍃𐌴𐌹 𐌸𐌰𐌽𐌰 𐌻𐌰𐌿𐍆", "protect": "𐍆𐍂𐌹𐌸", "protect_change": "𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹", - "protectthispage": "𐍆𐍂𐌹𐌸 𐌸𐌰𐌽𐌰 𐌻𐌰𐌿𐍆", "unprotect": "𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹 𐌼𐌿𐌽𐌳", - "unprotectthispage": "𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹 𐌼𐌿𐌽𐌳 𐌸𐌹𐍃 𐌻𐌰𐌿𐌱𐌹𐍃", "newpage": "𐌽𐌹𐌿𐌾𐌹𐍃 𐌻𐌰𐌿𐍆𐍃", - "talkpage": "𐍂𐍉𐌳𐌴𐌹 𐌱𐌹 𐌸𐌰𐌽𐌰 𐌻𐌰𐌿𐍆", - "talkpagelinktext": "𐌲𐌰𐍅𐌰𐌿𐍂𐌳𐌾𐌰", + "talkpagelinktext": "𐌲𐌰𐍅𐌰𐌿𐍂𐌳𐌹", "specialpage": "𐌿𐍃𐍃𐌹𐌽𐌳𐍃 𐌻𐌰𐌿𐍆𐍃", "personaltools": "𐍃𐍅𐌴𐍃𐌰𐌹 𐍃𐌰𐍂𐍅𐌰𐌽𐍃", - "talk": "𐌲𐌰𐍅𐌰𐌿𐍂𐌳𐌾𐌰", + "talk": "𐌲𐌰𐍅𐌰𐌿𐍂𐌳𐌹", "views": "𐍃𐌹𐌿𐌽𐌴𐌹𐍃", "toolbox": "𐍃𐌰𐍂𐍅𐌰𐌽𐍃", - "projectpage": "𐌰𐌽𐌳𐌷𐌿𐌻𐌴𐌹 𐍆𐌰𐌿𐍂𐌰𐍅𐌰𐌿𐍂𐍀𐌰𐌻𐌰𐌿𐍆", "mediawikipage": "𐌰𐌽𐌳𐌷𐌿𐌻𐌴𐌹 𐍅𐌰𐌿𐍂𐌳𐌰𐌻𐌰𐌿𐍆", "viewhelppage": "𐌰𐌽𐌳𐌷𐌿𐌻𐌴𐌹 𐌷𐌹𐌻𐍀𐌰𐌻𐌰𐌿𐍆", "otherlanguages": "𐌰𐌽𐌸𐌰𐍂𐌰𐌹𐌼 𐍂𐌰𐌶𐌳𐍉𐌼", @@ -176,19 +165,20 @@ "confirmable-yes": "𐌾𐌰", "confirmable-no": "𐌽𐌴", "site-rss-feed": "$1 RSS 𐍂𐌹𐌽𐌽𐍉", - "site-atom-feed": "$1 𐌰𐍄𐍉𐌼 𐍂𐌹𐌽𐌽𐍉", + "site-atom-feed": "$1 𐌰𐍄𐌰𐌿𐌼 𐍂𐌹𐌽𐌽𐍉", "page-atom-feed": "\"$1\" 𐌰𐍄𐍉𐌼 𐍂𐌹𐌽𐌽𐍉", "red-link-title": "$1 (𐌻𐌰𐌿𐍆𐍃 𐌽𐌹𐍃𐍄)", "nstab-main": "𐌻𐌰𐌿𐍆𐍃", "nstab-user": "𐌱𐍂𐌿𐌺𐌾𐌰𐌻𐌰𐌿𐍆𐍃", "nstab-special": "𐌿𐍃𐍃𐌹𐌽𐌳𐍃 𐌻𐌰𐌿𐍆𐍃", "nstab-project": "𐍆𐌰𐌿𐍂𐌰𐍅𐌰𐌿𐍂𐍀𐌰𐌻𐌰𐌿𐍆𐍃", - "nstab-image": "𐍆𐌰𐌴𐌹𐌻", + "nstab-image": "𐍆𐌰𐌾𐌻", "nstab-mediawiki": "𐍅𐌰𐌿𐍂𐌳", "nstab-template": "𐍃𐌺𐌴𐌹𐍂𐌴𐌹𐌽𐌹𐍆𐍂𐌹𐍃𐌰𐌷𐍄𐍃", "nstab-help": "𐌷𐌹𐌻𐍀𐌰𐌻𐌰𐌿𐍆𐍃", "nstab-category": "𐌺𐌿𐌽𐌹", "mainpage-nstab": "𐌰𐌽𐌰𐍃𐍄𐍉𐌳𐌴𐌹𐌽𐌹𐌻𐌰𐌿𐍆𐍃", + "nosuchspecialpage": "𐌽𐌹𐍃𐍄 𐍃𐍅𐌰𐌻𐌴𐌹𐌺𐍃 𐌿𐍃𐍃𐌹𐌽𐌳𐍃 𐌻𐌰𐌿𐍆𐍃", "error": "𐌰𐌹𐍂𐌶𐌴𐌹", "databaseerror-error": "𐌰𐌹𐍂𐌶𐌴𐌹: $1", "missing-article": "𐌳𐌰𐍄𐌰𐌱𐌴𐍃 𐌽𐌹 𐌱𐌹𐌲𐌰𐍄 𐌱𐍉𐌺𐍉𐍃 𐌻𐌰𐌿𐌱𐌹𐍃 𐌸𐌹𐌶𐌴𐌹 𐍃𐌺𐌿𐌻𐌳𐌴𐌳𐌹 𐌱𐌹𐌲𐌹𐍄𐌰𐌽, 𐌷𐌰𐌹𐍄𐌰𐌽𐍃 \"$1\" $2. \n\n𐌸𐌰𐍄𐌰 𐌿𐍆𐍄𐌰 𐍅𐌰𐌹𐍂𐌸𐌹𐌸 𐌾𐌰𐌱𐌰𐌹 𐌻𐌰𐌹𐍃𐍄𐌾𐌰𐌳𐌰 𐍆𐌰𐌹𐍂𐌽𐌾𐌰 𐌳𐌹𐍆𐍆 𐌸𐌰𐌿 𐍃𐍀𐌹𐌻𐌻𐌰𐌲𐌰𐍅𐌹𐍃𐍃 𐍃𐌴𐌹 𐍆𐍂𐌰𐌵𐌹𐍃𐍄𐌹𐌳𐌰 𐌹𐍃𐍄. 𐌽𐌹𐌱𐌰𐌹 𐌹𐍃𐍄, 𐌼𐌰𐌷𐍄𐍃 𐌹𐍃𐍄 𐌴𐌹 𐌱𐌹𐌲𐌴𐍄𐌴𐌹𐍃 𐌰𐌹𐍂𐌶𐌴𐌹𐌽 𐌹𐌽 𐍃𐌰𐌿𐍆𐍄𐍅𐌰𐌹𐍂𐌰. \n\n𐌱𐌹𐌳𐌾𐌰𐌼 𐌸𐌿𐌺, 𐌼𐌴𐍂𐌴𐌹 𐌸𐌰𐍄𐌰 𐌳𐌿 [[Special:ListUsers/sysop\n|𐍂𐌴𐌹𐌺]] 𐌲𐌹𐍆𐌿𐌷 𐌲𐌰𐍅𐌹𐍃𐍃.", @@ -255,8 +245,8 @@ "savearticle": "𐌲𐌰𐍆𐌰𐍃𐍄 𐌻𐌰𐌿𐍆", "publishpage": "𐌼𐌴𐍂𐌴𐌹 𐌻𐌰𐌿𐍆", "preview": "𐍆𐌰𐌿𐍂𐌰𐍃𐌹𐌿𐌽𐍃", - "showpreview": "𐌰𐍄𐌰𐌿𐌲𐌴𐌹 𐍆𐌰𐌿𐍂𐌰𐍃𐌹𐌿𐌽", - "showdiff": "𐌰𐍄𐌰𐌿𐌲𐌴𐌹 𐌹𐌽𐌼𐌰𐌹𐌳𐌹𐌽𐌹𐌽𐍃", + "showpreview": "𐌱𐌰𐌽𐌳𐍅𐌴𐌹 𐍆𐌰𐌿𐍂𐌰𐍃𐌹𐌿𐌽", + "showdiff": "𐌱𐌰𐌽𐌳𐍅𐌴𐌹 𐌹𐌽𐌼𐌰𐌹𐌳𐌹𐌽𐌹𐌽𐍃", "loginreqlink": "𐌰𐍄𐌲𐌰𐌲𐌲", "newarticle": "(𐌽𐌹𐍅𐌹)", "newarticletext": "𐌻𐌰𐌹𐍃𐍄𐌹𐌳𐌴𐍃 𐌲𐌰𐍅𐌹𐍃 𐌳𐌿 𐌻𐌰𐌿𐌱𐌰 𐍃𐌰𐌴𐌹 𐌽𐌹𐍃𐍄. 𐌳𐌿 𐍃𐌺𐌰𐍀𐌾𐌰𐌽 𐌸𐌰𐌽𐌰 𐌻𐌰𐌿𐍆, 𐌰𐌽 𐌰𐍃𐍄𐍉𐌳𐌴𐌹 𐌼𐌴𐌻𐌾𐌰𐌽 𐌹𐌽 𐌰𐍂𐌺𐌰𐌹 𐌿𐍆 (𐍃𐌰𐌹𐍈 [$1 𐌷𐌹𐌻𐍀𐌰𐌻𐌰𐌿𐍆] 𐌼𐌰𐌽𐌰𐌲𐌹𐌶𐌹𐌽 𐌺𐌿𐌽𐌸𐌾𐌰). 𐌾𐌰𐌱𐌰𐌹 𐌹𐍃 𐌷𐌴𐍂 𐌹𐌽 𐌰𐌹𐍂𐌶𐌴𐌹𐌽𐍃, 𐌲𐌰𐌲𐌲 𐌳𐌿 <𐍃𐍄𐍂𐍉𐌽𐌲>𐌹𐌱𐌿𐌺𐌰𐌷𐌰𐌿𐌱𐌹𐌳𐌹𐌻𐍉𐌽.", @@ -264,6 +254,7 @@ "noarticletext-nopermission": "𐌽𐌿 𐌽𐌹 𐍃𐌹𐌽𐌳 𐌱𐍉𐌺𐍉𐍃 𐌹𐌽 𐌸𐌰𐌼𐌼𐌰 𐌻𐌰𐌿𐌱𐌰.\n𐌼𐌰𐌲𐍄 [[Special:Search/{{PAGENAME}}|𐍃𐍉𐌺𐌾𐌰𐌽 𐌸𐌰𐍄𐌰 𐌻𐌰𐌿𐌱𐌰-𐌿𐍆𐌰𐍂𐌼𐌴𐌻𐌹]] 𐌹𐌽 𐌰𐌽𐌸𐌰𐍂𐌰𐌹𐌼 𐌻𐌰𐌿𐌱𐌰𐌼, 𐌸𐌰𐌿 [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 𐍃𐍉𐌺𐌾𐌰𐌽 𐌲𐌰𐌷𐌰𐌷𐌾𐍉 𐌲𐌰𐍆𐌰𐍃𐍄𐍉𐍃], 𐌹𐌸 𐌽𐌹 𐌷𐌰𐌱𐌰𐌹𐍃 𐌰𐌽𐌳𐌻𐌴𐍄 𐍃𐌺𐌰𐍀𐌾𐌰𐌽 𐌸𐌰𐌽𐌰 𐌻𐌰𐌿𐍆.", "updated": "(𐌰𐌽𐌰𐌽𐌹𐍅𐌹𐌸)", "previewnote": "𐌲𐌰𐌼𐌹𐌽𐌸𐌴𐌹 𐌸𐌰𐍄𐌴𐌹 𐌸𐌰𐍄𐌰 𐌹𐍃𐍄 𐌸𐌰𐍄𐌰𐌹𐌽𐌴𐌹 𐍆𐌰𐌿𐍂𐌰𐍃𐌹𐌿𐌽𐍃.\n𐌸𐌴𐌹𐌽𐍉𐍃 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍉𐍃 𐌽𐌰𐌿𐌷 𐌽𐌹 𐌲𐌰𐍆𐌰𐍃𐍄𐌰𐌽𐍉𐍃 𐍃𐌹𐌽𐌳!", + "continue-editing": "𐌲𐌰𐌲𐌲 𐌳𐌿 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐌹𐍃𐍄𐌰𐌳𐌰", "editing": "{{GENDER:𐌹𐌽𐌼𐌰𐌹𐌳𐌾𐌰𐌽𐌳𐍃|𐌹𐌽𐌼𐌰𐌹𐌳𐌾𐌰𐌽𐌳𐌴𐌹|𐌹𐌽𐌼𐌰𐌹𐌳𐌾𐌰𐌽𐌳𐍃}} $1", "creating": "{{GENDER:𐍃𐌺𐌰𐍀𐌾𐌰𐌽𐌳𐍃|𐍃𐌺𐌰𐍀𐌾𐌰𐌽𐌳𐌴𐌹|𐍃𐌺𐌰𐍀𐌾𐌰𐌽𐌳𐍃\n}} $1", "editingsection": "{{GENDER:𐌹𐌽𐌼𐌰𐌹𐌳𐌾𐌰𐌽𐌳𐍃|𐌹𐌽𐌼𐌰𐌹𐌳𐌾𐌰𐌽𐌳𐌴𐌹}} $1 (𐌳𐌰𐌹𐌻)", @@ -272,6 +263,7 @@ "template-protected": "(𐌷𐌰𐌱𐌰𐌹𐌸 𐌼𐌿𐌽𐌳)", "template-semiprotected": "(𐌷𐌰𐌱𐌰𐌹𐌸 𐌷𐌰𐌻𐌱𐌰𐌼𐌿𐌽𐌸)", "hiddencategories": "𐍃𐌰 𐌻𐌰𐌿𐍆𐍃 𐌹𐍃𐍄 𐌲𐌰𐌳𐌰𐌹𐌻𐌰 {{PLURAL:$1|1 𐌰𐌽𐌰𐌻𐌰𐌿𐌲𐌽𐌹𐍃 𐌺𐌿𐌽𐌾𐌹𐍃|$1 𐌰𐌽𐌰𐌻𐌰𐌿𐌲𐌽𐌰𐌹𐌶𐌴 𐌺𐌿𐌽𐌾𐌴}}:‎", + "permissionserrors": "𐌰𐌹𐍂𐌶𐌴𐌹 𐌰𐌽𐌳𐌻𐌴𐍄𐌹𐍃", "permissionserrorstext-withaction": "𐌽𐌹 𐌷𐌰𐌱𐌰𐌹𐍃 𐌰𐌽𐌳𐌻𐌴𐍄 𐌳𐌿 $2, 𐌹𐌽 {{PLURAL:$1|𐌹𐍆𐍄𐌿𐌼𐌰𐌹𐌶𐍉𐍃 𐍅𐌰𐌹𐌷𐍄𐌰𐌹𐍃|𐌹𐍆𐍄𐌿𐌼𐌰𐌹𐌶𐍉 𐍅𐌰𐌹𐌷𐍄𐌴}}:", "moveddeleted-notice": "𐍃𐌰 𐌻𐌰𐌿𐍆𐍃 𐌿𐍃𐌽𐌿𐌼𐌰𐌽𐍃 𐌹𐍃𐍄. 𐌿𐍃𐌽𐌿𐌼𐍄𐍃 𐌾𐌰𐌷 𐌲𐌰𐍆𐌰𐍃𐍄𐌰𐌹𐌽𐍃 𐌼𐌹𐌸𐍃𐌰𐍄𐌴𐌹𐌽𐌰𐌹𐍃 𐌿𐍆 𐍃𐌹𐌽𐌳 𐌿𐍃𐍄𐌰𐌹𐌺𐌽𐌴𐌹𐌽𐌰𐌹.", "postedit-confirmation-created": "𐌻𐌰𐌿𐍆𐍃 𐌲𐌰𐍃𐌺𐌰𐍀𐌰𐌽𐍃 𐌹𐍃𐍄.", @@ -309,7 +301,7 @@ "nextn": "𐌹𐍆𐍄𐌿𐌼𐌰 {{PLURAL:$1|$1}}", "prevn-title": "𐌰𐍆𐍄𐌿𐌼𐌹𐍃𐍄(𐌰) $1 {{PLURAL:$1|𐍄𐌰𐌿𐌹|𐍄𐍉𐌾𐌰}}", "nextn-title": "𐌰𐍆𐍄𐌿𐌼(𐌰) $1 {{PLURAL:$1|𐍄𐌰𐌿𐌹|𐍄𐍉𐌾𐌰}}", - "shown-title": "𐌰𐍄𐌰𐌿𐌲𐌴𐌹 $1 {{PLURAL:$1|𐍄𐌰𐌿𐌹|𐍄𐍉𐌾𐌰}} 𐍈𐌰𐍂𐌾𐌰𐌼𐌼𐌴𐌷 𐌻𐌰𐌿𐌱𐌰.", + "shown-title": "𐌱𐌰𐌽𐌳𐍅𐌴𐌹 $1 {{PLURAL:$1|𐍄𐌰𐌿𐌹|𐍄𐍉𐌾𐌰}} 𐍈𐌰𐍂𐌾𐌰𐌼𐌼𐌴𐌷 𐌻𐌰𐌿𐌱𐌰.", "viewprevnext": "𐍃𐌹𐌿𐌽𐌴𐌹𐍃 ($1 {{int:pipe-separator}} $2) ($3)", "searchmenu-new": "𐍃𐌺𐌰𐍀𐌴𐌹 𐌻𐌰𐌿𐍆 \"[[:$1]]\" 𐌰𐌽𐌰 𐌸𐌹𐌶𐌰𐌹 𐍅𐌹𐌺𐌹! {{{{PLURAL:$2|0=|𐍃𐌰𐌹 𐌾𐌰𐌷 𐌻𐌰𐌿𐍆 𐌱𐌹𐌲𐌹𐍄𐌰𐌽𐌰 𐌸𐌴𐌹𐌽𐌰𐌹 𐍃𐍉𐌺𐌴𐌹𐌽𐌰𐌹.|𐍃𐌰𐌹 𐌾𐌰𐌷 𐍄𐍉𐌾𐌰 𐍃𐍉𐌺𐌴𐌹𐌽𐌰𐌹𐍃 𐌱𐌹𐌲𐌹𐍄𐌰𐌽𐌰.}}", "searchprofile-articles": "𐌷𐌰𐌱𐌰𐌽𐌳𐌰𐌽𐍃 𐌻𐌰𐌿𐌱𐍉𐍃", @@ -337,6 +329,7 @@ "grouppage-sysop": "{{ns:project}}:𐍂𐌴𐌹𐌺𐍃", "right-writeapi": "𐌱𐍂𐌿𐌺𐌴𐌹𐌽𐍃 API 𐌼𐌴𐌻𐌴𐌹𐌽𐌰𐌹𐍃", "rightslog": "Niutandis stutjanlog", + "action-edit": "𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹 𐌸𐌰𐌽𐌰 𐌻𐌰𐌿𐍆", "nchanges": "$1 {{PLURAL:$1|𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍃|𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍉𐍃}}", "enhancedrc-history": "𐍃𐍀𐌹𐌻𐌻", "recentchanges": "𐌰𐍆𐍄𐌿𐌼𐌹𐍃𐍄𐍉𐍃 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍉𐍃", @@ -348,35 +341,36 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (𐍃𐌰𐌹𐍈 𐌾𐌰𐌷[[Special:NewPages|𐍅𐌹𐌺𐍉 𐌽𐌹𐌿𐌾𐌰𐌹𐌶𐌴 𐌻𐌰𐌿𐌱𐌴]])", "rclistfrom": "𐌰𐍄𐌰𐌿𐌲𐌴𐌹 𐌽𐌹𐌿𐌾𐍉𐍃 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐌹𐌽𐍃 𐌰𐌽𐌰𐍃𐍄𐍉𐌳𐌾𐌰𐌽𐌳𐌴𐌹𐌽𐍃 𐍆𐍂𐌰𐌼 $2, $3", "rcshowhideminor": "$1 𐌼𐌹𐌽𐌽𐌹𐌶𐌴𐌹𐌽𐍃 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍉𐍃", - "rcshowhideminor-show": "𐌰𐍄𐌰𐌿𐌲𐌴𐌹", + "rcshowhideminor-show": "𐌱𐌰𐌽𐌳𐍅𐌴𐌹", "rcshowhideminor-hide": "𐌰𐍆𐍆𐌹𐌻𐌷", "rcshowhidebots": "$1 𐌼𐌰𐌷𐍄𐌹𐍃𐌺𐌰𐌻𐌺𐍉𐍃", - "rcshowhidebots-show": "𐌰𐍄𐌰𐌿𐌲𐌴𐌹", + "rcshowhidebots-show": "𐌱𐌰𐌽𐌳𐍅𐌴𐌹", "rcshowhidebots-hide": "𐌰𐍆𐍆𐌹𐌻𐌷", "rcshowhideliu": "$1 𐌰𐌽𐌰𐌼𐌴𐌻𐌹𐌳𐌰𐌹 𐌱𐍂𐌿𐌺𐌾𐌰𐌽𐌳𐍃", "rcshowhideliu-hide": "𐌰𐍆𐍆𐌹𐌻𐌷", "rcshowhideanons": "$1 𐌰𐍆𐍆𐌹𐌻𐌷𐌰𐌽𐌰𐌹 𐌱𐍂𐌿𐌺𐌾𐌰𐌽𐌳𐍃", - "rcshowhideanons-show": "𐌰𐍄𐌰𐌿𐌲𐌴𐌹", + "rcshowhideanons-show": "𐌱𐌰𐌽𐌳𐍅𐌴𐌹", "rcshowhideanons-hide": "𐌰𐍆𐍆𐌹𐌻𐌷", "rcshowhidemine": "$1 𐌼𐌴𐌹𐌽𐍉𐍃 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍉𐍃", - "rcshowhidemine-show": "𐌰𐍄𐌰𐌿𐌲𐌴𐌹", + "rcshowhidemine-show": "𐌱𐌰𐌽𐌳𐍅𐌴𐌹", "rcshowhidemine-hide": "𐌰𐍆𐍆𐌹𐌻𐌷", "rclinks": "𐌰𐍄𐌰𐌿𐌲𐌴𐌹 𐌰𐍆𐍄𐌿𐌼𐌹𐍃𐍄𐍉𐍃 $1 𐌹𐌽𐌼𐌰𐌹𐌳𐌹𐌽𐌹𐌽𐍃 𐌹𐌽 𐌰𐍆𐍄𐌿𐌼𐌹𐍃𐍄𐌰𐌹𐌼 $2 𐌳𐌰𐌲𐌰𐌼", "diff": "𐌼𐌹𐍃𐍃", "hist": "𐍃𐍀𐌹𐌻𐌻", "hide": "𐌰𐍆𐍆𐌹𐌻𐌷", - "show": "𐌰𐍄𐌰𐌿𐌲𐌴𐌹", + "show": "𐌱𐌰𐌽𐌳𐍅𐌴𐌹", "minoreditletter": "l", "newpageletter": "N", "boteditletter": "b", + "rc-change-size-new": "$1 {{PLURAL:$1|𐌱𐌰𐌾𐍄|𐌱𐌰𐌾𐍄𐌰}} 𐌰𐍆𐌰𐍂 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐌰𐌹", "recentchangeslinked": "𐌲𐌰𐌱𐌿𐌽𐌳𐌰𐌽𐍉𐍃 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍉𐍃", "recentchangeslinked-feed": "𐌲𐌰𐌱𐌿𐌽𐌳𐌰𐌽𐍉𐍃 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍉𐍃", "recentchangeslinked-toolbox": "𐌲𐌰𐌱𐌿𐌽𐌳𐌰𐌽𐍉𐍃 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍉𐍃", "recentchangeslinked-title": "𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍉𐍃 𐌲𐌰𐌱𐌿𐌽𐌳𐌰𐌽𐍉𐍃 𐌼𐌹𐌸 \"$1\"", "recentchangeslinked-summary": "A𐌸𐌰𐍄𐌰 𐌹𐍃𐍄 𐍅𐌹𐌺𐍉 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍉 𐌽𐌹𐌿𐌾𐌰𐌱𐌰 𐌲𐌰𐍄𐌰𐍅𐌹𐌳𐍉𐍃 𐌻𐌰𐌿𐌱𐌰𐌼 𐌲𐌰𐌱𐌿𐌽𐌳𐌰𐌹 𐍃𐌿𐌼𐌰𐌼𐌼𐌰 𐌻𐌰𐌿𐌱𐌰 (𐌸𐌰𐌿 𐌲𐌰𐌳𐌰𐌹𐌻𐌰𐌼 𐍃𐌿𐌼𐌹𐍃 𐌺𐌿𐌽𐌾𐌹𐍃). 𐌻𐌰𐌿𐌱𐍉𐍃 𐌰𐌽𐌰 [[Special:Watchist|your]] 𐍃𐌹𐌽𐌳 𐍃𐍅𐌹𐌽𐌸𐌰𐌹.", "recentchangeslinked-page": "𐌻𐌰𐌿𐌱𐌰𐌽𐌰𐌼𐍉:", - "recentchangeslinked-to": "𐌰𐍄𐌰𐌿𐌲𐌴𐌹 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍉𐍃 𐌻𐌰𐌿𐌱𐌴 𐌸𐌰𐌹𐌴𐌹 𐌲𐌰𐍅𐌹𐌳𐌰𐌽𐌰𐌹 𐌳𐌿 𐌲𐌹𐌱𐌰𐌽𐌰𐌼𐌼𐌰 𐌻𐌰𐌿𐌱𐌰.", - "upload": "𐌿𐍃𐌷𐌻𐌰𐌸𐌰𐌽 𐍆𐌴𐌹𐌻𐌰𐌽𐍃", + "recentchangeslinked-to": "𐌱𐌰𐌽𐌳𐍅𐌴𐌹 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍉𐍃 𐌻𐌰𐌿𐌱𐌴 𐌸𐌰𐌹𐌴𐌹 𐌲𐌰𐍅𐌹𐌳𐌰𐌽𐌰𐌹 𐌳𐌿 𐌲𐌹𐌱𐌰𐌽𐌰𐌼𐌼𐌰 𐌻𐌰𐌿𐌱𐌰.", + "upload": "𐌰𐍄𐌱𐌰𐌹𐍂 𐍆𐌰𐌾𐌻", "uploadbtn": "Ushlaþaiþ Feilans", "uploadlogpage": "Log af Ushlaþan", "filedesc": "𐌼𐌰𐌿𐍂𐌲𐌿𐍃 𐍃𐌺𐌴𐌹𐍂𐌴𐌹𐌽𐍃", @@ -384,7 +378,7 @@ "imgfile": "𐍆𐌰𐌴𐌹𐌻", "listfiles": "Feilans tala", "file-anchor-link": "𐍆𐌴𐌹𐌻𐌰𐌽𐍃", - "filehist": "𐍆𐌴𐌹𐌻𐌰𐌽𐍃 𐌰𐌹𐍂𐌹𐍃", + "filehist": "𐍆𐌰𐌾𐌻𐌰𐍃𐍀𐌹𐌻𐌻", "filehist-help": "𐌰𐍄𐍄𐌴𐌺 𐌳𐌰𐌲/𐌼𐌴𐌻 𐌳𐌿 𐌰𐍄𐌰𐌿𐌲𐌾𐌰𐌽 𐌳𐌰𐍄𐌰 𐍃𐍅𐌰𐍃𐍅𐌴 𐌲𐌰𐌱𐌰𐌹𐍂𐌷𐍄𐌹𐌳𐌰 𐌹𐌽 𐌸𐌰𐌼𐌼𐌰 𐌼𐌴𐌻𐌰.", "filehist-current": "𐌽𐌿", "filehist-datetime": "𐌼𐌴𐌻", @@ -394,9 +388,11 @@ "filehist-dimensions": "𐍅𐌰𐌷𐍃𐍄𐌿𐍃", "filehist-filesize": "Feilans wahstus", "filehist-comment": "𐍅𐌰𐌿𐍂𐌳", - "imagelinks": "𐌱𐍂𐌿𐌺𐌴𐌹𐌽𐍃 𐍆𐌰𐌴𐌹𐌻𐌴", + "imagelinks": "𐍆𐌰𐌾𐌻𐌰𐌱𐍂𐌿𐌺𐌴𐌹𐌽𐍃", "linkstoimage": "𐌰𐍆𐍄𐌿𐌼𐌰 {{PLURAL:$1|𐍃𐍉 𐍃𐌴𐌹𐌳𐍉 𐌻𐌴𐌹𐌽𐌺𐍉𐌸|𐌸𐍉𐍃 𐍃𐌴𐌹𐌳𐍉𐌽𐍃 𐌻𐌴𐌹𐌽𐌺𐍉𐌽𐌳}} 𐌸𐌹𐌶𐍉𐌶𐌿𐌷 𐍆𐌴𐌹𐌻𐍉𐍃", "sharedupload-desc-here": "𐍃𐍉 𐌳𐌰𐍄𐌰 𐌹𐍃𐍄 𐍆𐍂𐌰𐌼 $1 𐌾𐌰𐌷 𐌼𐌰𐌲 𐌱𐍂𐌿𐌺𐌾𐌰𐌳𐌰 𐍆𐍂𐌰𐌼 𐌰𐌽𐌸𐌰𐍂𐌰𐌹𐌼 𐍆𐌰𐌿𐍂𐌰𐍅𐌰𐌿𐍂𐍀𐍉𐌼.\n𐌲𐌰𐍃𐌺𐌴𐌹𐍂𐌴𐌹𐌽𐍃 𐌰𐌽𐌰 𐍃𐌴𐌹𐌽𐌰𐌼𐌼𐌰 [$2 𐌳𐌰𐍄𐌰 𐍃𐌺𐌴𐌹𐍂𐌴𐌹𐌽𐌹𐌻𐌰𐌿𐌱𐌰] 𐌾𐌰𐌹𐌽𐌰𐍂 𐌰𐍄𐌰𐌿𐌲𐌹𐌸𐍃 𐌹𐍃𐍄 𐌿𐍆.", + "filepage-nofile": "𐍆𐌰𐌾𐌻 𐌼𐌹𐌸 𐌸𐌰𐌼𐌼𐌰 𐌽𐌰𐌼𐌹𐌽 𐌽𐌹𐍃𐍄.", + "upload-disallowed-here": "𐌽𐌹 𐌼𐌰𐌲𐍄 𐌿𐍆𐌰𐍂𐌼𐌴𐌻𐌾𐌰𐌽 𐌸𐌰𐍄𐌰 𐍆𐌰𐌾𐌻.", "filedelete-submit": "𐍆𐍂𐌰𐌵𐌹𐍃𐍄𐌴𐌹", "mimesearch": "MIME 𐍃𐍉𐌺𐌴𐌹", "listredirects": "𐍄𐌰𐌻𐌰 𐌰𐍆 𐍄𐌰𐌹𐌺𐌾𐌰𐌽𐍃𐌴𐌹𐌳𐍉𐍃", @@ -404,7 +400,7 @@ "statistics": "𐍂𐌰𐌸𐌾𐍉𐌽𐍃", "brokenredirects-edit": "𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹", "brokenredirects-delete": "𐍆𐍂𐌰𐌵𐌹𐍃𐍄𐌴𐌹", - "nbytes": "$1 {{PLURAL:$1|𐌱𐌹𐍄|𐌱𐌰𐍄𐌰}}", + "nbytes": "$1 {{PLURAL:$1|𐌱𐌰𐌾𐍄|𐌱𐌰𐌾𐍄𐌰}}", "ncategories": "$1 {{PLURAL:$1|𐌺𐌿𐌽𐌹|𐌺𐌿𐌽𐌾𐌰}}", "nlinks": "$1 {{PLURAL:$1|𐌲𐌰𐍅𐌹𐍃𐍃|𐌲𐌰𐍅𐌹𐍃𐍃𐌴𐌹𐍃}}", "nmembers": "$1 {{PLURAL:$1|𐌲𐌰𐌳𐌰𐌹𐌻𐌰|𐌲𐌰𐌳𐌰𐌹𐌻𐌰𐌽𐍃}}", @@ -460,7 +456,7 @@ "undelete-search-submit": "𐍃𐍉𐌺𐌴𐌹", "namespace": "𐌽𐌰𐌼𐌰𐍂𐌿𐌼:", "invert": "𐌲𐌰𐍅𐌰𐌽𐌳𐌴𐌹 𐌸𐌰𐍄𐌰 𐌲𐌰𐍅𐌰𐌻𐌹𐌳𐍉", - "blanknamespace": "(𐍆𐍂𐌿𐌼𐌹𐍃𐍄𐍃)", + "blanknamespace": "(𐌷𐌰𐌿𐌱𐌹𐌸)", "contributions": "𐌱𐌹𐌰𐌿𐌺𐌰𐌹𐌽𐌴𐌹𐍃 𐌱𐍂𐌿𐌺𐌾𐌰𐌽𐌳𐌹𐍃 {{{{GENDER:$1|User}}", "mycontris": "𐌱𐌹𐌰𐌿𐌺𐌰𐌹𐌽𐌴𐌹𐍃", "contribsub2": "𐍆𐌰𐌿𐍂 $1 ($2)", @@ -470,6 +466,7 @@ "sp-contributions-newbies-sub": "Faúr niujis niutandis", "sp-contributions-blocklog": "Logboka af afdraúsjan", "sp-contributions-talk": "𐌲𐌰𐍅𐌰𐌿𐍂𐌳𐌾𐌰", + "sp-contributions-submit": "𐍃𐍉𐌺𐌴𐌹", "whatlinkshere": "𐌰𐌻𐌻𐌰𐌹 𐌻𐌰𐌿𐌱𐍉𐍃 𐌸𐌰𐌹𐌴𐌹 𐌱𐍂𐌹𐌲𐌲𐌰𐌽𐌳 𐌸𐌿𐌺 𐌷𐌹𐌳𐍂𐌴", "whatlinkshere-title": "𐌻𐌰𐌿𐌱𐍉𐍃 𐌸𐌰𐌹𐌴𐌹 𐍄𐌰𐌹𐌺𐌽𐌾𐌰𐌽𐌳 𐌳𐌿 \"$1\"", "whatlinkshere-page": "𐌻𐌰𐌿𐍆𐍃:", @@ -518,7 +515,7 @@ "tooltip-ca-move": "𐌼𐌹𐌸𐍃𐌰𐍄𐌴𐌹 𐌸𐌰𐌽𐌰 𐌻𐌰𐌿𐍆", "tooltip-ca-watch": "𐌱𐌹𐌰𐌹𐌰𐌿𐌺 𐌸𐌰𐌽𐌰 𐌻𐌰𐌿𐍆 𐌳𐌿 𐌸𐌴𐌹𐌽𐌰𐌹 𐍅𐌹𐍄𐌰𐍅𐌹𐌺𐍉𐌽", "tooltip-search": "𐍃𐍉𐌺𐌴𐌹 {{SITENAME}}", - "tooltip-search-go": "𐌾𐌰𐌱𐌰𐌹 𐌹𐍃𐍄, 𐌲𐌰𐌲𐌲 𐌳𐌿 𐌻𐌰𐌿𐌱𐌰 𐌼𐌹𐌸 𐍃𐌰𐌼𐌹𐌽 𐌽𐌰𐌼𐌹𐌽.", + "tooltip-search-go": "𐌲𐌰𐌲𐌲 𐌳𐌿 𐌻𐌰𐌿𐌱𐌰 𐌼𐌹𐌸 𐌸𐌰𐌼𐌼𐌰 𐌲𐌰𐌻𐌴𐌹𐌺𐌰𐌼𐌼𐌰 𐌽𐌰𐌼𐌹𐌽", "tooltip-search-fulltext": "𐍃𐍉𐌺𐌴𐌹 𐌻𐌰𐌿𐌱𐌰𐌽𐍃 𐌸𐌰𐌹𐌼 𐌱𐍉𐌺𐍉𐌼", "tooltip-p-logo": "𐌲𐌰𐍅𐌴𐌹𐍃 𐌷𐌰𐌿𐌱𐌹𐌳𐌰𐌻𐌰𐌿𐌱𐌹𐍃", "tooltip-n-mainpage": "𐌲𐌰𐍅𐌴𐌹𐍃 𐌷𐌰𐌿𐌱𐌹𐌳𐌰𐌻𐌰𐌿𐌱𐌹𐍃", @@ -532,7 +529,7 @@ "tooltip-t-recentchangeslinked": "𐌰𐌽𐌳𐍅𐌰𐌹𐍂𐌸𐍉𐍃 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍉𐍃 𐌹𐌽 𐌻𐌰𐌿𐌱𐌰𐌼 𐌲𐌰𐍅𐌹𐌳𐌰𐌽𐌰𐌹𐌼 𐌰𐍆 𐌸𐌰𐌼𐌼𐌰 𐌻𐌰𐌿𐌱𐌰.", "tooltip-feed-atom": "𐌰𐍄𐍉𐌼 𐍆𐍉𐌳𐌴𐌹𐌽𐍃 𐌸𐌰𐌼𐌼𐌰 𐌻𐌰𐌿𐌱𐌰", "tooltip-t-contributions": "𐍅𐌹𐌺𐍉 𐌱𐌹𐌰𐌿𐌺𐌰𐌹𐌽𐌴 𐍆𐍂𐌰𐌼 {{GENDER:$1|𐌸𐌰𐌼𐌼𐌰 𐌱𐍂𐌿𐌺𐌾𐌹𐌽}}", - "tooltip-t-upload": "𐌿𐍃𐌷𐌻𐌰𐌸𐌰𐌽 𐍆𐌴𐌹𐌻𐌰𐌽𐍃", + "tooltip-t-upload": "𐌰𐍄𐌱𐌰𐌹𐍂 𐍆𐌰𐌾𐌻𐌰", "tooltip-t-specialpages": "𐍅𐌹𐌺𐍉 𐌰𐌻𐌻𐌰𐌹𐌶𐌴 𐌿𐍃𐍃𐌹𐌽𐌳𐌰𐌹𐌶𐌴 𐌻𐌰𐌿𐌱𐌴", "tooltip-t-print": "𐌿𐍃𐌼𐌴𐍂𐌴𐌹𐌽𐍃 𐌸𐌹𐍃 𐌻𐌰𐌿𐌱𐌹𐍃 𐌳𐌿 𐌿𐍃𐌼𐌴𐌻𐌾𐌰𐌽", "tooltip-t-permalink": "𐌰𐌹𐍅𐌴𐌹𐌽𐌰 𐌲𐌰𐍅𐌹𐍃𐍃 𐌳𐌿 𐌸𐌹𐌶𐌰𐌹 𐌰𐍆𐍄𐍂𐌰𐍃𐌹𐌿𐌽𐌰𐌹 𐌸𐌹𐍃 𐌻𐌰𐌿𐌱𐌹𐍃", @@ -540,20 +537,29 @@ "tooltip-ca-nstab-user": "𐍃𐌰𐌹𐍈 𐌱𐍂𐌿𐌺𐌾𐌰𐌻𐌰𐌿𐍆", "tooltip-ca-nstab-special": "𐍃𐌰 𐌹𐍃𐍄 𐌿𐍃𐍃𐌹𐌽𐌳𐍃 𐌻𐌰𐌿𐍆𐍃 𐌾𐌰𐌷 𐌽𐌹 𐌼𐌰𐌲 𐌹𐌽𐌼𐌰𐌹𐌳𐌾𐌰𐌳𐌰.", "tooltip-ca-nstab-project": "𐌰𐍄𐌰𐌿𐌲𐌴𐌹 𐍆𐌰𐌿𐍂𐌰𐍅𐌰𐌿𐍂𐍀𐌰𐌻𐌰𐌿𐍆", - "tooltip-ca-nstab-image": "𐍃𐌰𐌹𐍈 𐍆𐌰𐌴𐌹𐌻𐌰𐌻𐌰𐌿𐍆", + "tooltip-ca-nstab-image": "𐌱𐌰𐌽𐌳𐍅𐌴𐌹 𐍆𐌰𐌾𐌻𐌰𐌻𐌰𐌿𐍆", "tooltip-ca-nstab-template": "𐍃𐌰𐌹𐍈 𐍆𐌰𐌿𐍂𐌰𐌼𐌴𐌻𐌴𐌹𐌽", "tooltip-ca-nstab-category": "𐍃𐌰𐌹𐍈 𐌺𐌿𐌽𐌾𐌰𐌻𐌰𐌿𐍆", "tooltip-save": "𐌲𐌰𐍆𐌰𐍃𐍄 𐌸𐌴𐌹𐌽𐍉𐍃 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐌹𐌽𐍃", "tooltip-preview": "𐍆𐌰𐌿𐍂𐌰𐍃𐌰𐌹𐍈 𐌸𐌴𐌹𐌽𐍉𐍃 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍉𐍃. 𐌱𐌹𐌳𐌾𐌰𐌼 𐌸𐌿𐌺, 𐌱𐍂𐌿𐌺𐌴𐌹 𐌸𐌹𐍃 𐌸𐌰𐍄𐌰 𐍆𐍂𐌿𐌼𐌹𐍃𐍄 𐍆𐌰𐌿𐍂𐌸𐌹𐌶𐌴𐌹 𐌲𐌰𐍆𐌰𐍃𐍄𐌰𐌹𐍃.", - "tooltip-diff": "𐌰𐍄𐌰𐌿𐌲𐌴𐌹 𐍈𐌹𐌻𐌴𐌹𐌺𐍉𐍃 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐌹𐌽𐍃 𐌲𐌰𐍄𐌰𐍅𐌹𐌳𐌴𐍃 𐌳𐌿 𐌸𐌰𐌹𐌼 𐌱𐍉𐌺𐍉𐌼", + "tooltip-diff": "𐌱𐌰𐌽𐌳𐍅𐌴𐌹 𐍈𐌹𐌻𐌴𐌹𐌺𐍉𐍃 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐌹𐌽𐍃 𐌲𐌰𐍄𐌰𐍅𐌹𐌳𐌴𐍃 𐌳𐌿 𐌸𐌰𐌹𐌼 𐌱𐍉𐌺𐍉𐌼", + "tooltip-watch": "𐌱𐌹𐌰𐌹𐌰𐌿𐌺 𐌸𐌰𐌽𐌰 𐌻𐌰𐌿𐍆 𐌳𐌿 𐌸𐌴𐌹𐌽𐌰𐌹 𐍅𐌹𐍄𐌰𐍅𐌹𐌺𐍉𐌽", "tooltip-rollback": "\"𐌰𐍆𐍅𐌰𐌻𐍅𐌴𐌹\" 𐌲𐌰𐌽𐌰𐍃𐌾𐌹𐌸 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽(𐍉𐍃) 𐌳𐌿 𐌸𐌰𐌼𐌼𐌰 𐌻𐌰𐌿𐌱𐌰 𐌰𐍆𐍄𐌿𐌼𐌹𐍃𐍄𐌹𐍃 𐌱𐌹𐌰𐌿𐌺𐌰𐌽𐌳𐌹𐍃/𐌰𐍆𐍄𐌿𐌼𐌹𐍃𐍄𐌰𐌹𐌶𐍉𐍃 𐌱𐌹𐌰𐌿𐌺𐌰𐌽𐌳𐌾𐍉𐍃 𐌹𐌽 𐌰𐌹𐌽𐌰𐌼𐌼𐌰 𐍃𐌹𐌽𐌸𐌰", "tooltip-undo": "\"𐌽𐌹𐌿𐍃𐌺𐌰𐍀𐌾𐌰𐌽\" 𐌱𐌰𐌺𐌼𐌰𐌹𐌳𐌾𐌹𐌸 𐌹𐌽𐌼𐌰𐌹𐌳𐌲𐌴𐌹𐌽𐍃 𐌾𐌰𐌷 𐌿𐍃𐌻𐌿𐌺𐍉𐌸 𐌼𐌰𐌹𐌳𐌾𐌰𐍆𐍉𐍂𐌼𐍉𐌽 𐍃𐍅𐌴 𐍆𐌰𐌿𐍂𐍃𐌰𐌹𐍈𐌰 𐌷𐌹𐍅𐌾𐌰. 𐌸𐌰𐍄𐌰 𐌻𐌴𐍄 𐌰𐌽𐌰𐌿𐌺𐌰𐌽𐌰𐌽 𐍃𐌰𐌿𐌸𐌰 𐌹𐌽 𐌹𐌽𐌽𐌰𐌷𐌰𐌻𐌳𐌰𐌰𐌽𐌲𐌰𐌱𐌰.", "tooltip-summary": "𐌰𐍄𐌲𐌰𐌲𐌲𐌹𐍃 𐌹𐌽𐌽𐌰𐌷𐌰𐌻𐌳𐌰𐌰𐌽𐌲𐌰𐌱𐌰 𐌼𐌰𐌿𐍂𐌲𐌾𐌰", + "pageinfo-header-edits": "𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹 𐍃𐍀𐌹𐌻𐌻", + "pageinfo-robot-index": "𐌰𐌽𐌳𐌻𐌴𐍄𐌰𐌽", + "pageinfo-firstuser": "𐌻𐌰𐌿𐌱𐌰𐍃𐌺𐌰𐍀𐌾𐌰𐌽𐌳𐍃", + "pageinfo-lastuser": "𐌰𐍆𐍄𐌿𐌼𐌹𐍃𐍄𐍃 𐌹𐌽𐌼𐌰𐌹𐌳𐌾𐌰𐌽𐌳𐍃", + "pageinfo-recent-edits": "𐌰𐌽𐌳𐍅𐌰𐌹𐍂𐌸𐌰 𐍂𐌰𐌸𐌾𐍉 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍉 (𐌹𐌽 $1)", + "pageinfo-recent-authors": "𐌰𐌽𐌳𐍅𐌰𐌹𐍂𐌸𐌰 𐍂𐌰𐌸𐌾𐍉 𐌼𐌹𐍃𐍃𐌰𐌻𐌴𐌹𐌺𐌰𐌹𐌶𐌴 𐌼𐌴𐌻𐌾𐌰𐌽𐌳𐌴", + "pageinfo-magic-words": "{{PLURAL:$1|𐌻𐌿𐌱𐌾𐌰𐌻𐌴𐌹𐍃|𐌻𐌿𐌱𐌾𐌰𐌻𐌴𐌹𐍃𐌰}} {{PLURAL:$1|𐍅𐌰𐌿𐍂𐌳|𐍅𐌰𐌿𐍂𐌳𐌰}} ($1)", "pageinfo-toolboxlink": "𐌺𐌿𐌽𐌸𐌹 𐌻𐌰𐌿𐌱𐌹𐍃", + "pageinfo-contentpage-yes": "𐌾𐌰𐌹", "previousdiff": "← 𐍆𐌰𐌹𐍂𐌽𐌹𐌶𐌴𐌹 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍃", "nextdiff": "𐌽𐌹𐌿𐌾𐌹𐌶𐌴𐌹 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍃 →", "file-info-size": "$1 × $2 𐍀𐌹𐌺𐍃𐌴𐌻𐌰, 𐍆𐌴𐌹𐌻𐍅𐌰𐌷𐍃𐍄𐌿𐍃: $3, 𐌼𐌹𐌼𐌴 𐌺𐌿𐌽𐌹: $4", - "show-big-image": "𐍆𐍂𐌿𐌼𐌹𐍃𐍄 𐍆𐌰𐌴𐌹𐌻", + "show-big-image": "𐍆𐍂𐌿𐌼𐌹𐍃𐍄 𐍆𐌰𐌾𐌻", "show-big-image-preview": "𐌼𐌹𐌺𐌹𐌻𐌴𐌹 𐌸𐌹𐌶𐍉𐍃 𐍆𐌰𐌿𐍂𐌰𐍃𐌹𐌿𐌽𐌰𐌹𐍃: $1.", "show-big-image-size": "$1 × $2 𐍆𐍂𐌹𐍃𐌰𐌷𐍄𐌹𐍃𐍄𐌰𐌱𐌴𐌹𐍃", "ilsubmit": "𐍃𐍉𐌺𐌴𐌹", @@ -563,10 +569,15 @@ "namespacesall": "𐌰𐌻𐌻", "monthsall": "𐌰𐌻𐌻", "imgmultigo": "𐌲𐌰𐌲𐌲!", + "imgmultigoto": "𐌲𐌰𐌲𐌲 𐌳𐌿 𐌻𐌰𐌿𐌱𐌰 $1", "table_pager_limit_submit": "Affgaggan", "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|𐌲𐌰𐍅𐌰𐌿𐍂𐌳𐌾𐌰]])", "version-other": "Anþar", "version-poweredby-translators": "translatewiki.net 𐌲𐌰𐍃𐌺𐌴𐌹𐍂𐌾𐌰𐌽𐍃", + "redirect-submit": "𐌲𐌰𐌲𐌲", + "redirect-value": "𐍅𐌰𐌹𐍂𐌸:", + "redirect-revision": "𐌰𐍆𐍄𐍂𐌰𐍃𐌹𐌿𐌽𐍃 𐌻𐌰𐌿𐌱𐌹𐍃", + "redirect-file": "𐍆𐌰𐌾𐌻𐌰𐌽𐌰𐌼𐍉", "specialpages": "𐌿𐍃𐍃𐌹𐌽𐌳𐌰𐌹 𐌻𐌰𐌿𐌱𐍉𐍃", "tag-filter": "[[Special:Tags|𐍄𐌰𐌹𐌺𐌽𐍉𐍃]] 𐍆𐌹𐌻𐌷𐌰", "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|𐍃𐍉𐌺𐌴𐌹𐌽𐌹𐍅𐌰𐌿𐍂𐌳|𐍃𐍉𐌺𐌴𐌹𐌽𐌹𐍅𐌰𐌿𐍂𐌳𐌰}}]]: $2)", @@ -597,5 +608,6 @@ "logentry-move-move": "$1 {{GENDER:$2|𐌼𐌹𐌸𐍃𐌰𐍄𐌹𐌳𐌰}} 𐌻𐌰𐌿𐍆 $3 𐌳𐌿 $4", "logentry-newusers-create": "𐌱𐍂𐌿𐌺𐌾𐌰𐌺𐌰𐍅𐍄𐍃𐌾𐍉 $1 𐍅𐌰𐍃 {{{{GENDER:$2|𐌲𐌰𐍃𐌺𐌰𐍀𐌰𐌽𐌰}}", "rightsnone": "(𐌽𐌹)", - "searchsuggest-search": "𐍃𐍉𐌺𐌴𐌹" + "searchsuggest-search": "𐍃𐍉𐌺𐌴𐌹", + "duration-days": "$1 {{PLURAL:$1|𐌳𐌰𐌲𐍃|𐌳𐌰𐌲𐍉𐍃}}" } diff --git a/languages/i18n/gsw.json b/languages/i18n/gsw.json index a81f2dfbea..9306bffd1f 100644 --- a/languages/i18n/gsw.json +++ b/languages/i18n/gsw.json @@ -613,14 +613,14 @@ "accmailtext": "E zuefällig generiert Passwort fir [[User talk:$1|$1]] isch an $2 gschickt wore.\n\nS Passwort fir des nej Benutzerkonto cha uf dr Spezialsyte „[[Special:ChangePassword|Passwort ändere]]“ gänderet wäre.", "newarticle": "(Nej)", "newarticletext": "Du bisch eme Link nogange zuen ere Syte, wu s nid git.\nZum die Syte aalege, chasch do in däm Chaschte unte aafange schrybe (lueg [$1 Hilfe] fir meh Informatione).\nWänn do nid hesch welle aane goh, no druck in Dyynem Browser uf '''Zruck'''.", - "anontalkpagetext": "----''Des isch e Diskussionssyte vun eme anonyme Benutzer, wu kei Zuegang aagleit het oder wu ne nit bruucht. Sälleweg mien mir di numerisch IP-Adräss bruuche zum ihn oder si z identifiziere. So ne IP-Adräss cha au vu mehrere Benutzer teilt wäre. Wenn Du ne anonyme Benutzer bisch un s Gfiel hesch, ass do irrelevanti Kommentar an di grichtet wäre, derno [[Special:CreateAccount|leg e Konto aa]] oder [[Special:UserLogin|mäld di aa]] zum in Zuekumft Verwirrige mit andere anonyme Benutzer z vermyyde.''", + "anontalkpagetext": "----\nDes isch e Diskussionssyte vun eme anonyme Benutzer, wu kei Zuegang aagleit het oder wu ne nit bruucht.\nSälleweg mien mir di numerisch IP-Adräss bruuche zum ihn oder si z identifiziere. So ne IP-Adräss cha au vu mehrere Benutzer teilt wäre. Wenn Du ne anonyme Benutzer bisch un s Gfiel hesch, ass do irrelevanti Kommentar an di grichtet wäre, derno [[Special:CreateAccount|leg e Konto aa]] oder [[Special:UserLogin|mäld di aa]] zum in Zuekumft Verwirrige mit andere anonyme Benutzer z vermyyde.", "noarticletext": "Uf däre Syte het s no kei Täxt. \nDu chasch uf andere Syte [[Special:Search/{{PAGENAME}}|dä Yytrag sueche]], [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} dr Logbuechyytrag sueche, wo dezue ghert],\noder [{{fullurl:{{FULLPAGENAME}}|action=edit}} die Syte erstelle].", "noarticletext-nopermission": "In däre Syte het s zur Zyt no kei Text.\nDu chasch dää Titel uf andre Syte [[Special:Search/{{PAGENAME}}|sueche]]\noder in dr zuegherige [{{fullurl:{{#special:Log}}|page={{FULLPAGENAMEE}}}} Logbiecher sueche]. Du derfsch aber die Syte nit aalege.", "missing-revision": "D Version $1 vu dr Syte mit Name „{{FULLPAGENAME}}“ git s nit.\n\nDää Fähler chunnt normalerwyys dur e veraltete Link zue dr Versionsgschicht vun ere Syte, wu in dr Zwischezyt glescht woren isch.\nEinzelheite chasch im [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Lesch-Logbuech] bschaue.", "userpage-userdoesnotexist": "S Benutzerkonto „$1“ git s nit. Bitte prief, eb Du die Syte wirkli wit aalege/bearbeite.", "userpage-userdoesnotexist-view": "S Benutzerkonto „$1“ isch nit registriert.", "blocked-notice-logextract": "Dää Benutzer isch zur Zyt gsperrt.\nAs Information chunnt do ne aktuälle Uuszug us em Benutzersperr-Logbuech:", - "clearyourcache": "'''Hiiwys:''' Noch em Spycheremuesch no dr Browser-Zwischespycher lääre go d Änderige sää.\n* '''Firefox/ Safari:''' ''Umschaltig'' drucken un glychzytig ''Aktualisiere'' aaklicken oder entwäder ''Strg+F5'' oder ''Strg+R'' (''Befehlstaste-R'' uf em Mac) drucke\n* '''Google Chrome:''' ''Umschaltig+Strg+R'' (''Befählstaschte-R'' uf em Mac) drucke\n* '''Internet Explorer:''' ''Strg+F5'' drucken oder ''Strg'' drucken un glychzytig ''Aktualisiere'' aaklicke\n* '''Opera:''' ''Extra → Internetspure lesche … → Individuäll Uuswahl → Dr komplett Cache lesche''", + "clearyourcache": "Hiiwys: Noch em Spycheremuesch no dr Browser-Zwischespycher lääre go d Änderige sää.\n* Firefox/ Safari: Umschaltig drucken un glychzytig Aktualisiere aaklicken oder entwäder Strg+F5 oder Strg+R (Befehlstaste-R uf em Mac) drucke\n* Google Chrome: Umschaltig+Strg+R (Befählstaschte-R uf em Mac) drucke\n* Internet Explorer: Strg+F5 drucken oder Strg drucken un glychzytig Aktualisiere aaklicke\n* Opera: Gang uff Menü → Yystellige (Opera → Yystellige uff eme Mac) un deno uff Dateschutz & Sicherheit → Browserdate lösche → Gspyycherti Bilder un Dateie.", "usercssyoucanpreview": "'''Tipp:''' Nimm dr „{{int:showpreview}}”-Chnopf, zum Dyy nej CSS vor em Spichere z teschte.", "userjsyoucanpreview": "'''Tipp:''' „Nimm dr {{int:showpreview}}”-Chnopf, zum Dyy nej JS vor em Spichere z teschte.", "usercsspreview": "== Vorschau vu Dyynem Benutzer-CSS. ==\n'''Wichtig:''' Noch em Spichere muesch Dyynem Browser sage, ass er die nej Version ladet:\n\n'''Mozilla:''' ''Strg-Shift-R'', '''IE:''' ''Strg-F5'', '''Safari:''' ''Cmd-Shift-R'', '''Konqueror:''' ''F5''.", @@ -2322,7 +2322,7 @@ "tooltip-feed-rss": "RSS-Feed für selli Syte", "tooltip-feed-atom": "Atom-Feed für selli Syte", "tooltip-t-contributions": "E Lischt vo de Byträg vo {{GENDER:$1|däm Benutzer}}", - "tooltip-t-emailuser": "Schick däm Benutzer e E-Bost", + "tooltip-t-emailuser": "Schigg e E-Mail aa {{GENDER:$1|de Benutzer|die Benutzeri}}", "tooltip-t-info": "Meh Informationen über die Syte", "tooltip-t-upload": "Dateien ufelade", "tooltip-t-specialpages": "Lischte vo allne Spezialsyte", @@ -2972,8 +2972,8 @@ "version-libraries-license": "Lizänz", "version-libraries-description": "Beschrybig", "version-libraries-authors": "Autor/inne", - "redirect": "Wyterleitig uf Benutzersyte, Syte, Syteversion oder Datei", - "redirect-summary": "Die Spezialsyte leitet wyter uf e Benutzersyte (numerischi Benutzerkännig aagee), Syte (Sytekännig aagee), Syteversion (Versionskännig aagee) oder Datei (Dateiname aagee). Benutzig: [[{{#Special:Redirect}}/user/101]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] oder [[{{#Special:Redirect}}/file/Example.jpg]].", + "redirect": "Wyterleitig uf Datei, Benutzersyte, Syte, Syteversion oder Logbuechyytraag.", + "redirect-summary": "Die Spezialsyte leitet wyter uf e Benutzersyte (numerischi Benutzerkännig aagee), Syte (Sytekännig aagee), Syteversion (Versionskännig aagee), e Datei (Dateiname aagee) oder en Logbeuchyytrag (Logbuechkennig aagee). Benutzig: Usage: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]], oder [[{{#Special:Redirect}}/logid/186]].", "redirect-submit": "Gang", "redirect-lookup": "Sueche:", "redirect-value": "Wärt:", @@ -2992,7 +2992,6 @@ "fileduplicatesearch-noresults": "S isch kei Datei mit em Name „$1“ gfunde wore.", "specialpages": "Spezialsytene", "specialpages-note-top": "Zeichenerklärig:", - "specialpages-note": "* Normali Spezialsyte.\n* Spezialsyte mit bschränktem Zuegang.", "specialpages-group-maintenance": "Wartigslischte", "specialpages-group-other": "Andri Spezialsyte", "specialpages-group-login": "Aamälde/Konto aalege", @@ -3134,7 +3133,7 @@ "htmlform-user-not-exists": "$1 git’s nid.", "htmlform-user-not-valid": "$1 isch ke gültige Name.", "logentry-delete-delete": "{{GENDER:$2|Dr|D|}} $1 het d Syte $3 glöscht", - "logentry-delete-restore": "{{GENDER:$2|Der $1|D $1|$1}} het d Syte $3 wider härgstellt", + "logentry-delete-restore": "{{GENDER:$2|Der $1|D $1|$1}} het d Syte $3 wider härgstellt ($4)", "logentry-delete-event": "{{GENDER:$2|Der $1|D $1|$1}} het d Sichtbarkeit {{PLURAL:$5|vumene Logbuechyytrag|vo $5 Logbuechyyträg}} gänderet uff $3: $4", "logentry-delete-revision": "{{GENDER:$2|Der $1|D $1|$1}} het d Sichtbarkeit {{PLURAL:$5|vunere Version|vo $5 Versione}} gänderet uff $3: $4", "logentry-delete-event-legacy": "{{GENDER:$2|Der $1|D $1|$1}} het d Sichtbarkeit vo Logbuechyyträg uff $3 gänderet", diff --git a/languages/i18n/gu.json b/languages/i18n/gu.json index fe96f31aea..137eae2069 100644 --- a/languages/i18n/gu.json +++ b/languages/i18n/gu.json @@ -30,7 +30,8 @@ "Matma Rex", "Bhatakati aatma", "YmKavishwar", - "Kevin Kovadia" + "Kevin Kovadia", + "Drashti4" ] }, "tog-underline": "કડીઓની નીચે લીટી (અંડરલાઇન):", @@ -48,6 +49,8 @@ "tog-watchdefault": "હું ફેરફાર કરૂં તે પાનાં અને ફાઇલ્સ મારી ધ્યાનસૂચિમાં ઉમેરો", "tog-watchmoves": "હું ખસેડું તે પાનાં અને ફાઇલ્સ મારી ધ્યાનસૂચિમાં ઉમેરો", "tog-watchdeletion": "હું દૂર કરું તે પાનાં અને ફાઇલ્સ મારી ધ્યાનસૂચિમાં ઉમેરો", + "tog-watchuploads": "મારી જોવાનીસૂચિ પર અપલોડ કરેલી નવી ફાઇલોને ઉમેરો", + "tog-watchrollback": "પૃષ્ઠોને ઉમેરો જ્યાં મેં મારી જોવાની સૂચિમાં રોલબેક કર્યું છે", "tog-minordefault": "બધા નવા ફેરફારો નાના તરીકે માર્ક કરો.", "tog-previewontop": "ફેરફાર પેટી પહેલાં પૂર્વાલોકન દર્શાવો", "tog-previewonfirst": "પ્રથમ ફેરફાર વખતે પૂર્વાલોકન બતાવો", @@ -58,12 +61,14 @@ "tog-shownumberswatching": "ધ્યાન રાખતા સભ્યોની સંખ્યા બતાવો", "tog-oldsig": "તમારા હાલના હસ્તાક્ષર:", "tog-fancysig": "હસ્તાક્ષરનો વિકિલખાણ તરીકે ઉપયોગ કરો (સ્વચાલિત કડી વગર)", - "tog-uselivepreview": "જીવંત પૂર્વદર્શન વાપરો", + "tog-uselivepreview": "પૃષ્ઠ ફરીથી લોડ કર્યા વગર પૂર્વાવલોકનો બતાવો", "tog-forceeditsummary": "કોરો 'ફેરફાર સારાંશ' ઉમેરતા પહેલા મને ચેતવો", "tog-watchlisthideown": "'મારી ધ્યાનસુચી'માં મે કરેલા ફેરફારો છુપાવો", "tog-watchlisthidebots": "ધ્યાનસુચીમાં બોટ દ્વારા થયેલા ફેરફાર સંતાડો.", "tog-watchlisthideminor": "'મારી ધ્યાનસુચી'માં નાનાં ફેરફારો છુપાવો", "tog-watchlisthideliu": "લોગ થયેલા સભ્ય દ્વારા કરવામાં આવેલ ફેરફાર ધ્યાનસુચીમાં છુપાવો.", + "tog-watchlistreloadautomatically": "જ્યારેપણ ફિલ્ટર બદલાઈ જાય ત્યારે આપમેળે જોવાની સૂચિ ફરીથી લોડ કરો (JavaScript આવશ્યક છે)", + "tog-watchlistunwatchlinks": "દૃશ્યયાદી પ્રવેશોમાં સીધી નિષ્ક્રિય/દૃશ્ય લિંક્સ ઉમેરો (ટૉગલ કાર્યક્ષમતા માટે આવશ્યક JavaScript)", "tog-watchlisthideanons": "અજાણ્યા સભ્ય દ્વારા થયેલ ફેરફાર મારી ધ્યાનસુચીમાં છુપાવો", "tog-watchlisthidepatrolled": "સુરક્ષા કાજે કરવામાં આવેલ ફેરફાર મારી ધ્યાનસુચીમાં છુપાવો", "tog-watchlisthidecategorization": "પાનાંઓનું વર્ગીકરણ છુપાવો", @@ -143,6 +148,8 @@ "october-date": "ઓક્ટોબર $1", "november-date": "નવેમ્બર $1", "december-date": "ડિસેમ્બર $1", + "period-am": "સવારે", + "period-pm": "સાંજે", "pagecategories": "{{PLURAL:$1|શ્રેણી|શ્રેણીઓ}}", "category_header": "શ્રેણી \"$1\" ના પાનાં", "subcategories": "ઉપશ્રેણીઓ", @@ -210,6 +217,8 @@ "talk": "ચર્ચા", "views": "દેખાવ", "toolbox": "સાધનો", + "tool-link-userrights": "બદલો {{GENDER:$1|સભ્ય}} સમુહો", + "tool-link-userrights-readonly": "દેખાડો {{GENDER:$1|સભ્ય}} સમુહો", "tool-link-emailuser": "આ {{GENDER:$1|સભ્ય}}ને ઇમેલ કરો", "imagepage": "ફાઇલનું પાનું જુઓ", "mediawikipage": "સંદેશનું પાનું જુઓ", @@ -231,6 +240,7 @@ "pool-timeout": "સમય સમાપ્ત - સ્થગિતતા પ્રતિક્ષીત", "pool-queuefull": "(Pool) કતાર પૂરી ભરેલી છે", "pool-errorunknown": "અજ્ઞાત ત્રુટિ", + "pool-servererror": "પૂલ કાઉન્ટર સેવા ઉપલબ્ધ નથી ($1)", "poolcounter-usage-error": "વપરાશ ક્ષતિ: $1", "aboutsite": "{{SITENAME}} વિષે", "aboutpage": "Project:વિષે", @@ -314,17 +324,20 @@ "laggedslavemode": "\"ચેતવણી:\" પાનું તાજેતરના ફેરફાર ધરાવતું નથી.", "readonly": "ડેટાબેઝ સ્થગિત", "enterlockreason": "સ્થગિતતા ક્યારે દુર કરાશે તેના અંદાજ શાથે,સ્થગિત કરવાનું કારણ આપો", - "readonlytext": "નવી નોંધો અને ફેરફારો માટે ડેટાબેઝ હાલમાં સ્થગિત કરાયેલ છે,કદાચ નિયમિત ડેટાબેઝ સારસંભાળ માટે,તે પછી આ ફરી સામાન્ય થશે.\n\nસ્થગિત કરનાર પ્રબંધકનો ખુલાસો: $1", + "readonlytext": "નવી નોંધો અને ફેરફારો માટે ડેટાબેઝ હાલમાં સ્થગિત કરાયેલ છે,કદાચ નિયમિત ડેટાબેઝ સારસંભાળ માટે,તે પછી આ ફરી સામાન્ય થશે.\n\n\nસિસ્ટમ સંચાલક જેણે તેને લૉક કર્યું છે, તે આ સમજૂતી આપે છે: $1", "missing-article": "ડેટાબેઝને પાનાનાં જે શબ્દો (\"$1\" $2) મળવા જોઈતા હતા તે મળ્યા નથી.\n\nઆવું સામાન્ય રીતે ત્યારે બને જ્યારે તમે તફાવત કે ઈતિહાસની એવી જુની કડીને અનુસરીને અહીં આવ્યા હોવ કે જે પાનું હટાવી દીધું હોય.\n\nજો તમને ખાતરી છે કે આવું નથી, તો તમારા ભાગે સોફ્ટવેરમાં રહેલી ત્રુટી આવી છે.\nકૃપા કરી આ વાત, જે તે પાનાની પૂર્ણ યુ.આર.એલ. (URL) કડી સાથે, તમારા [[Special:ListUsers/sysop|પ્રબંધક]]ના ધ્યાન પર લાવો.", "missingarticle-rev": "(પુનરાવર્તન#: $1)", "missingarticle-diff": "(ભેદ: $1, $2)", "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": "ત્રુટિ: પત્રક રજૂ થયું નહીં", @@ -332,8 +345,14 @@ "cannotdelete": "ફાઇલ કે પાનું \"$1\" હટાવી શકાયું નથી.\nશક્ય છે કે અન્ય કોઈએ પહેલેથી હટાવી દીધું હોય.", "cannotdelete-title": "\"$1\" પાનું કાઢી શકતા નથી", "delete-hook-aborted": "દૂર કરવાનું હૂક વડે રોકી રાખવામાં આવ્યું.\nતે કોઇ કારણ આપતું નથી.", + "no-null-revision": "પૃષ્ઠ \"$1\" માટે નવો નલ પુનરાવર્તન બનાવી શક્યું નથી", "badtitle": "ખરાબ શિર્ષક", "badtitletext": "આપનું ઈચ્છિત શીર્ષક અમાન્ય છે, ખાલી છે, અથવાતો અયોગ્ય રીતે આંતર-ભાષિય કે આંતર-વિકિ સાથે જોડાયેલું શીર્ષક છે.\nશક્ય છે કે તેમાં એક કે વધુ એવા અક્ષર કે ચિહ્નો છે કે જે પાનાનાં શીર્ષક માટે અવૈધ છે.", + "title-invalid-empty": "વિનંતી કરેલું પાનું શીર્ષક ખાલી છે અથવા તેમાં ફક્ત નામસ્થળનું નામ છે.", + "title-invalid-utf8": "વિનંતી કરાયેલ પૃષ્ઠ શીર્ષકમાં અમાન્ય UTF-8 ક્રમ છે.", + "title-invalid-interwiki": "માગણી કરેલ પૃષ્ઠ શીર્ષકમાં એક આંતરવિકિ કડી છે જેનો ઉપયોગ શીર્ષકમાં કરી શકાતો નથી.", + "title-invalid-talk-namespace": "વિનંતી કરાયેલ પાનું શીર્ષક એવા ચર્ચા પૃષ્ઠનો ઉલ્લેખ કરે છે જે અસ્તિત્વમાં નથી.", + "title-invalid-characters": "માગણી કરેલ પૃષ્ઠ શીર્ષકમાં અમાન્ય અક્ષરો છે: \"$1\".", "perfcached": "નીચે દર્શાવેલી માહિતી જૂના સંગ્રહમાંથી લીધેલી છે અને શક્ય છે કે તે હાલની પરિસ્થિતિમાં સચોટ ના હોય. વધુમાં વધુ {{PLURAL:$1|એક પરિણામ|$1 પરિણામો}} આ સંગ્રહમાં ઉપલબ્ધ છે.", "perfcachedts": "નીચેની વિગતો જૂના સંગ્રહમાથી છે અને તે છેલ્લે $1એ તાજી કરવામાં આવી હતી. વધુમાં વધુ {{PLURAL:$4|એક પરિણામ|$4 પરિણામો}} આ સંગ્રહમાં ઉપલબ્ધ છે.", "querypage-no-updates": "આ પાનાની નવી આવૃત્તિઓ હાલમાં અક્રિય છે.\nઅહીંની વિગતો હાલમાં રિફ્રેશ કરવામાં નહી આવે.", @@ -365,6 +384,8 @@ "virus-scanfailed": "સ્કેન અસફળ (code $1)", "virus-unknownscanner": "અજાણ્યું એન્ટીવાઇરસ:", "logouttext": "'''તમે સફળતાપૂર્વક બહાર નીકળી ચૂક્યા છો.'''\n\nધ્યાન રાખો કે જ્યાં સુધી તમે તમારા બ્રાઉઝરની કૅશ સાફ નહીં કરો ત્યાં સુધી કેટલાક પાનાં તમે પ્રવેશ કરેલો છે તેમ બતાવશે.", + "cannotlogoutnow-title": "હવે લૉગ આઉટ કરી શકાતું નથી", + "cannotlogoutnow-text": "$1 નો ઉપયોગ કરતી વખતે લૉગ આઉટ શક્ય નથી.", "welcomeuser": "સુસ્વાગતમ્, $1!", "welcomecreation-msg": "તમારૂં ખાતું ખુલી ગયું છે.\nતમારી [[Special:Preferences|{{SITENAME}} પસંદ]] બદલવાનું ભૂલશો નહીં.", "yourname": "સભ્ય નામ:", @@ -380,10 +401,16 @@ "createacct-yourpasswordagain-ph": "પાસવર્ડ ફરીથી દાખલ કરો", "userlogin-remembermypassword": "મને પ્રવેશિત રાખો", "userlogin-signwithsecure": "સલામત જોડાણ વાપરો", + "cannotlogin-title": "લૉગ ઇન કરી શકતા નથી", + "cannotlogin-text": "લોગ ઇન કરવું શક્ય નથી.", + "cannotloginnow-title": "હવે લૉગ ઇન કરી શકાતું નથી", + "cannotloginnow-text": "$1 નો ઉપયોગ કરતી વખતે લૉગ ઇન શક્ય નથી.", + "cannotcreateaccount-title": "ખાતું ખોલી શકાય તેમ નથી", "yourdomainname": "તમારૂં ડોમેઇન:", "password-change-forbidden": "તમે આ વિકિ માટે પાસવર્ડ્સ બદલી શકતા નથી.", "externaldberror": "પ્રમાણભૂતતાની ત્રુટી આવી અથવા તમારૂ બહારનુ ખાતું અપડેટ કરવાનો અધિકાર તમને નથી.", "login": "પ્રવેશ", + "login-security": "તમારી ઓળખ ચકાસો", "nav-login-createaccount": "પ્રવેશ કરો / નવું ખાતું ખોલો", "logout": "પ્રસ્થાન", "userlogout": "પ્રસ્થાન/લૉગ આઉટ", @@ -536,9 +563,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 +601,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જ્યારે તમે વેબ આધારિત અજ્ઞાત પ્રોક્સી વાપરતા હોવ ત્યારે આવું બની શકે છે.", @@ -587,7 +614,6 @@ "explainconflict": "તમે ફેરફાર કરવાની શરૂઆત કરી તે દરમ્યાન અમુક કોઇકે પણ તેમાં ફેરફાર કર્યાં છે.\nઉપરનો અક્ષર દેહ અત્યારનો વિહરમાન સ્થિતિ બતાવે છે.\nતમારા દ્વારા કરાયેલ ફેરફાર નીચેના ક્ષેત્રમાં દેખાય છે.\nતમારે તમારા ફેરફારો વિહરમાન હયાત લેખમાં વિલિન કરવા પડશે. \nજો તમે \"$1\" આ બટન દબાવશો તો ફક્ત ઉપરનો લેખ સચવાશે.", "yourtext": "તમારું લખાણ", "storedversion": "સંગ્રહેલ પુનરાવર્તન", - "nonunicodebrowser": "'''ચેતવણી: તમારું બ્રાઉઝર યુનિકોડ ઉકેલવા સક્ષમ નથી.'''\nઅહીં તમે સુરક્ષિત રીતે ફેરફારો નહીં કરી શકો: ASCII સિવાયના અક્ષરો સંપાદન ચોકઠામાં હેક્સાડેસિમલ સ્વરૂપે દેખાશે.", "editingold": "'''ચેતવણી: તમે આ પાનાની ખૂબ જૂની આવૃત્તિમાં ફેરફાર કરી રહ્યાં છો.'''\nજો તમે તેને સાચવશો તો, તે આવૃત્તિ પછી થયેલા બધા ફેરફારો નાબુદ થઈ જશે.", "yourdiff": "ભેદ", "copyrightwarning": "મહેરબાની કરીને એ વાતની નોંધ લેશો કે {{SITENAME}}માં કરેલું બધુંજ યોગદાન $2 હેઠળ પ્રકાશિત કરેલું માનવામાં આવે છે (વધુ માહિતિ માટે $1 જુઓ).\nજો આપ ના ચાહતા હોવ કે તમારા યોગદાનમાં અન્ય કોઇ વ્યક્તિ બેધડક પણે ફેરફાર કરે અને તેને પુનઃપ્રકાશિત કરે, તો અહીં યોગદાન કરશો નહી.
    \nસાથે સાથે તમે અમને એમ પણ ખાતરી આપી રહ્યા છો કે આ લખાણ તમે મૌલિક રીતે લખ્યું છે, અથવાતો પબ્લિક ડોમેઇન કે તેવા અન્ય મુક્ત સ્ત્રોતમાંથી લીધું છે.\n'''પરવાનગી વગર પ્રકાશનાધિકારથી સુરક્ષિત કાર્ય અહીં પ્રકાશિત ના કરશો!'''", @@ -612,7 +638,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 +1103,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 +1155,7 @@ "recentchangeslinked-feed": "આની સાથે જોડાયેલા ફેરફાર", "recentchangeslinked-toolbox": "આની સાથે જોડાયેલા ફેરફાર", "recentchangeslinked-title": "\"$1\" ને લગતા ફેરફારો", - "recentchangeslinked-summary": "આ એવા ફેરફારોની યાદી છે જે આ ચોક્કસ પાના (કે શ્રેણીનાં સભ્ય પાનાઓ) સાથે જોડાયેલા પાનાઓમાં તાજેતરમાં કરવામાં આવ્યા હોય.\n
    [[Special:Watchlist|તમારી ધ્યાનસૂચિમાં]] હોય તેવા પાનાં '''ઘાટા અક્ષર'''માં વર્ણવ્યાં છે", + "recentchangeslinked-summary": "આ એવા ફેરફારોની યાદી છે જે આ ચોક્કસ પાના (કે શ્રેણીનાં સભ્ય પાનાઓ) સાથે જોડાયેલા પાનાઓમાં તાજેતરમાં કરવામાં આવ્યા હોય.\n[[Special:Watchlist|તમારી ધ્યાનસૂચિમાં]] હોય તેવા પાનાં ઘાટા અક્ષરમાં વર્ણવ્યાં છે.", "recentchangeslinked-page": "પાનાનું નામ:", "recentchangeslinked-to": "આને બદલે આપેલા પાનાં સાથે જોડાયેલા લેખોમાં થયેલા ફેરફારો શોધો", "upload": "ફાઇલ ચડાવો", @@ -1656,7 +1691,7 @@ "deletecomment": "કારણ:", "deleteotherreason": "અન્ય/વધારાનું કારણ:", "deletereasonotherlist": "અન્ય કારણ", - "deletereason-dropdown": "* દૂર કરવાના સામાન્ય કારણો\n** સ્પામ\n** ભાંગફોડીયા પ્રવૃત્તિ\n** પ્રકાશનાધિકાર ભંગ \n** લેખકની વિનંતી\n** ભાંગેલ વળાંક", + "deletereason-dropdown": "* દૂર કરવાના સામાન્ય કારણો\n** સ્પામ\n** ભાંગફોડીયા પ્રવૃત્તિ\n** પ્રકાશનાધિકાર ભંગ \n** લેખકની વિનંતી\n** ભાંગેલ દિશાનિર્દેશ", "delete-edit-reasonlist": "ભુંસવાનું કારણ બદલો.", "delete-toobig": "આ પાનાના ફેરફારોનો ઇતિહાસ ખૂબ લાંબો છે , $1 {{PLURAL:$1|ફેરફાર|ફેરફારો}}થી પણ વધારે.\n{{SITENAME}}ને અક્સ્માતે ખોરવાતું અટકાવવા આવા પાનાને હટાવવા પર પ્રતિબંધ છે.", "delete-warning-toobig": "આ પાનાનો ઇતિહાસ ઘણો લાંબો છે લગભગ $1 {{PLURAL:$1|ફેરફાર|ફેરફારો}}.\nતેને ભૂંસતા {{SITENAME}}ના માહિતીસંચને લાગતા કામકાજ પર અસર થૈ શકે છે;\nસંભાળ પૂર્વક આગળ વધો.\n\n\nDeleting it may disrupt database operations of {{SITENAME}};", @@ -1696,7 +1731,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 +2765,7 @@ "version-libraries-library": "લાઇબ્રેરી", "version-libraries-version": "આવૃત્તિ", "redirect": "ફાઇલ, સભ્ય, પાનું, આવૃત્તિ, અથવા લૉગ ઓળખ વડે દિશાનિર્દેશન", + "redirect-summary": "આ વિશિષ્ટ પૃષ્ઠ ફાઇલને (ફાઇલ નામ આપવામાં આવે છે), એક પૃષ્ઠ (પુનરાવર્તન ID અથવા પૃષ્ઠ ID આપવામાં આવે છે), વપરાશકર્તા પૃષ્ઠ (એક આંકડાકીય વપરાશકર્તા ID આપવામાં આવે છે), અથવા લોગ એન્ટ્રી (લોગ ID ને આપવામાં આવે છે) પર પુનર્નિર્દેશન કરે છે. વપરાશ:[[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]], અથવા [[{{#Special:Redirect}}/logid/186]].", "redirect-submit": "જાઓ", "redirect-lookup": "જુઓ:", "redirect-value": "કિંમત:", @@ -2747,7 +2783,6 @@ "fileduplicatesearch-result-n": "\"$1\" ફાઇલની તેની સમાન {{PLURAL:$2|1 નકલ |$2 નકલો }} છે.", "fileduplicatesearch-noresults": " \"$1\" નામ ધરાવતી કોઇ ફાઇલ ન મળી", "specialpages": "ખાસ પાનાંઓ", - "specialpages-note": "* નિયમિત ખાસ પાનાં.\n* પ્રતિબંધિત ખાસ પાનાં.", "specialpages-group-maintenance": "સમારકામ અહેવાલ", "specialpages-group-other": "અન્ય ખાસ પાનાઓ", "specialpages-group-login": "પ્રવેશ / ખાતુ બનાવો", diff --git a/languages/i18n/ha.json b/languages/i18n/ha.json index 44fe822215..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", @@ -145,6 +146,7 @@ "printableversion": "Sufar bugawa", "permalink": "Dawwamammen mahaɗi", "print": "Buga", + "view": "Duba", "edit": "Gyarawa", "create": "Ƙirƙira", "delete": "Soke", @@ -173,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", @@ -236,15 +238,18 @@ "nav-login-createaccount": "Shiga / ƙirƙiri akwanti", "logout": "Fita", "userlogout": "Fita", + "createaccount": "ƙirƙira asusu", "createacct-emailrequired": "adireshin i-mel", "createacct-emailoptional": "adireshin i-mel (zaɓi)", "createacct-email-ph": "shiga adireshinka i-mel", "createacct-another-email-ph": "shiga adireshin i-mel", "createacct-realname": "Suna na hakika (zaɓi)", + "createacct-submit": "Ƙirƙira asusunka", "mailmypassword": "Aiken kalmar sirri ta Imel", "emailconfirmlink": "Tabbata adireshinka i-mel", "pt-login": "Shiga", "pt-login-button": "Shiga", + "pt-createaccount": "ƙirƙira asusu", "pt-userlogout": "Fita", "changepassword": "Canji kalmar sirri", "oldpassword": "Tsohon kalmar sirri", @@ -281,6 +286,7 @@ "showdiff": "Nuna sauye-sauye", "anoneditwarning": "'''Hattara:''' Ba ku yi logi ba.\nZa a rubuta adireshinku na IP a cikin tarihin sauye-sauyen wannan shafi.", "summary-preview": "Rigya-gani na taƙaici:", + "loginreqlink": "Shiga", "newarticle": "(Sabo)", "newarticletext": "Kun latsa mahaɗi zuwa shafin da babu shi tukuna.\nDomin ƙirƙiro wannan shafin, ku fara rubutu a cikin fage na ƙasa (duba [$1 shafin taimako] don ƙarin bayani).\nIdan kun ɓata ne cikin shawaginku, to ku latsa maɓallin '''baya''' na safuwayan shawaginku.", "noarticletext": "A halin yanzu babu matani a kan wannan shafi.\nKuna iya [[Special:Search/{{PAGENAME}}|nemo kan wannan shafi]] cikin wasu shafuna,\n[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} bincika rajistan ayyukan],\nko [{{fullurl:{{FULLPAGENAME}}|action=edit}} gyara wannan shafi].", @@ -323,6 +329,7 @@ "prevn": "baya {{PLURAL:$1|$1}}", "nextn": "gaba {{PLURAL:$1|$1}}", "viewprevnext": "Duba ($1 {{int:pipe-separator}} $2) ($3)", + "searchprofile-everything": "Duk abin da", "search-result-size": "$1 ({{PLURAL:$2|1 kalma|$2 kalmomi}})", "search-redirect": "(turawa daga $1)", "search-section": "(sashe $1)", @@ -345,15 +352,23 @@ "rightslog": "Rajistan bayar da izini ga ma'aikata", "action-edit": "gyara wannan shafi", "nchanges": "{{PLURAL:$1|sauyi|sauye-sauye}} $1", + "enhancedrc-history": "Tarihi", "recentchanges": "Sauye-sauyen baya-bayan nan", "recentchanges-legend": "Zaɓi na sauye-sauyen baya-bayan nan", "recentchanges-feed-description": "Bi sawun sauye-sauyen ƙarshe na wikin da ke cikin wannan kwarare", + "recentchanges-label-minor": "Karamin gyara ne", "rclistfrom": "Nuna sabbin sauye-sauye tun daga $3 $2", "rcshowhideminor": "$1 ƙananen sauye-sauye", + "rcshowhideminor-hide": "Ɓoye", "rcshowhidebots": "Rabuwat $1", + "rcshowhidebots-show": "Nuna", "rcshowhideliu": "$1 Ma'aikata logaggi", + "rcshowhideliu-show": "Nuna", + "rcshowhideliu-hide": "Ɓoye", "rcshowhideanons": "$1 ma'aikata masu ɓoyayye suna", + "rcshowhideanons-hide": "Ɓoye", "rcshowhidemine": "$1 sauye-sauyena", + "rcshowhidemine-hide": "Ɓoye", "rclinks": "Nuna sauye-sauye $1 na ƙarshe a cikin kwanaki $2 na baya", "diff": "bamban", "hist": "Tarihi", @@ -404,6 +419,7 @@ "pager-older-n": "{{PLURAL:$1|tsoho 1|tsoffi $1}}", "booksources": "Littattafai maƙiblata", "booksources-search-legend": "Nemo tushen littattafai", + "booksources-search": "Nema", "log": "Rajistoci ayyuka", "allpages": "Duka shafuna", "prevpage": "Shafi na baya ($1)", @@ -541,6 +557,7 @@ "tooltip-search": "Binciko {{SITENAME}}", "tooltip-search-go": "A je ga shafi mai wannan suna idan akwai shi", "tooltip-search-fulltext": "Binciki shafuna masu wannan matani", + "tooltip-p-logo": "Duba babban shafin", "tooltip-n-mainpage": "Duba shafin Marhabin", "tooltip-n-mainpage-description": "Duba shafin marhabin", "tooltip-n-portal": "A game da wannan shiri, abinda za a iya yi, ina za a samu abubuwa", diff --git a/languages/i18n/hak.json b/languages/i18n/hak.json index 03f044c9a6..63517be788 100644 --- a/languages/i18n/hak.json +++ b/languages/i18n/hak.json @@ -154,13 +154,7 @@ "anontalk": "Kâu-liù", "navigation": "Thô-hòng", "and": " lâu", - "qbfind": "Cháu-chhìm", - "qbbrowse": "Liù-lám", - "qbedit": "Phiên-siá", - "qbpageoptions": "Ya̍p-mien sién-hong", - "qbmyoptions": "Ngài-ke ya̍p-mien", "faq": "Sòng-kien mun-thì kié-tap", - "faqpage": "Project:Sòng-kien mun-thì kié-tap", "actions": "Thûng-chok", "namespaces": "Miàng-sṳ khûng-kiên", "variants": "Pien-von", @@ -184,29 +178,19 @@ "edit": "Phiên-siá", "create": "Kien-li̍p", "create-local": "Sîn-chen pún-thi sot-mìn", - "editthispage": "Phiên-siá liá ya̍p", - "create-this-page": "Kien-li̍p pún-ya̍p", "delete": "San-chhù", - "deletethispage": "San-chhù pún-ya̍p", - "undeletethispage": "Chhí-sêu san-chhù liá-ya̍p.", "undelete_short": "恢復$1隻分删除个编寫", "viewdeleted_short": "查看$1項已刪除个修訂", "protect": "Pó-fu", "protect_change": "Kiên-kói", - "protectthispage": "Pó-fu pún-ya̍p", "unprotect": "更改保護", - "unprotectthispage": "更改本頁保護", "newpage": "Sîn ya̍p-mien", - "talkpage": "Thó-lun pún-ya̍p", "talkpagelinktext": "kâu-liù", "specialpage": "Thi̍t-sû ya̍p-mien", "personaltools": "Sṳ̂-ngìn kûng-khí", - "articlepage": "Khon nui-yùng ya̍p", "talk": "Thó-lun", "views": "Chhà-khon-sú", "toolbox": "Kûng-khí-siông", - "userpage": "查看用戶頁面", - "projectpage": "查看項目頁面", "imagepage": "Chhà-khon vùn-khien ya̍p-mien", "mediawikipage": "Chhà-khon sêu-sit ya̍p-mien", "templatepage": "Chhà-khon mù-pán ya̍p-mien", @@ -504,11 +488,13 @@ "minoredit": "Liá-he yit-chak se-mì siû-kói", "watchthis": "Kâm-sṳ pún-ya̍p", "savearticle": "Pó-chhùn pún-ya̍p", + "publishpage": "Fat-péu vùn-chông", + "publishchanges": "Fat-péu siû-kói", "preview": "預覽", "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」,您嘅編寫將毋帶標題保存。", @@ -541,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ṳ.'''", @@ -581,6 +568,7 @@ "edit-gone-missing": "毋做得更新頁面。\n其可能正正分刪除。", "edit-conflict": "Phiên-siá chhûng-thu̍t.", "edit-no-change": "汝嘅編寫已經略過,因為文字無任何改動。", + "postedit-confirmation-saved": "Ngì ke siû-kói yí-kîn pó-chhùn.", "edit-already-exists": "毋做得建立一隻新頁面。\n其已經存在。", "defaultmessagetext": "Me̍t-ngin sêu-sit vùn-sṳ", "invalid-content-data": "無效嘅數據內容", diff --git a/languages/i18n/he.json b/languages/i18n/he.json index 064a627c47..0d9bf6d9ae 100644 --- a/languages/i18n/he.json +++ b/languages/i18n/he.json @@ -68,13 +68,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": "הסתרת שינויים בקטגוריות", @@ -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)", @@ -696,8 +697,8 @@ "explainconflict": "משתמש אחר שינה את הדף מאז שהתחלת לערוך אותו.\nתיבת העריכה העליונה מכילה את הטקסט בדף כפי שהוא כרגע.\nהשינויים שלך מוצגים בתיבת העריכה התחתונה.\nיש למזג את השינויים שלך מתיבת העריכה התחתונה לתיבת העריכה העליונה.\nרק הטקסט בתיבת העריכה העליונה יישמר לאחר לחיצה על \"$1\".", "yourtext": "הטקסט שלך", "storedversion": "גרסה שמורה", - "nonunicodebrowser": "'''אזהרה: הדפדפן שלך אינו תואם לתקן יוניקוד.'''\nכדי למנוע בעיות הנוצרות כתוצאה מכך ולאפשר לך לערוך דפים בבטחה, תווים שאינם ב־ASCII יוצגו בתיבת העריכה כקודים הקסדצימליים.", "editingold": "אזהרה: {{GENDER:|אתה עורך|את עורכת|אתם עורכים}} גרסה ישנה של דף זה.\nאם {{GENDER:|תשמור|תשמרי|תשמרו}} את העריכה, כל השינויים שנעשו מאז גרסה זו יאבדו.", + "unicode-support-fail": "נראה שהדפדפן שלך אינו תומך ביוניקוד. תמיכה ביוניקוד נדרשת לצורך עריכת דפים, ולכן עריכתך לא נשמרה.", "yourdiff": "הבדלים", "copyrightwarning": "'''שימו לב:''' תרומתכם ל{{grammar:תחילית|{{SITENAME}}}} תפורסם תחת תנאי הרישיון $2 (ראו $1 לפרטים נוספים). אם אינכם רוצים שעבודתכם תהיה זמינה לעריכה על־ידי אחרים, שתופץ לעיני כול, ושאחרים יוכלו להעתיק ממנה בציון המקור – אל תפרסמו אותה פה. כמו־כן, אתם מבטיחים לנו כי כתבתם את הטקסט הזה בעצמכם, או העתקתם אותו ממקור שאינו מוגן בזכויות יוצרים. '''אל תעשו שימוש בחומר המוגן בזכויות יוצרים ללא רשות!'''", "copyrightwarning2": "'''שימו לב:''' תורמים אחרים עשויים לערוך או אף להסיר את תרומתכם ל{{grammar:תחילית|{{SITENAME}}}}. אם אינכם רוצים שעבודתכם תהיה זמינה לעריכה על־ידי אחרים, אל תפרסמו אותה פה. כמו־כן, אתם מבטיחים לנו כי כתבתם את הטקסט הזה בעצמכם, או העתקתם אותו ממקור שאינו מוגן בזכויות יוצרים (ראו $1 לפרטים נוספים). '''אל תעשו שימוש בחומר המוגן בזכויות יוצרים ללא רשות!'''", @@ -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נראה שהוא נמחק.", @@ -764,6 +765,7 @@ "parser-template-loop-warning": "נמצאה תבנית הקוראת לעצמה: [[$1]]", "template-loop-category": "דפים עם לולאות בתבנית", "template-loop-category-desc": "הדף הזה מכיל לולאה בתבנית, כלומר תבנית שקוראת לעצמה באופן רקורסיבי.", + "template-loop-warning": "אזהרה: הדף הזה קורא ל[[:$1]], וזה גורם ללולאה בתבנית (קריאה רקורסיבית אינסופית).", "parser-template-recursion-depth-warning": "עומק התבניות המוכללות זו בזו עבר את המגבלה ($1)", "language-converter-depth-warning": "עומק ממיר השפה עבר את המגבלה ($1)", "node-count-exceeded-category": "דפים שבהם מספר הצמתים גדול מדי", @@ -993,7 +995,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": "שונות", @@ -1033,6 +1035,7 @@ "timezoneregion-indian": "האוקיינוס ההודי", "timezoneregion-pacific": "האוקיינוס השקט", "allowemail": "לאפשר למשתמשים לשלוח לי דואר אלקטרוני", + "email-blacklist-label": "חסימת המשתמשים הבאים משליחת דואר אלקטרוני אליי:", "prefs-searchoptions": "חיפוש", "prefs-namespaces": "מרחבי שם", "default": "ברירת המחדל", @@ -1074,6 +1077,7 @@ "prefs-editor": "חלון העריכה", "prefs-preview": "תצוגה מקדימה", "prefs-advancedrc": "אפשרויות מתקדמות", + "prefs-opt-out": "ביטול שיפורים", "prefs-advancedrendering": "אפשרויות מתקדמות", "prefs-advancedsearchoptions": "אפשרויות מתקדמות", "prefs-advancedwatchlist": "אפשרויות מתקדמות", @@ -1309,9 +1313,20 @@ "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-activefilters": "מסננים פעילים", "rcfilters-advancedfilters": "מסננים מתקדמים", + "rcfilters-limit-title": "אילו שינויים להראות", + "rcfilters-limit-shownum": "להציג {{PLURAL:$1|שינוי אחרון אחד|$1 שינויים אחרונים}}", + "rcfilters-days-title": "ימים אחרונים", + "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": "כדי לשמור את הגדרות המסננים שלך ולהשתמש בהן מאוחר יותר, יש ללחוץ על סמל הסימנייה באזור המסנן הפעיל להלן.", @@ -1323,43 +1338,41 @@ "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-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-registration": "רישום העורכים", - "rcfilters-filter-registered-label": "רשומים", - "rcfilters-filter-registered-description": "עורכים שנכנסו לחשבון.", - "rcfilters-filter-unregistered-label": "לא רשומים", - "rcfilters-filter-unregistered-description": "עורכים שלא נכנסו לחשבון.", - "rcfilters-filter-unregistered-conflicts-user-experience-level": "המסנן הזה פעיל מתנגש עם {{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-filtergroup-user-experience-level-conflicts-unregistered": "מסנני הניסיון מוצאים רק משתמשים רשומים, כך שמסנן זה מתנגש עם המסנן \"לא רשומים\".", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "המסנן \"לא רשומים\" מתנגש עם אחד או יותר ממסנני רמת הניסיון, שמוצאים משתמשים רשומים בלבד. המסננים המתנגשים מסומנים באזור המסננים הפעילים לעיל.", + "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": "עריכות שבוצעו על־ידי כלים אוטומטיים.", @@ -1382,6 +1395,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": "עריכות של תוכן ויקי, של דיונים, של תיאורי קטגוריות…", @@ -1394,18 +1412,28 @@ "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": "סימון כל השינויים כאילו נצפו", + "rcfilters-watchlist-edit-watchlist-button": "עריכת רשימת הדפים במעקב שלך", + "rcfilters-watchlist-showupdated": "שינויים בדפים שלא ביקרת בהם מאז ביצוע השינויים מופיעים בכתב מודגש, ומודגשים בצבע.", + "rcfilters-preference-label": "הסתרת הגרסה המשופרת של השינויים האחרונים", + "rcfilters-preference-help": "ביטול של העיצוב מחדש של הממשק (שבוצע בשנת 2017) ושל כל הכלים שנוספו אז ומאז.", "rcnotefrom": "להלן {{PLURAL:$5|השינוי שבוצע|השינויים שבוצעו}} מאז $3, $4 (מוצגים עד $1).", "rclistfromreset": "איפוס בחירת התאריך", "rclistfrom": "הצגת שינויים חדשים החל מ־$2, $3", @@ -1462,6 +1490,7 @@ "uploadbtn": "העלאת הקובץ", "reuploaddesc": "ביטול ההעלאה וחזרה לטופס העלאת קבצים לשרת", "upload-tryagain": "שליחת התיאור החדש של הקובץ", + "upload-tryagain-nostash": "שליחת הקובץ המועלה מחדש והתיאור המעודכן", "uploadnologin": "לא נכנסת לחשבון", "uploadnologintext": "נדרשת $1 כדי להעלות קבצים.", "upload_directory_missing": "שרת האינטרנט אינו יכול ליצור את תיקיית ההעלאות ($1) החסרה.", @@ -1475,7 +1504,7 @@ "uploadlogpage": "יומן העלאות", "uploadlogpagetext": "להלן רשימה של העלאות הקבצים האחרונות שבוצעו.\nראו את [[Special:NewFiles|גלריית הקבצים החדשים]] להצגה ויזואלית שלהם.", "filename": "שם הקובץ", - "filedesc": "
    תקציר
    ", + "filedesc": "תקציר", "fileuploadsummary": "תיאור:", "filereuploadsummary": "השינויים בקובץ:", "filestatus": "מעמד זכויות יוצרים:", @@ -1521,6 +1550,7 @@ "file-deleted-duplicate-notitle": "קובץ זהה לקובץ זה נמחק בעבר, והכותרת שלו הועלמה.\nיש לבקש ממשתמש שיכול לראות נתונים על קבצים שהועלמו לבדוק את המצב לפני העלאת הקובץ מחדש.", "uploadwarning": "אזהרת העלאת קבצים", "uploadwarning-text": "אנא שנו את תיאור הקובץ שלמטה ונסו שוב.", + "uploadwarning-text-nostash": "יש להעלות מחדש את הקובץ, לשנות את התיאור להלן ולנסות שוב.", "savefile": "שמירת קובץ", "uploaddisabled": "העלאת קבצים מבוטלת.", "copyuploaddisabled": "העלאת קבצים מכתובת URL מבוטלת.", @@ -1664,7 +1694,7 @@ "upload-curl-error28": "הסתיים זמן ההמתנה להעלאה", "upload-curl-error28-text": "לאתר לקח זמן רב מדי לענות. אנא בדקו שהאתר זמין, המתינו מעט ונסו שוב. ייתכן שתרצו לנסות בזמן פחות עמוס.", "license": "רישיון:", - "license-header": "
    רישיון
    ", + "license-header": "רישיון", "nolicense": "אין", "licenses-edit": "עריכת אפשרויות רישיון", "license-nopreview": "(תצוגה מקדימה לא זמינה)", @@ -1683,7 +1713,7 @@ "listfiles_size": "גודל", "listfiles_description": "תיאור", "listfiles_count": "גרסאות", - "listfiles-show-all": "כולל גרסאות ישנות של תמונות", + "listfiles-show-all": "כולל גרסאות ישנות של קבצים", "listfiles-latestversion": "גרסה נוכחית", "listfiles-latestversion-yes": "כן", "listfiles-latestversion-no": "לא", @@ -1787,6 +1817,8 @@ "pageswithprop-legend": "דפים עם מאפיין דף", "pageswithprop-text": "בדף זה מופיעה רשימת דפים שמשתמשים במאפיין דף מסוים.", "pageswithprop-prop": "שם המאפיין:", + "pageswithprop-reverse": "מיון בסדר הפוך", + "pageswithprop-sortbyvalue": "מיון לפי הערך של המאפיין", "pageswithprop-submit": "הצגה", "pageswithprop-prophidden-long": "ערך ארוך של מאפיין טקסטואלי הוסתר ($1)", "pageswithprop-prophidden-binary": "ערך של מאפיין בינארי הוסתר ($1)", @@ -2090,7 +2122,7 @@ "unwatchthispage": "הפסקת המעקב אחרי דף זה", "notanarticle": "זהו אינו דף תוכן", "notvisiblerev": "הגרסה האחרונה שנוצרה על־ידי משתמש אחר נמחקה", - "watchlist-details": "ברשימת המעקב יש {{PLURAL:$1|דף אחד|$1 דפים}}, כאשר דפי השיחה אינם נספרים בנפרד.", + "watchlist-details": "ברשימת המעקב שלך יש {{PLURAL:$1|דף אחד|$1 דפים}} (ובנוסף להם, דפי שיחה).", "wlheader-enotif": "הודעות דוא\"ל מאופשרות.", "wlheader-showupdated": "דפים שהשתנו מאז ביקורך האחרון בהם מוצגים ב'''הדגשה'''.", "wlnote": "להלן {{PLURAL:$1|השינוי האחרון|$1 השינויים האחרונים}} {{PLURAL:$2|בשעה האחרונה|בשעתיים האחרונות|ב־$2 השעות האחרונות}}, עד $4, $3.", @@ -2125,6 +2157,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": "מחיקת הדף", @@ -2153,6 +2186,7 @@ "delete-warning-toobig": "דף זה כולל מעל {{PLURAL:$1|גרסה אחת|$1 גרסאות}} בהיסטוריית העריכות שלו. מחיקה שלו עלולה להפריע לפעולות בבסיס הנתונים; אנא שקלו שנית את המחיקה.", "deleteprotected": "אין {{GENDER:|באפשרותך|באפשרותך|באפשרותכם}} למחוק את הדף כי הוא מוגן.", "deleting-backlinks-warning": "אזהרה: [[Special:WhatLinksHere/{{FULLPAGENAME}}|דפים אחרים]] מקשרים לדף ש{{GENDER:|אתה עומד|את עומדת|אתם עומדים}} למחוק או מכלילים אותו.", + "deleting-subpages-warning": "אזהרה: לדף ש{{GENDER:|אתה עומד|את עומדת|אתם עומדים}} למחוק יש [[Special:PrefixIndex/{{FULLPAGENAME}}/|{{PLURAL:$1|דף משנה|$1 דפי משנה|51=יותר מ־50 דפי משנה}}]].", "rollback": "שחזור עריכות", "rollbacklink": "שחזור", "rollbacklinkcount": "שחזור {{PLURAL:$1|עריכה אחת|$1 עריכות}}", @@ -2318,6 +2352,7 @@ "sp-contributions-newonly": "הצגת עריכות שהן יצירות של דפים בלבד", "sp-contributions-hideminor": "הסתרת עריכות משניות", "sp-contributions-submit": "חיפוש", + "sp-contributions-outofrange": "לא ניתן להציג תוצאות. טווח ה־IP המבוקש גדול יותר ממגבלת ה־CIDR, שהיא /$1.", "whatlinkshere": "דפים המקושרים לכאן", "whatlinkshere-title": "דפים המקשרים לדף \"$1\"", "whatlinkshere-page": "דף:", @@ -2606,7 +2641,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\" כיוון שאין לך הרשאה ליצור אותו.", @@ -3461,7 +3496,7 @@ "fileduplicatesearch-noresults": "לא נמצא קובץ בשם \"$1\".", "specialpages": "דפים מיוחדים", "specialpages-note-top": "מקרא", - "specialpages-note": "* דפים מיוחדים רגילים.\n* דפים מיוחדים מוגבלים.", + "specialpages-note-restricted": "* דפים מיוחדים רגילים.\n* דפים מיוחדים מוגבלים.", "specialpages-group-maintenance": "דיווחי תחזוקה", "specialpages-group-other": "דפים מיוחדים אחרים", "specialpages-group-login": "כניסה לחשבון / הרשמה", @@ -3580,6 +3615,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 965326beeb..c0950d6ed1 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,7 +1360,18 @@ "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-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|दिन}}", + "rcfilters-days-show-hours": "$1 {{PLURAL:$1|घंटा|घंटे}}", "rcfilters-quickfilters": "सुरक्षित फ़िल्टर", "rcfilters-quickfilters-placeholder-title": "कोई कड़ी अभी तक सहेजा नहीं गया", "rcfilters-quickfilters-placeholder-description": "अपने फ़िल्टर सेटिंग को सहेजने और बाद में उपयोग करने के लिए नीचे दिये बूकमार्क छवि पर क्लिक करें।", @@ -1367,44 +1381,43 @@ "rcfilters-savedqueries-unsetdefault": "मूल के रूप से हटाएँ", "rcfilters-savedqueries-remove": "निकालें", "rcfilters-savedqueries-new-name-label": "नाम", - "rcfilters-savedqueries-apply-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-filterlist-whatsthis": "यह कैसे कार्य करता है?", + "rcfilters-filterlist-feedbacklink": "हमें बताएं कि आप इन (नये) निस्पंदन औजारों के बारे में क्या सोचते हैं", "rcfilters-highlightbutton-title": "Highlight results", "rcfilters-highlightmenu-title": "रंग चुनें", "rcfilters-highlightmenu-help": "इस गुण को हाइलाइट करने के लिए एक रंग चुनें", "rcfilters-filterlist-noresults": "कोई फिल्टर नहीं पाया", "rcfilters-noresults-conflict": "कोई भी परिणाम नहीं मिला क्योंकि खोज मापदंड संघर्ष में है", "rcfilters-state-message-subset": "इस फिल्टर का कोई प्रभाव नहीं है क्योंकि इसका परिणाम निम्न, व्यापक {{PLURAL: $2 |फ़िल्टर|फिल्टर}} के साथ शामिल है (इसे भेद करने के लिए हाइलाइट करने की कोशिश करें): $1", - "rcfilters-state-message-fullcoverage": "किसी समूह में सभी फ़िल्टर चुनना कोई भी नहीं चुनने के समान है इसलिए इस फ़िल्टर का कोई प्रभाव नहीं है समूह में शामिल हैं: $1", - "rcfilters-filtergroup-registration": "उपयोगकर्ता पंजीकरण", - "rcfilters-filter-registered-label": "पंजीकृत:", - "rcfilters-filter-registered-description": "लॉग-इन संपादक।", - "rcfilters-filter-unregistered-label": "अपंजीकृत", - "rcfilters-filter-unregistered-description": "संपादक जो लॉग इन नहीं हैं।", - "rcfilters-filter-unregistered-conflicts-user-experience-level": "यह फ़िल्टर निम्न {{PLURAL:$2|फ़िल्टर}} के साथ संघर्ष करता है, जो केवल पंजीकृत सदस्यों को ही {{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-filtergroup-user-experience-level-conflicts-unregistered": "अनुभव फ़िल्टर केवल पंजीकृत उपयोगकर्ता पाते हैं इसलिए यह फ़िल्टर \"अपंजीकृत\" फ़िल्टर के साथ संघर्ष करता है।", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "\"अपंजीकृत\" फ़िल्टर एक या अधिक अनुभव फिल्टर के साथ संघर्ष करता है, जो केवल पंजीकृत उपयोगकर्ता ढूंढते हैं परस्पर विरोधी फिल्टर ऊपर सक्रिय फिल्टर क्षेत्र में चिह्नित हैं।", + "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": "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": "स्वचालित औजारों से किए सम्पादन।", @@ -1427,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": "विकि सामग्री, चर्चा, श्रेणी विवरणों के संपादन ....", @@ -1439,14 +1457,26 @@ "rcfilters-hideminor-conflicts-typeofchange-global": "\"लघु संपादन\" फ़िल्टर एक या एक से अधिक प्रकार के परिवर्तन फ़िल्टर के साथ संघर्ष करता है, क्योंकि कुछ प्रकार के परिवर्तन को \"लघु\" के रूप में निर्दिष्ट नहीं किया जा सकता है। परस्पर विरोधी फिल्टर ऊपर सक्रिय फिल्टर क्षेत्र में चिह्नित हैं।", "rcfilters-hideminor-conflicts-typeofchange": "कुछ प्रकार के परिवर्तन को \"लघु\" के रूप में निर्दिष्ट नहीं किया जा सकता है\", इसलिए यह फ़िल्टर निम्न प्रकार के परिवर्तन फिल्टर के साथ संघर्ष करता है: $1", "rcfilters-typeofchange-conflicts-hideminor": "इस प्रकार का परिवर्तन फ़िल्टर \"लघु संपादन\" फ़िल्टर के साथ संघर्ष करता है। कुछ प्रकार के परिवर्तन को \"लघु\" के रूप में निर्दिष्ट नहीं किया जा सकता है।", - "rcfilters-filtergroup-lastRevision": "सद्य अवतरण", - "rcfilters-filter-lastrevision-label": "अंतिम अवतरण", + "rcfilters-filtergroup-lastRevision": "नया अवतरण", + "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-view-tags": "चिप्पियाँ", + "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": "देखे गए के रूप में सभी परिवर्तनों को चिह्नित करें", + "rcfilters-watchlist-edit-watchlist-button": "देखे गए पन्नों की सूची को संपादित करें", + "rcfilters-watchlist-showupdated": "उन पन्नों में परिवर्तन जिनपर आप परिवर्तन के बाद से नहीं गए हैं, ठोस चिन्ह के साथ bold दिखाए गए हैं।", "rcnotefrom": "नीचे $2 के बाद से ($1 तक) {{PLURAL:$5|हुआ बदलाव दर्शाया गया है|हुए बदलाव दर्शाए गये हैं}}।", "rclistfromreset": "चुने दिनांक पहले जैसा करें", "rclistfrom": "$3 $2 से नये बदलाव दिखाएँ", @@ -1801,11 +1831,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\" में कोई पुनर्निर्देशन नहीं हैं।", @@ -1827,6 +1857,8 @@ "pageswithprop-legend": "पृष्ठ जिनमें पृष्ठ गुण हैं", "pageswithprop-text": "यह पृष्ठ पृष्ठ गुण का उपयोग कर रहे पन्नों को सूचीबद्ध करता है।", "pageswithprop-prop": "गुण का नाम:", + "pageswithprop-reverse": "उल्टे क्रम में क्रमबद्ध करें", + "pageswithprop-sortbyvalue": "संपत्ति मूल्य के आधार पर क्रमबद्ध करें", "pageswithprop-submit": "खोजें", "pageswithprop-prophidden-long": "लम्बे पाठ का मूल्य छुपा ($1) है", "pageswithprop-prophidden-binary": "बाइनरी मूल्य ($1) छुपा है।", @@ -1931,7 +1963,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 मुख्यपृष्ठ के सामग्री हेतु]", @@ -1959,6 +1991,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:", @@ -2154,7 +2187,7 @@ "enotif_subject_moved": "{{SITENAME}} पृष्ठ $1 को {{gender:$2|$2}} ने स्थानांतरित कर दिया है", "enotif_subject_restored": "{{SITENAME}} पृष्ठ $1 को {{gender:$2|$2}} ने पुनर्स्थापित कर दिया है", "enotif_subject_changed": "{{SITENAME}} पृष्ठ $1 को {{gender:$2|$2}} ने परिवर्तित किया है", - "enotif_body_intro_deleted": "{{SITENAME}} पृष्ठ $1 को {{gender:$2|$2}} ने $PAGEEDITDATE को हटा दिया है, देखें $3।", + "enotif_body_intro_deleted": "{{SITENAME}} पृष्ठ $1 को {{gender:$2|$2}} ने $PAGEEDITDATE को हटा दिया है, देखें <$3>।", "enotif_body_intro_created": "{{SITENAME}} पृष्ठ $1 को {{gender:$2|$2}} ने $PAGEEDITDATE को बनाया है, वर्तमान अवतरण के लिए $3 देखें।", "enotif_body_intro_moved": "{{SITENAME}} पृष्ठ $1 को {{gender:$2|$2}} ने $PAGEEDITDATE को स्थानांतरित किया है, वर्तमान अवतरण के लिए $3 देखें।", "enotif_body_intro_restored": "{{SITENAME}} पृष्ठ $1 को {{gender:$2|$2}} ने $PAGEEDITDATE को पुनर्स्थापित किया है, वर्तमान अवतरण के लिए $3 देखें।", @@ -2163,6 +2196,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\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": "पृष्ठ हटाएँ", @@ -2191,6 +2225,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|सम्पादन}} वापिस लें", @@ -2207,7 +2242,7 @@ "rollback-success-notify": "$1 द्वारा वापिस लौटे संपादन; $2 द्वारा पिछली संशोधन में वापस बदल दिया। [$3 बदलाव दिखाएं]", "sessionfailure-title": "सत्र विफलता", "sessionfailure": "ऐसा प्रतीत होता है कि आपके लॉगिन सत्र के साथ कोई समस्या है।\nसत्र अपहरण से बचाने के लिए सावधानी के तौर पर आपका यह क्रियाकलाप रद्द कर दिया गया है।\nकृपया पीछे जाएँ और पृष्ठ को पुनः लोड करें, तब दुबारा कोशिश करें।", - "changecontentmodel": "पेज कि सामगरिि मोदल को बदलिये", + "changecontentmodel": "पन्ने का सामग्री प्रारूप बदलें", "changecontentmodel-legend": "पृष्ठ सामग्री का नमूना", "changecontentmodel-title-label": "पृष्ठ शीर्षक", "changecontentmodel-model-label": "नयि सामग्री का नमूना", @@ -2309,6 +2344,7 @@ "undelete-search-title": "हटाये गये पृष्ठ खोजें", "undelete-search-box": "हटाये गये पृष्ठ खोजें", "undelete-search-prefix": "शुरूआती शब्द अनुसार पृष्ठ खोजें:", + "undelete-search-full": "शीर्षक युक्त प्रष्ठ दिखाएं", "undelete-search-submit": "खोजें", "undelete-no-results": "हटाए गए पृष्ठों के लेखागार में मेल खाते कोई पृष्ठ नहीं मिले।", "undelete-filename-mismatch": "$1 के फ़ाइल के हटाये गये अवतरण को पुनर्स्थापित नहीं किया जा सकता: फ़ाइल का नाम मेल नहीं खाता", @@ -2355,7 +2391,7 @@ "sp-contributions-newonly": "केवल वे सम्पादन दिखाएँ जिनसे पृष्ठ निर्मित हुए हों", "sp-contributions-hideminor": "छोटे सम्पादन छुपाएँ", "sp-contributions-submit": "खोजें", - "whatlinkshere": "यहाँ के हवाले कहाँ कहाँ हैं", + "whatlinkshere": "यहाँ क्या जुड़ता है", "whatlinkshere-title": "$1 से जुड़े हुए पृष्ठ", "whatlinkshere-page": "पृष्ठ:", "linkshere": "नीचे दिये हुए पृष्ठ '''[[:$1]]''' से जुडते हैं:", @@ -2643,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\" आयात नहीं किया गया है क्योंकि आपको उसे बनाने की अनुमति नहीं हैं।", @@ -3393,7 +3429,7 @@ "duplicate-displaytitle": "चेतावनी: शीर्षक दिखाएँ \"$2\" पूर्व दिखाए गए शीर्षक \"$1\" पर छा रहा है।", "restricted-displaytitle": "चेतावनी : प्रदर्शित शीर्षक \"$1\" को नजरअंदाज किया गया है, क्योंकि यह वास्तविक शीर्षक से मिलता नहीं है।", "invalid-indicator-name": "त्रुटि: पृष्ठ स्थिति सांकेतक नाम गुण खाली नहीं रहना चाहिए।", - "version": "रूपान्तर", + "version": "संस्करण", "version-extensions": "इन्स्टॉल की हुई एक्स्टेंशन", "version-skins": "इन्स्टॉल की गयी त्वचाएँ", "version-specialpages": "विशेष पृष्ठ", @@ -3459,7 +3495,7 @@ "fileduplicatesearch-noresults": "कोई फ़ाइल नाम \"$1\" मिला नहीं ।", "specialpages": "विशेष पृष्ठ", "specialpages-note-top": "कुंजी", - "specialpages-note": "* साधारण विशेष पृष्ठ।\n* प्रतिबंधित विशेष पृष्ठ।", + "specialpages-note-restricted": "* सामान्य विशेष पृष्ठ।\n* प्रतिबंधित विशेष पृष्ठ।", "specialpages-group-maintenance": "अनुरक्षण रिपोर्ट", "specialpages-group-other": "अन्य विशेष पृष्ठ", "specialpages-group-login": "सत्र आरम्भ / खाता खोलें", @@ -3578,6 +3614,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)", @@ -3780,7 +3823,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)", @@ -3985,6 +4028,7 @@ "undelete-cantedit": "आप इस पन्ने को वापस नहीं ला सकते, क्योंकि आपको इस पन्ने पर सम्पादन की अनुमति नहीं है।", "undelete-cantcreate": "आप इस पन्ने को वापस नहीं ला सकते, क्योंकि यह पन्ना इस नाम से है ही नहीं और आपको इस पन्ने के निर्माण की अनुमति भी नहीं है।", "pagedata-title": "पृष्ठ आँकड़े", + "pagedata-text": "यह पृष्ठ पृष्ठों के लिए एक डेटा इंटरफ़ेस प्रदान करता है। कृपया उपपृष्ठ सिंटैक्स का उपयोग करके यूआरएल में पेज शीर्षक प्रदान करें।\n* कन्टैंट वार्ता आपके क्लाइंट के एसेडर हेडर के आधार पर लागू होती है। इसका मतलब यह है कि पेज डेटा को आपके क्लाइंट द्वारा पसंदीदा प्रारूप में प्रदान किया जाएगा।", "pagedata-not-acceptable": "कोई अनुकूल प्रारूप नहीं मिला। सुमेलित ऍमआइऍमई प्रकार: $1", "pagedata-bad-title": "अमान्य शीर्षक: $1" } diff --git a/languages/i18n/hif-latn.json b/languages/i18n/hif-latn.json index 0466d5ff5f..b25c266380 100644 --- a/languages/i18n/hif-latn.json +++ b/languages/i18n/hif-latn.json @@ -164,13 +164,7 @@ "anontalk": "Baat", "navigation": "Navigation", "and": " aur", - "qbfind": "Khojo", - "qbbrowse": "Browse karo", - "qbedit": "Badlo", - "qbpageoptions": "Ii panna", - "qbmyoptions": "Hamar panna", "faq": "Sab time puchhe waala sawal", - "faqpage": "Project:Sab time puchhe waala sawal", "actions": "Karam", "namespaces": "Naam", "variants": "Antar", @@ -197,32 +191,22 @@ "edit-local": "Local description ke badlo", "create": "Banao", "create-local": "Local description ke jorro", - "editthispage": "Ii panna ke badlo", - "create-this-page": "Ii panna ke banao", "delete": "Mitao", - "deletethispage": "Ii panna ke mitao", - "undeletethispage": "Ii panna ke undelete karo", "undelete_short": "{{PLURAL:$1|ek badlao|$1 badlao}} ke pahile jaise karo", "viewdeleted_short": "Dekho {{PLURAL:$1|ek mitawal badlao|$1 mitawal badlao}}", "protect": "Bachao", "protect_change": "badlo", - "protectthispage": "Ii panna ke bacaho", "unprotect": "Nai bachao", - "unprotectthispage": "Ii panna ke surakchha ke badlo", "newpage": "Nawaa panna", - "talkpage": "Ii panna ke baare me salah karo", "talkpagelinktext": "Baat", "specialpage": "Khaas Panna", "personaltools": "Aapan aujaar", - "articlepage": "Content waala panna ke dekho", "talk": "Salah", "views": "Bichar", "toolbox": "Aujaar ke dabba", "tool-link-userrights": "Badlo {{GENDER:$1|sadasya}} groups", "tool-link-userrights-readonly": "Dekho {{GENDER:$1|sadasya}} groups", "tool-link-emailuser": "Email karo ii {{GENDER:$1|sadasya}}", - "userpage": "Sadasya ke panna dekho", - "projectpage": "Project waala panna dekho", "imagepage": "File panna ke dekho", "mediawikipage": "Sandes waala panna dekho", "templatepage": "Template waala panna dekho", @@ -233,7 +217,7 @@ "redirectedfrom": "($1 se bheja gais)", "redirectpagesub": "Panna ke redirect karo", "redirectto": "Hian redirect karo:", - "lastmodifiedat": "Ii panna ke $1, ke $2 pichhla time badla gais rahaa.", + "lastmodifiedat": "Ii panna ke $1, ke $2 baje, pichhla time badla gais rahaa.", "viewcount": "Ii panna ke {{PLURAL:$1|ek dafe|$1 dafe}} dekha gais hai.", "protectedpage": "Bachawal panna", "jumpto": "Hian jaao:", @@ -640,7 +624,7 @@ "missingcommenttext": "Meharbani kar ke niche aapan vichar deo.", "missingcommentheader": "Yaad karawa jaae hae: Aap ii vichar ke vishay nai likha hai.\nAgar aap \"$1\" pe click karaa tab bina vishay ke iske bachae dewa jaai.", "summary-preview": "Sanchhep jhalak:", - "subject-preview": "Suchi ke jhalak:", + "subject-preview": "Subject ke jhalak:", "previewerrortext": "Aap ke badlao ke preview kare ke time kuchh garrbarro hae gais hai.", "blockedtitle": "Sadasya ke rok dewa gais hai", "blockedtext": "'''Aapke user name nai to IP address ke rok dewa gae hai.'''\n\nRoke waala hai $1.\nIske kaaran hai ''$2''.\n\n* Roke ke suruu: $8\n* Roke kab khatam hoi: $6\n* Kiske rokaa jae hai: $7\n\nAap $1 ke mile saktaa hai nai to duusra [[{{MediaWiki:Grouppage-sysop}}|administrator]] se rukawat ke baare me baat karo.\nAap ii sadasya ke 'email this user' feature ke kaam me lae ke baat nai kare saktaa hai jab tak ki ek kanuni email address aapke [[Special:Preferences|account preferences]] me nai hai aur aap ke iske kaam me laae ke roka nai gae hai.\nAap ke abhi ke IP address $3 hai, aur roka gae ID hai #$5.\nMeharbani kar ke chahe ek nai to duno ke aapan sawaal me rakho.", @@ -700,7 +684,7 @@ "readonlywarning": "Chetauni: Database ke maintenance khatir band kar dewa gais hai, tab abhi aap aapan badlao ke save nai kare paega.\nAap saait aapan badlao ke ek text file me cut-n-paste kar ke baad me use kare khatir save kar le sakta hai.\nAdministrator jon ki iske lock karis hai ii kaaran diis hai: $1", "protectedpagewarning": "'''CHETAUNI: Ii panna ke band kar dewa gais hai jisse ke khaali uu sadasya jiske sysop adhikaar hai iske badle sake hai.'''\nNiche sab se nawaa suchi aap ke dekhe ke khatir dewa gais hae:", "semiprotectedpagewarning": "'''Suchna:''' Ii panna ke band kar dewa gais hai jisse ki khali registered sadasya iske badle sake hai.\nNiche sab se nawaa suchi ke aap ke dekhe ke khatir dewa gais hae:", - "cascadeprotectedwarning": "Chetawani: Ii panna ke band kar dewa gais jiske kaaran khaali uu sadasya jiske lage sysop privileges hai iske badle sake hai, kahe ki iske niche likha gais cascade-protected {{PLURAL:$1|panna}} me rakkha gais hai:", + "cascadeprotectedwarning": "Chetawani: Ii panna ke band kar dewa gais jiske kaaran khaali uu sadasya jike lage [[Special:ListGroupRights|specific rights]] ke adhikaar hai iske badle sake hai , kaaheki iske niche likha gais cascade-protected {{PLURAL:$1|panna}} me rakkha gais hai:", "titleprotectedwarning": "'''CHETAUNI: Ii panna ke band dewa gais hai jisse ki [[Special:ListGroupRights|specific rights]] ke jarie iske badla jaae sake hai.'''\nAap ke jaankari ke khatir sab se nawaa suchi niche dewa gais hae:", "templatesused": "{{PLURAL:$1|Template|Templates}} ke ii panna me kaam me lawa gais hae:", "templatesusedpreview": "{{PLURAL:$1|Template|Templates}} ii jhalak me kaam me lawa gais hae:", @@ -756,6 +740,8 @@ "post-expand-template-argument-warning": "Warning: Ii panna me kamti se kamti ek template argument hai jiske expansion size bahut barraa hai.\nIi sab arguments ke omit kar dewa gais hai.", "post-expand-template-argument-category": "Panna jisme omitted template arguments hai", "parser-template-loop-warning": "Template loop ke pawa gais hai: [[$1]]", + "template-loop-category": "Panna jisme template loop hai", + "template-loop-category-desc": "Ii panna me kachchaa loop hai, iske matlab ki, uu panna jon ki apne ke recursively call kare hai.", "parser-template-recursion-depth-warning": "Template recursion depth limit se jaada hoe gais hae ($1)", "language-converter-depth-warning": "Bhasa anuwaad ke gahiraai ijajat se jaada hoe gais hae ($1)", "node-count-exceeded-category": "Panna jahaan pe node-count bahut jaada hoe gais hae", @@ -790,8 +776,8 @@ "page_first": "pahila", "page_last": "aakhri", "histlegend": "Farak pasand: Antar dekhe khatir radio box me chinh lagao aur enter ke nai to niche ke button dabao.
    \nLegend: (abhi) = abhi ke version se farka,\n(pahile waala) = pahile waala version se farka, M = chhota sampadan.", - "history-fieldset-title": "Itihaas me khojo", - "history-show-deleted": "Khaali mitawa gais", + "history-fieldset-title": "Badfdlao ke khojo", + "history-show-deleted": "Khaali badlao ke mitaawa gais", "histfirst": "Sab se puraana", "histlast": "Sab se nawaa", "historysize": "({{PLURAL:$1|1 byte|$1 bytes}})", @@ -944,9 +930,10 @@ "search-file-match": "(file content ke match kare hae)", "search-suggest": "Ka aap ke matlab rahaa: $1", "search-rewritten": "$1 ke result dekhawa jaae hai. Iske jagah $2 ke khojo.", - "search-interwiki-caption": "Saathe ke project", + "search-interwiki-caption": "Saathe ke project se", "search-interwiki-default": "$1 ke result:", "search-interwiki-more": "(aur)", + "search-interwiki-more-results": "aur result", "search-relatedarticle": "sambandh rakkhe hai", "searchrelated": "sambhand rakkhe hai", "searchall": "sab", @@ -1075,18 +1062,18 @@ "prefs-help-prefershttps": "Aap ke agla login pe ii preferences effect me aai.", "prefswarning-warning": "Aap aapan preferences ke badla hae, jiske abhi talak save nai karaa gae hae.\nAgar aap ii panna ke bina \"$1\" me click kare chhorra, tab aap ke preferences save nai hoi.", "prefs-tabs-navigation-hint": "Tip: Aap left aur right arrow key use kar ke tab list me navigate kare saktaa hae.", - "userrights": "Sadasya ke adhikaar ke chalao", + "userrights": "Sadasya ke adhikaar", "userrights-lookup-user": "Ek sadasya ke chuno", "userrights-user-editname": "Ek Username ke enter karo:", "editusergroup": "User groups ke load karo", "editinguser": "{{GENDER:$1|Sadasya}} [[User:$1|$1]] ke adhikaar ke badlaa jaawe hae $2", "viewinguserrights": "{{GENDER:$1|Sadasya}} [[User:$1|$1]] ke adhikaar ke dekhaa jaawe hae $2", - "userrights-editusergroup": "User groupske badlo", - "userrights-viewusergroup": "User groups ke dekho", + "userrights-editusergroup": "Groups {{GENDER:$1|user}} ke badlo", + "userrights-viewusergroup": "Groups {{GENDER:$1|user}} ke dekho", "saveusergroups": "User groups, {{GENDER:$1|user}}, ke save karo", "userrights-groupsmember": "Iske member hai:", "userrights-groupsmember-auto": "Hian ke bhi member hae:", - "userrights-groups-help": "Aap jon group me ii sadasya hai ke badle sakta hai:\n* Ek checked box ke matlab hai ki sadasya ii group me hai.\n* Ek unchecked box ke matlab hai ki sadasya ii group me nai hai.\n* Ek * ke matlab hai ki aap group ke jorre ke baad hatae nai sakta hai, nai to hatae ke baad jorre nai sakta hai.", + "userrights-groups-help": "Aap jon group me ii sadasya hai ke badle saktaa hai:\n* Ek checked box ke matlab hai ki sadasya ii group me hai.\n* Ek unchecked box ke matlab hai ki sadasya ii group me nai hai.\n* Ek * ke matlab hai ki aap group ke jorre ke baad hatae nai sakta hai, nai to hatae ke baad jorre nai sakta hai.\n* Ek # ke matlab hai ki aap khaali ii group ke membership ke expiration time ke piichhe kare saktaa hai; aap iske aage nai kare saktaa hai", "userrights-reason": "Kaaran:", "userrights-no-interwiki": "Aap ke duusra wiki me user rights ke badle ke adhikaar nai hai.", "userrights-nodatabase": "Database $1 abhi hai nai, nai to local nai hai.", @@ -1100,6 +1087,7 @@ "userrights-expiry-options": "1 din:1 day,1 haptaa:1 week,1 mahina:1 month,3 mahina:3 months,6 mahina:6 months,1 saal:1 year", "userrights-invalid-expiry": "Group ke expiry time \"$1\" invalid hai.", "userrights-expiry-in-past": "Group ke expiry time \"$1\" biit gais hai.", + "userrights-cannot-shorten-expiry": "Aap group \"$1\" ke membership ke expiry ke aage nai kare saktaa hai.\nKhaali uu sadasya, jiske lage jorre aur hatae ke adhikaar hai, ii group ke expiry date ke aage kare sake hai.", "userrights-conflict": "User right me conflict hae! Meharbaani kar ke aapan badlao ke fir se review aur confirm karo.", "group": "Jhund:", "group-user": "Sadasya", @@ -1298,51 +1286,111 @@ "recentchanges-legend-heading": "Legend:", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (aur dekho [[Special:NewPages|nawaa panna ke suchi]])", "recentchanges-submit": "Dekhao", + "rcfilters-legend-heading": "Abbreviations ke suchi:", + "rcfilters-other-review-tools": "Duusra review kare waala tool:", "rcfilters-activefilters": "Active filters", + "rcfilters-advancedfilters": "Advanced filters", + "rcfilters-limit-title": "Jon badlao ke dekhae ke hai", + "rcfilters-limit-shownum": "Pichhlaa $1 badlao ke dekhao", + "rcfilters-days-title": "Kuchh pahile ke din", + "rcfilters-hours-title": "Kuch pahile ke ghantaa", + "rcfilters-days-show-days": "$1 {{PLURAL:$1|din}}", + "rcfilters-days-show-hours": "$1 {{PLURAL:$1|ghantaa}}", + "rcfilters-quickfilters": "Bachaawa gais filters", + "rcfilters-quickfilters-placeholder-title": "Koi link ke abhi bachaawa nai gais hai", + "rcfilters-quickfilters-placeholder-description": "Filter ke settings ke bachae ke baad me fir se use kare ke khatir, niche ke Active Filter area me, bookmark icon pe click karo.", + "rcfilters-savedqueries-defaultlabel": "Bachaawa gais filters", + "rcfilters-savedqueries-rename": "Naam badlo", + "rcfilters-savedqueries-setdefault": "Set as default", + "rcfilters-savedqueries-unsetdefault": "Remove as default", + "rcfilters-savedqueries-remove": "Hatao", + "rcfilters-savedqueries-new-name-label": "Naam", + "rcfilters-savedqueries-new-name-placeholder": "Filter ke kaaran batao", + "rcfilters-savedqueries-apply-label": "Filter banao", + "rcfilters-savedqueries-apply-and-setdefault-label": "Default filter banao", + "rcfilters-savedqueries-cancel-label": "Cancel karo", + "rcfilters-savedqueries-add-new-title": "Abhi ke filter settings ke bachao", "rcfilters-restore-default-filters": "Restore default filters", "rcfilters-clear-all-filters": "Sab filter ke clear karo", "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": "Ii kaise kaam kare hai?", + "rcfilters-filterlist-feedbacklink": "Nawaa (beta) filter pe feedback do", + "rcfilters-highlightbutton-title": "Results ke highlight karo", + "rcfilters-highlightmenu-title": "Rang ke chuno", + "rcfilters-highlightmenu-help": "Ii property ke highlight kare ke khaatir, rang chuno", "rcfilters-filterlist-noresults": "Koi filter nai milaa", - "rcfilters-filtergroup-registration": "User registration", - "rcfilters-filter-registered-label": "Register kar dewa gais:", - "rcfilters-filter-registered-description": "Logged-in editors.", - "rcfilters-filter-unregistered-label": "Unregistered", - "rcfilters-filter-unregistered-description": " Editors who aren’t logged in.", - "rcfilters-filtergroup-authorship": "Edit authorship", - "rcfilters-filter-editsbyself-label": "Aapan badlao", + "rcfilters-noresults-conflict": "Koi natija nai milaa, kaheki search criteria me conflict hai", + "rcfilters-state-message-subset": "Ii filter se koi chij nai hoe hai kaaheki iske result ii broader {{PLURAL:$2|filter|filters}} me hai. (iske distinguish kare ke khaatir iske highlight karo): $1", + "rcfilters-state-message-fullcoverage": "Ek group me sab filter ke select karna, ek filter ke select kare ke maafit hai. Group me hai: $1", + "rcfilters-filtergroup-authorship": "COntribution authorship", + "rcfilters-filter-editsbyself-label": "Aap ke badlao", "rcfilters-filter-editsbyself-description": "Aap ke karaa gais badlao.", "rcfilters-filter-editsbyother-label": "Duusra jan ke karaa gais badlao", "rcfilters-filter-editsbyother-description": "Badlao jiske duusraa jan karin hai (aap nai)", - "rcfilters-filtergroup-userExpLevel": "User experience level (registered sadasya ke khaatir)", + "rcfilters-filtergroup-userExpLevel": "Sadasya ke registration aur anbhao", + "rcfilters-filter-user-experience-level-registered-label": "Register kar dewa gais", + "rcfilters-filter-user-experience-level-registered-description": "Editors, jon abhi logged in hai.", + "rcfilters-filter-user-experience-level-unregistered-label": "Jon abhi registered nai hai", + "rcfilters-filter-user-experience-level-unregistered-description": " Editors jon abhi logged-in nai hai.", "rcfilters-filter-user-experience-level-newcomer-label": "Newcomers", - "rcfilters-filter-user-experience-level-newcomer-description": "10 se kamtii badlao aur 4 din se kamtii activity.", + "rcfilters-filter-user-experience-level-newcomer-description": "10 se kamtii badlao aur 4 din se kamtii activity waala registered editors.", "rcfilters-filter-user-experience-level-learner-label": "Sikhe waala", - "rcfilters-filter-user-experience-level-learner-description": "More days of activity and edits than 'Newcomers' but fewer than 'Experienced users.'", + "rcfilters-filter-user-experience-level-learner-description": "Uu registered sadasya jiske anbhao \"Newcomers\" aur \"Experienced users\" ke biich me hai.", "rcfilters-filter-user-experience-level-experienced-label": "Experienced users", - "rcfilters-filter-user-experience-level-experienced-description": "30 din se jaada activity aur 500 se jaada badlao", + "rcfilters-filter-user-experience-level-experienced-description": "Registered sadasya jiske activity 30 din se jaada aur 500 din se kamti hai", "rcfilters-filtergroup-automated": "Automated contributions", "rcfilters-filter-bots-label": "Bot", "rcfilters-filter-bots-description": "Edits made by automated tools.", "rcfilters-filter-humans-label": "Human (not bot)", "rcfilters-filter-humans-description": "Edit, jiske human editors karin hai.", + "rcfilters-filtergroup-reviewstatus": "Review status", + "rcfilters-filter-patrolled-label": "Paahra dewa gais hai", + "rcfilters-filter-patrolled-description": "Badlao jiske patrolled mark karaa gais hai.", + "rcfilters-filter-unpatrolled-label": "Patrol nai karaa gais hai", + "rcfilters-filter-unpatrolled-description": "Badlao jiske patrolled nai mark karaa gais hai.", "rcfilters-filtergroup-significance": "Significance", "rcfilters-filter-minor-label": "Chhotaa badlao", "rcfilters-filter-minor-description": "Edits the author labeled as minor.", "rcfilters-filter-major-label": "Non-minor edits", "rcfilters-filter-major-description": "Edits not labeled as minor.", + "rcfilters-filtergroup-watchlist": "Panna jiske watchlist me rakkhaa gais hai", + "rcfilters-filter-watchlist-watched-label": "Dhyan suchi me", + "rcfilters-filter-watchlist-watched-description": "Aap ke dhyan suchi me panna ke badlao.", + "rcfilters-filter-watchlist-watchednew-label": "Nawaa Watchlist badlao", + "rcfilters-filter-watchlist-watchednew-description": "Watchlist panna ke badlao jiske aap badlao ke baad nai dekha hai.", + "rcfilters-filter-watchlist-notwatched-label": "Watchlist me nai hai", + "rcfilters-filter-watchlist-notwatched-description": "Aap ke Watchlist me badlao ke siwaa aur sab kuchh.", "rcfilters-filtergroup-changetype": "Type of change", "rcfilters-filter-pageedits-label": "Panna ke badlao", - "rcfilters-filter-pageedits-description": "Edits to wiki content, discussions, category descriptions....", + "rcfilters-filter-pageedits-description": "Badlao wiki content, discussions, category descriptions....", "rcfilters-filter-newpages-label": "Page creations", "rcfilters-filter-newpages-description": "Edits that make new pages.", "rcfilters-filter-categorization-label": "Category changes", "rcfilters-filter-categorization-description": "Records of pages being added or removed from categories.", "rcfilters-filter-logactions-label": "Logged actions", "rcfilters-filter-logactions-description": "Administrative actions, account creations, page deletions, uploads....", + "rcfilters-hideminor-conflicts-typeofchange-global": "The \"Minor edits\" filter conflicts with one or more Type of change filters, because certain types of change cannot be designated as \"minor\". The conflicting filters are marked in the Active filters area, above.", + "rcfilters-hideminor-conflicts-typeofchange": "Certain types of change cannot be designated as \"minor\", so this filter conflicts with the following Type of Change filters: $1", + "rcfilters-typeofchange-conflicts-hideminor": "This Type of change filter conflicts with the \"Minor edits\" filter. Certain types of change cannot be designated as \"minor\".", + "rcfilters-filtergroup-lastRevision": "Abhi ke badlao", + "rcfilters-filter-lastrevision-label": "Abhi ke badlao", + "rcfilters-filter-lastrevision-description": "Panna ke khaali sab se recent badlao.", + "rcfilters-filter-previousrevision-label": "Sab se latest revision nai hai", + "rcfilters-filter-previousrevision-description": "Uu sab badlao jon ki \"latest revision\" me nai hai.", + "rcfilters-filter-excluded": "Exclude kar dewa gais hai", + "rcfilters-tag-prefix-namespace-inverted": ":nai $1", + "rcfilters-exclude-button-off": "Select karaa gais, ke exclude karo", + "rcfilters-exclude-button-on": "Aap ke translation", + "rcfilters-view-tags": "Tagged edits", + "rcfilters-view-namespaces-tooltip": "Results ke namespace se filter karo", + "rcfilters-view-tags-tooltip": "Results ke, edit tags ke kaam me laae ke, filter karo", + "rcfilters-view-return-to-default-tooltip": "Main filter menu pe lauto", + "rcfilters-liveupdates-button": "Live updates", "rcnotefrom": "Niche {{PLURAL:$5|badlao hae|badlao hae}} $3, $4 ($1 talak dekhawa gais) talak.", + "rclistfromreset": "Taarik ke selection ke reset karo", "rclistfrom": "$3 $2 se suruu kar ke nawaa badlao dekhao", "rcshowhideminor": "$1 chhota badlao", "rcshowhideminor-show": "Dekhao", @@ -1463,6 +1511,7 @@ "php-uploaddisabledtext": "File uploads ke PHP me disable kar dewa gais hai. Meharbani kar ke file_uploads setting ke check karo.", "uploadscripted": "Ii file me HTML nai to script code hai jiske web browser erroneously interpret kare sake hai.", "upload-scripted-pi-callback": "File jisme XML-stylesheet processing instruction hai ke upload nai karaa jaae sake hai.", + "upload-scripted-dtd": "SVG files, jisme non-standard DTD declaration hai, ke upload nai kare saktaa hai.", "uploaded-script-svg": "Found scriptable element \"$1\" in the uploaded SVG file.", "uploaded-hostile-svg": "Found unsafe CSS in the style element of uploaded SVG file.", "uploaded-event-handler-on-svg": "Setting event-handler attributes $1=\"$2\" is not allowed in SVG files.", @@ -1718,6 +1767,8 @@ "pageswithprop-legend": "Panna, aapan poperty ke saathe", "pageswithprop-text": "Ii panaa, uu panna ke list kare hae jon ki koi khaas panna ke property ke use kare hae.", "pageswithprop-prop": "Property ke naam:", + "pageswithprop-reverse": "Reverse order me sort karo", + "pageswithprop-sortbyvalue": "Property value se sort karo", "pageswithprop-submit": "Jaao", "pageswithprop-prophidden-long": "lamba text property value hidden ($1)", "pageswithprop-prophidden-binary": "binary property ke lukawal value ($1)", @@ -2053,6 +2104,7 @@ "enotif_lastdiff": "Ii badlao ke dekhe ke khatir $1 ke dekho.", "enotif_anon_editor": "bina naam ke sadasya $1", "enotif_body": "Priye $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nEditor's summary: $PAGESUMMARY $PAGEMINOREDIT\n\nContact the editor:\nmail: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\n\n\nAur koi notifications nai rahii, kahe ki koi aur badlao hoe sake hai, jab talak aap ii panna ke visit nai karta hai.\nAap aapan dhyan suchi me sab dhyan me rakha gais panna pe notification flags ke reset kare sakta hai.\n\nAap ke dayalu {{SITENAME}} notification system\n\n--\nAapan Email notofication setting ke badle ke khatir, jaao\n{{canonicalurl:{{#special:Preferences}}}}\n\nAapan dhyan ke settings ke badle ke khatir, jaao\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\n\nAapan dhyan suchi se panna ke mitae ke khatir, jaao\n$UNWATCHURL\n\n\nAapan bichar de ke khatir aur aage ke sahaeta:\n$HELPPAGE", + "enotif_minoredit": "Ii ek minor edit hai", "created": "banae dewa gais hai", "changed": "badal dewa gais hai", "deletepage": "Pana ke delete karo", @@ -2081,6 +2133,7 @@ "delete-warning-toobig": "Ii panna ke lambaa badlao ke itihaas hai, $1 {{PLURAL:$1|revision|revisions}} se jaada.\nIske mitae se {{SITENAME}} me database operations me baadha parri;\nsawadhani se aage barrho.", "deleteprotected": "Aap ii panna ke mitae nai saktaa hae kaaheki iske protect karaa gais hae.", "deleting-backlinks-warning": "Chetauni:
    [[Special:WhatLinksHere/{{FULLPAGENAME}}|Duusra panna]] uu panna se link, nai to transclude kare hai jiske aap delete kare waala hae.", + "deleting-subpages-warning": "Chetauni: Jon panna ke aap mitae waala hai me [[Special:PrefixIndex/{{FULLPAGENAME}}/|{{PLURAL:$1|a subpage|$1 subpages|51=over 50 subpages}}]] hai.", "rollback": "Pahile jaise kare waala badlao", "rollbacklink": "pahile jaise karo", "rollbacklinkcount": "$1 {{PLURAL:$1|edit|edits}} ke rollback karo", @@ -2093,7 +2146,7 @@ "editcomment": "Badlao ke summary rahaa: $1.", "revertpage": "[[Special:Contributions/$2|$2]] ([[User talk:$2|Talk]]) ke badlao ke [[User:$1|$1]] ke aakhri badlao ke jaise kar dewa gais hai.", "revertpage-nouser": "Reverted edits by a hidden user to last revision by {{GENDER:$1|[[User:$1|$1]]}}", - "rollback-success": "$1 ke badlao ke pahile jaise kar dewa gais hai;\nbadal ke $2 ke aakhri version kar dewa gais hai.", + "rollback-success": "Reverted edits by {{GENDER:$3|$1}};\nchanged back to last revision by {{GENDER:$4|$2}}.", "rollback-success-notify": "$1 ke badlao ke pahile jaise kar dewa gais hai;\nbadlao ke $2 ke aakhri version kar dewa gais hai.[$3 Show changes]", "sessionfailure-title": "Session fail hoe gais hae", "sessionfailure": "Aap ke login session me kuch karrbarr hai.\niske cancel kar dewa gais hai jisse ki koi iisession ke hijack nai kar.\nMeharbani kar ke \"back\" ke press kar ke jon pana se aap aae rahaa ke fir se load karo, tab fir kosis karo.", @@ -2199,6 +2252,7 @@ "undelete-search-title": "Mitawa gais panna ke khojo", "undelete-search-box": "Mitawa gais panna ke khojo", "undelete-search-prefix": "Uu panna ke dekhao jon ki isse suruu hoe hai:", + "undelete-search-full": "Uu panna dekhao jisme hai:", "undelete-search-submit": "Khojo", "undelete-no-results": "Mitawa gais panna ke archive me ii rakam ke koi panna ke nai pawa gais hai.", "undelete-filename-mismatch": "File revision jiske timestamp $1 hai ke pahile jaise nai karaa jaawe sake hai: filename mismatch", @@ -2236,7 +2290,7 @@ "sp-contributions-uploads": "upload karaa gais file", "sp-contributions-logs": "logs", "sp-contributions-talk": "baat", - "sp-contributions-userrights": "sadasya ke adhikaar ke manage karo", + "sp-contributions-userrights": "{{GENDER:$1|sadasya}} rights management", "sp-contributions-blocked-notice": "Ii sadasya ke hian pe ijajat nai hae.\nPahile waala block log entry ke reference ke khatir niche dekhawa jaawe hae:", "sp-contributions-blocked-notice-anon": "Ii IP address abhi rok dewa gais hae.\nSab se nawaa roke ke suchi ke, aap ke khatir, niche dewa gais hae.", "sp-contributions-search": "Yogdaan ke khojo", @@ -2305,6 +2359,13 @@ "unblocked-id": "Roko $1 ke khalaas kar dewa gais hai", "unblocked-ip": "[[Special:Contributions/$1|$1]] ke unblock kar dewa gais hae.", "blocklist": "Roka gais sadasya", + "autoblocklist": "Autoblocks", + "autoblocklist-submit": "Khojo", + "autoblocklist-legend": "Autoblocks ke list karo", + "autoblocklist-localblocks": "Local {{PLURAL:$1|autoblock|autoblocks}}", + "autoblocklist-total-autoblocks": "Total number of autoblocks: $1", + "autoblocklist-empty": "Autoblock ke suchi khaali hai.", + "autoblocklist-otherblocks": "Other {{PLURAL:$1|autoblock|autoblocks}}", "ipblocklist": "Roka gais sadasya", "ipblocklist-legend": "Ek roka gais sadasya ke khojo", "blocklist-userblocks": "Roka gais account ke lukao", @@ -2554,6 +2615,7 @@ "tooltip-pt-mycontris": "{{GENDER:|Aap ke}} yogdaan ke suchi", "tooltip-pt-anoncontribs": "Ii IP address se badlao karaa gais chij ke suchi", "tooltip-pt-login": "Aap log in kartaa tab achchha rahataa; lekin jaruri nai hae.", + "tooltip-pt-login-private": "Ii wiki ke use kare ke khaatir aap ke log in hoe ke parrii", "tooltip-pt-logout": "Log out", "tooltip-pt-createaccount": "Aap ke ek account banae ke log in kare ke encourage karaa jaae hae; lekin iske jaruri nai hae", "tooltip-ca-talk": "Content waala panna ke baare me salah", @@ -2738,8 +2800,11 @@ "newimages-summary": "Ii khaas panna pahile waala upload karaa gais file ke dekhae hai.", "newimages-legend": "Chaalo", "newimages-label": "Filename (nai to iske ek hissa):", + "newimages-user": "IP Address, nai to username", + "newimages-newbies": "Khaali nawaa account ke yogdaan dekhao", "newimages-showbots": "Bots se upload dekhawa jaae hae", "newimages-hidepatrolled": "Patrolled uploads ke lukao", + "newimages-mediatype": "Media type:", "noimages": "Koi chij dekhe ke nai hai.", "gallery-slideshow-toggle": "Toggle thumbnails", "ilsubmit": "Khojo", @@ -3142,6 +3207,7 @@ "confirmrecreate": "Sadasya [[User:$1|$1]] ([[User talk:$1|talk]]) {{GENDER:$1|mitais}} ii panna after you started editing with reason:\n: $2\nMeharbaani kar ke ii confirm karo ki aap asliyat me ii panna ke fir se banae mangtaa hai.", "confirmrecreate-noreason": "User [[User:$1|$1]] ([[User talk:$1|talk]]){{GENDER:$1|deleted}} this page after you started editing. Please confirm that you really want to recreate this page.", "recreate": "Fir se banao", + "confirm-purge-title": "Purge this page", "confirm_purge_button": "Thik hae", "confirm-purge-top": "Ii panna ke cache ke mitao", "confirm-purge-bottom": "Ek panna ke purge kare se cache khaali hoe jaae hae aur sab se naaa balao ke dekhae hae.", @@ -3272,7 +3338,7 @@ "fileduplicatesearch-noresults": "Koi file jiske naam \"$1\" ke nai paawa gais hae.", "specialpages": "Khaas panna", "specialpages-note-top": "Legend", - "specialpages-note": "* Normal special panna.\n* Restricted special panna.", + "specialpages-note-restricted": "* Normal khaas panna.\n* Restricted khaas panna.", "specialpages-group-maintenance": "Maintenance reports", "specialpages-group-other": "Duusra khaas panna", "specialpages-group-login": "Login karo/Nawaa account banao", @@ -3322,7 +3388,7 @@ "tags-create-reason": "Kaaran:", "tags-create-submit": "Banao", "tags-create-no-name": "Aap ke ek tag ke naam ke batae ke parri.", - "tags-create-invalid-chars": "Tag ke naam me saait comma (,) nai to forward slashes (/) hoi.", + "tags-create-invalid-chars": "Tag ke naam me saait comma (,), pipes (|) nai to forward slashes (/) hoi.", "tags-create-invalid-title-chars": "Tag ke naam me aisan characters nai hoe ke chaahi jiske panna ke title me nai kaam me lawa jaae sake hae.", "tags-create-already-exists": "Tag \"$1\" abhi hae.", "tags-create-warnings-above": "Niche ke {{PLURAL:$2|chetauni|chetauni}} you time mila jab tag \"$1\" ke banae ke kosis karaa jaawat rahaa:", @@ -3433,7 +3499,10 @@ "htmlform-user-not-valid": "$1 valid username nai hai.", "logentry-delete-delete": "$1 {{GENDER:$2|deleted}} panna $3", "logentry-delete-delete_redir": "$1 {{GENDER:$2|deleted}} redirect $3 by overwriting", - "logentry-delete-restore": "$1 {{GENDER:$2|restored}} panna $3", + "logentry-delete-restore": "$1 {{GENDER:$2|restored}} panna $3 ($4)", + "logentry-delete-restore-nocount": "$1 {{GENDER:$2|restored}} panna $3", + "restore-count-revisions": "{{PLURAL:$1|1 badlao|$1 badlao}}", + "restore-count-files": "{{PLURAL:$1|1 file|$1 files}}", "logentry-delete-event": "$1 {{GENDER:$2|changed}} visibility of {{PLURAL:$5|a log event|$5 log events}} on $3: $4", "logentry-delete-revision": "$1 {{GENDER:$2|changed}} visibility of {{PLURAL:$5|a revision|$5 revisions}} panna $3: $4 pe", "logentry-delete-event-legacy": "$1 {{GENDER:$2|badal dewa gais hae}} visibility of log events on $3", @@ -3640,6 +3709,7 @@ "special-characters-group-thai": "Thai", "special-characters-group-lao": "Lao", "special-characters-group-khmer": "Khmer", + "special-characters-group-canadianaboriginal": "Canadian Aboriginal", "special-characters-title-endash": "en dash", "special-characters-title-emdash": "em dash", "special-characters-title-minus": "minus sign", @@ -3649,6 +3719,9 @@ "mw-widgets-titleinput-description-new-page": "ii panna abhi nai hai", "mw-widgets-titleinput-description-redirect": "$1 pe redirect karo", "mw-widgets-categoryselector-add-category-placeholder": "Category me jorro...", + "mw-widgets-usersmultiselect-placeholder": "Aur jorro ...", + "date-range-from": "Ii taarik se:", + "date-range-to": "Ii taarik talak:", "sessionmanager-tie": "Cannot combine multiple request authentication types: $1.", "sessionprovider-generic": "$1 sessions", "sessionprovider-mediawiki-session-cookiesessionprovider": "cookie-based sessions", @@ -3782,5 +3855,15 @@ "restrictionsfield-label": "Allowed IP ranges:", "restrictionsfield-help": "One IP address or CIDR range per line. To enable everything, use:
    0.0.0.0/0\n::/0
    ", "revid": "badlao $1", - "pageid": "panna ID $1" + "pageid": "panna ID $1", + "rawhtml-notallowed": "<html> tags ke normal panna ke bahaar nai kaam me laawa jaae sake hai.", + "gotointerwiki": "Leaving {{SITENAME}}", + "gotointerwiki-invalid": "Specified title valid nai hai.", + "gotointerwiki-external": "Aap {{SITENAME}} ke chhorr ke [[$2]] pe jaae waala hai, jon ki duusra website hai.\n\n'''[$1 Continue to $1]'''", + "undelete-cantedit": "Aap ii panna ke undelete nai kare saktaa hai, kaaheki aap ke ii panna ke badle ke adhikaar nai hai.", + "undelete-cantcreate": "Aap ii panna ke undelete nai kare saktaa hai, kaaheki aap ke ii naam ke koi panna nai hai aur aap ke ii panna ke banae ke adhikaar nai hai.", + "pagedata-title": "Panna ke data", + "pagedata-text": "Ii panna aur panna ke data interface provide kare hai. Meharbaani kar ke, URL me panna ke title, subpage syntax ke kaam me laae ke, likho\n* Content negotiation applies based on you client's Accept header. This means that the page data will be provided in the format preferred by your client.", + "pagedata-not-acceptable": "No matching format found. Supported MIME types: $1", + "pagedata-bad-title": "Invalid title: $1." } diff --git a/languages/i18n/hr.json b/languages/i18n/hr.json index 3fb2671c9e..8f8d905fec 100644 --- a/languages/i18n/hr.json +++ b/languages/i18n/hr.json @@ -35,7 +35,8 @@ "Matma Rex", "Vrhnje", "Ivi104", - "Сербијана" + "Сербијана", + "Wumbolo" ] }, "tog-underline": "Podcrtavanje poveznica", @@ -65,13 +66,14 @@ "tog-shownumberswatching": "Prikaži broj suradnika koji prate stranicu (u nedavnim izmjenama, popisu praćenja i samim člancima)", "tog-oldsig": "Vaš postojeći potpis:", "tog-fancysig": "Običan potpis kao wikitekst (bez automatske poveznice)", - "tog-uselivepreview": "Uključi trenutačni pretpregled", + "tog-uselivepreview": "Prikaži trenutačni pretpregled bez ponovnoga učitavanja stranice", "tog-forceeditsummary": "Podsjeti me ako sažetak uređivanja ostavljam praznim", "tog-watchlisthideown": "Sakrij moja uređivanja s popisa praćenja", "tog-watchlisthidebots": "Sakrij uređivanja botova s popisa praćenja", "tog-watchlisthideminor": "Sakrij manje promjene s popisa praćenja", "tog-watchlisthideliu": "Sakrij uređivanja prijavljenih s popisa praćenja", "tog-watchlistreloadautomatically": "Ponovo učitaj popis praćenja kad god dođe do promjene filtra (potreban JavaScript)", + "tog-watchlistunwatchlinks": "Dodaj poveznice za izravno dodavanje/uklanjanje stranica s popisa praćenja (za funkcionalnost mogućnosti potreban je JavaScript)", "tog-watchlisthideanons": "Sakrij uređivanja neprijavljenih s popisa praćenja", "tog-watchlisthidepatrolled": "Sakrij pregledane izmjene u popisu praćenja", "tog-watchlisthidecategorization": "Sakrij kategorizaciju stranica", @@ -113,7 +115,7 @@ "august": "kolovoza", "september": "rujna", "october": "listopada", - "november": "studenog", + "november": "studenoga", "december": "prosinca", "january-gen": "siječnja", "february-gen": "veljače", @@ -356,7 +358,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.", @@ -406,7 +408,7 @@ "createacct-yourpassword-ph": "Unesite zaporku", "yourpasswordagain": "Ponovno upišite zaporku", "createacct-yourpasswordagain": "Potvrdi zaporku", - "createacct-yourpasswordagain-ph": "Unesite zaporku ponovno", + "createacct-yourpasswordagain-ph": "Unesite zaporku ponovo", "userlogin-remembermypassword": "Zapamti me", "userlogin-signwithsecure": "Rabi sigurnu vezu", "cannotlogin-title": "Prijava nije moguća", @@ -414,6 +416,7 @@ "cannotloginnow-title": "Prijava trenutno nije moguća.", "cannotloginnow-text": "Prijava nije moguća tijekom uporabe $1.", "cannotcreateaccount-title": "Nije moguće stvoriti račune", + "cannotcreateaccount-text": "Direktno stvaranje računa nije omogućeno na ovome wikiju.", "yourdomainname": "Vaša domena", "password-change-forbidden": "Ne možete promjeniti zaporku na ovom projektu.", "externaldberror": "Došlo je do pogreške s vanjskom autorizacijom ili Vam nije dopušteno osvježavanje vanjskog suradničkog računa.", @@ -425,20 +428,22 @@ "notloggedin": "Niste prijavljeni", "userlogin-noaccount": "Nemate suradnički račun?", "userlogin-joinproject": "Pridružite se {{SITENAME}}", - "createaccount": "Otvori novi suradnički račun", + "createaccount": "Stvori račun", "userlogin-resetpassword-link": "Zaboravili ste zaporku?", "userlogin-helplink2": "Pomoć pri prijavi", "userlogin-loggedin": "Već ste prijavljeni kao {{GENDER:$1|$1}}.\nRabite donji obrazac da biste se prijavili kao drugi suradnik.", - "userlogin-reauth": "Morate se ponovno prijaviti da biste potvrdili da ste Vi {{GENDER:$1|$1}}.", + "userlogin-reauth": "Morate se ponovo prijaviti da biste potvrdili da ste Vi {{GENDER:$1|$1}}.", "userlogin-createanother": "Stvori još jedan račun", "createacct-emailrequired": "Adresa e-pošte", "createacct-emailoptional": "Adresa e-pošte", "createacct-email-ph": "Upišite svoju adresu e-pošte", "createacct-another-email-ph": "Upišite adresu e-pošte", "createaccountmail": "Uporabite nasumice odabranu privremenu zaporku i pošaljite ju na navedenu adresu e-pošte", + "createaccountmail-help": "Može se rabiti da se nekome stvori račun bez da se sazna zaporka.", "createacct-realname": "Stvarno ime (neobvezatno)", "createacct-reason": "Razlog", - "createacct-reason-ph": "Zašto stvarate drugi račun", + "createacct-reason-ph": "Zašto stvarate još jedan račun?", + "createacct-reason-help": "Poruka koja se prikazuje u evidenciji stvaranja suradničkih računa", "createacct-submit": "Stvorite svoj suradnički račun", "createacct-another-submit": "Otvori račun", "createacct-continue-submit": "Pritisni za stvaranje računa", @@ -446,8 +451,9 @@ "createacct-benefit-heading": "{{SITENAME}} su stvorili ljudi poput Vas.", "createacct-benefit-body1": "{{PLURAL:$1|uređivanje|uređivanja}}", "createacct-benefit-body2": "{{PLURAL:$1|stranica|stranice|stranica}}", - "createacct-benefit-body3": "{{PLURAL:$1|nedavni suradnik|nedavnih suradnika}}", + "createacct-benefit-body3": "{{PLURAL:$1|nedavni suradnik|nedavna suradnika|nedavnih suradnika}}", "badretype": "Unesene zaporke nisu istovjetne.", + "usernameinprogress": "Stvaranje računa za ovo suradničko ime upravo je u tijeku.\nMolimo, pričekajte.", "userexists": "Uneseno suradničko ime već je u upotrebi.\nUnesite neko drugo ime.", "loginerror": "Pogrješka u prijavi", "createacct-error": "Pogrješka u stvaranju računa", @@ -575,9 +581,11 @@ "changeemail-nochange": "Molimo vas, upišite neku novu adresu e-pošte.", "resettokens": "Ponovo postavljanje tajnoga ključa", "resettokens-text": "Možete ponovo postaviti tajni ključ koji Vam dopušta pristupanje određenim osobnim podatcima povezanim s Vašim ovdje navedenim suradničkim računom.\n\nTrebali bi to načiniti ukoliko ga kojim slučajem priopćite nekome ili ukoliko je Vaš suradnički račun ugrožen.", + "resettokens-no-tokens": "Nema tajnih ključeva za ponovno postavljanje", "resettokens-tokens": "Tajni ključevi:", "resettokens-token-label": "$1 (trenutačna postavka: $2)", "resettokens-watchlist-token": "Tajni ključ za uvoženje u mrežno sjedište (Atom/RSS) [[Special:Watchlist|promjena na stranicama s Vašega popisa praćenih stranica]]", + "resettokens-done": "Ponovno postavljanje tajnih ključeva", "resettokens-resetbutton": "Ponovo postavi odabrane tajne ključeve", "bold_sample": "Podebljani tekst", "bold_tip": "Podebljani tekst", @@ -665,7 +673,6 @@ "explainconflict": "Netko je u međuvremenu promijenio stranicu.\nGornje polje sadrži sadašnji tekst stranice.\nU donjem polju prikazane su Vaše promjene.\nMorat ćete unijeti Vaše promjene u sadašnji tekst.\n'''Samo''' će tekst u gornjem polju biti sačuvan kad pritisnete \"$1\".", "yourtext": "Vaš tekst", "storedversion": "Pohranjena inačica", - "nonunicodebrowser": "'''UPOZORENJE: Vaš preglednik ne podržava Unicode zapis znakova, molimo promijenite ga prije sljedećeg uređivanja članaka.'''", "editingold": "'''UPOZORENJE: Uređujete stariju inačicu\nove stranice. Ako je sačuvate, sve će promjene učinjene nakon ove inačice biti izgubljene.'''", "yourdiff": "Razlike", "copyrightwarning": "Molimo uočite da se svi doprinosi {{SITENAME}} smatraju objavljenima pod uvjetima $2 (vidi $1 za detalje). Ako ne želite da se Vaše pisanje nemilosrdno uređuje i slobodno raspačava, nemojte ga ovamo slati.
    \nTakođer nam obećavate da ste ovo sami napisali, ili da ste to prepisali iz nečeg što je u javnom vlasništvu ili pod sličnom slobodnom licencijom.\n'''NE POSTAVLJAJTE RADOVE ZAŠTIĆENE AUTORSKIM PRAVIMA BEZ DOPUŠTENJA!'''", @@ -676,7 +683,7 @@ "protectedpagewarning": "'''UPOZORENJE: Ova stranica je zaključana i mogu je uređivati samo suradnici s administratorskim pravima.'''\nPosljednja stavka u evidenciji navedena je niže kao napomena:", "semiprotectedpagewarning": "'''Napomena:''' Ova stranica je zaključana tako da je mogu uređivati samo prijavljeni suradnici.\nPosljednja stavka u evidenciji navedena je niže kao napomena:", "cascadeprotectedwarning": "'''UPOZORENJE:''' Ova stranica je zaključana i mogu je uređivati samo suradnici s administratorskim pravima, jer je uključena u {{PLURAL:$1|slijedeću stranicu|slijedeće stranice}} koje su zaštićene \"prenosivom\" zaštitom:", - "titleprotectedwarning": "'''UPOZORENJE: Ova stranica je zaključana i samo je suradnici s [[Special:ListGroupRights|dodatnim pravima]] mogu stvoriti.'''\nPosljednja stavka u evidenciji navedena je niže kao napomena:", + "titleprotectedwarning": "Upozorenje: Ova je stranica zaključana i samo ju suradnici s [[Special:ListGroupRights|određenim pravima]] mogu stvoriti.\nPosljednja stavka u evidenciji navedena je niže kao napomena:", "templatesused": "{{PLURAL:$1|Predložak koji se rabi|Predlošci koji se rabe}} na ovoj stranici:", "templatesusedpreview": "{{PLURAL:$1|Predložak koji se rabi|Predlošci koji se rabe}} u ovom predpregledu:", "templatesusedsection": "{{PLURAL:$1|Predložak koji se rabi|Predlošci koji se rabe}} u ovom odjeljku:", @@ -860,7 +867,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", @@ -904,6 +911,7 @@ "search-interwiki-caption": "Rezultati sa sestrinskih projekata", "search-interwiki-default": "Rezultati s projekta $1:", "search-interwiki-more": "(više)", + "search-interwiki-more-results": "više rezultata", "search-relatedarticle": "Povezano", "searchrelated": "povezano", "searchall": "sve", @@ -946,7 +954,7 @@ "prefs-misc": "Razno", "prefs-resetpass": "promijeni zaporku", "prefs-changeemail": "promijeni ili ukloni adresu e-pošte", - "prefs-setemail": "Postavite E-mail adresu", + "prefs-setemail": "Postavite adresu e-pošte", "prefs-email": "Mogućnosti e-maila", "prefs-rendering": "Izgled", "saveprefs": "Spremi", @@ -954,6 +962,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}})", @@ -995,8 +1004,8 @@ "prefs-registration": "Vrijeme prijave:", "yourrealname": "Pravo ime (nije obvezno)*", "yourlanguage": "Jezik:", - "yourvariant": "Inačica jezika:", - "prefs-help-variant": "Željena varijanta ili pravopis za prikaz stranica ovog wikija.", + "yourvariant": "Jezična inačica sadržaja:", + "prefs-help-variant": "Vaša preferirana inačica ili pravopis za prikaz sadržaja stranica na ovom wikiju.", "yournick": "Vaš nadimak (za potpisivanje)", "prefs-help-signature": "Komentari na stranicama za razgovor trebali bi biti potpisani s \"~~~~\" što će biti pretvoreno u Vaš potpis i datum.", "badsig": "Kôd Vašeg potpisa nije valjan; provjerite HTML tagove.", @@ -1053,6 +1062,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", @@ -1079,6 +1091,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", @@ -1142,6 +1155,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", @@ -1217,6 +1231,8 @@ "recentchanges-legend-newpage": "Nova stranica", "recentchanges-legend-plusminus": "(±123)", "recentchanges-submit": "Prikaži", + "rcfilters-legend-heading": "Popis kratica:", + "rcfilters-other-review-tools": "Ostali alati za pregledavanje:", "rcfilters-activefilters": "Aktivni filtri", "rcfilters-advancedfilters": "Napredni filtri", "rcfilters-quickfilters": "Spremljeni filtri", @@ -1228,7 +1244,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", @@ -1237,7 +1253,7 @@ "rcfilters-invalid-filter": "Filter nije valjan", "rcfilters-empty-filter": "Nema aktivnih filtera. Prikazani su svi doprinosi.", "rcfilters-filterlist-title": "Filtri", - "rcfilters-filterlist-whatsthis": "Što je ovo?", + "rcfilters-filterlist-whatsthis": "Kako ovo radi?", "rcfilters-filterlist-feedbacklink": "Napišite povratne informacije vezane za nove (beta) filtere", "rcfilters-highlightbutton-title": "Označi rezultate", "rcfilters-highlightmenu-title": "Odaberite boju", @@ -1245,24 +1261,24 @@ "rcfilters-filterlist-noresults": "Nema filtera", "rcfilters-noresults-conflict": "Rezultati pretrage nisu pronađeni zbog sukoba kriterija pretrage", "rcfilters-state-message-fullcoverage": "Označavanje svih filtera u grupi je isto kao da nije označen niti jedan, tako da filter nema učinka. Grupa uključuje: $1", - "rcfilters-filtergroup-registration": "Registracija suradnika", - "rcfilters-filter-registered-label": "Prijavljeni", - "rcfilters-filter-registered-description": "Prijavljeni suradnici.", - "rcfilters-filter-unregistered-label": "Neprijavljeni", - "rcfilters-filter-unregistered-description": "Suradnici koji nisu prijavljeni.", "rcfilters-filtergroup-authorship": "Doprinosi prema autorima", "rcfilters-filter-editsbyself-label": "Uređivanja koja ste Vi napravili", "rcfilters-filter-editsbyself-description": "Vaša uređivanja.", "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": "Registrirani", + "rcfilters-filter-user-experience-level-registered-description": "Prijavljeni suradnici.", + "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": "Manje od 10 uređivanja i 4 dana aktivnosti.", + "rcfilters-filter-user-experience-level-newcomer-description": "Registrirani suradnici s manje od 10 uređivanja i 4 dana aktivnosti.", "rcfilters-filter-user-experience-level-learner-label": "Početnici", - "rcfilters-filter-user-experience-level-learner-description": "Više iskustva od novih ali manje od iskusnih suradnika.", + "rcfilters-filter-user-experience-level-learner-description": "Registrirani suradnici čije je iskustvo između novih i iskusnih suradnika.", "rcfilters-filter-user-experience-level-experienced-label": "Iskusni suradnici", - "rcfilters-filter-user-experience-level-experienced-description": "Aktivnost više od 30 dana i 500 uređivanja.", + "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.", @@ -1292,11 +1308,12 @@ "rcfilters-filter-categorization-description": "Uređivanja kojima se dodaju ili uklanjanju stranice iz kategorija.", "rcfilters-filter-logactions-label": "Radnje zabilježene u evidencijama", "rcfilters-filter-logactions-description": "Administrativne radnje, stvaranja računa, brisanje stranica, postavljanja datoteka...", - "rcfilters-filter-lastrevision-label": "Posljednja izmjena", + "rcfilters-filter-lastrevision-label": "Najnovija izmjena", "rcfilters-filter-lastrevision-description": "Najnovija izmjena na stranici.", - "rcfilters-filter-previousrevision-label": "Starije izmjene", + "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", @@ -1338,7 +1355,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", @@ -1495,6 +1512,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]", @@ -1585,11 +1603,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.", @@ -1607,6 +1625,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", @@ -1614,6 +1633,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", @@ -1637,6 +1657,7 @@ "pageswithprop-legend": "Stranice s određenim osobinama", "pageswithprop-text": "Ovo je popis stranica koje koriste određene osobine stranica.", "pageswithprop-prop": "Ime osobine:", + "pageswithprop-sortbyvalue": "Sortiraj po vrijednosti svojstva", "pageswithprop-submit": "Idi", "doubleredirects": "Dvostruka preusmjeravanja", "doubleredirectstext": "Ova stranica sadrži popis stranica koje preusmjeravju na druge stranice za preusmjeravanje.\nSvaki redak sadrži poveznice na prvo i drugo preusmjeravanje, kao i odredište drugog preusmjeravanja\nkoja obično ukazuje na \"pravu\" odredišnu stranicu, na koju bi trebalo pokazivati prvo preusmjeravanje.\nPrecrtane stavke su riješene.", @@ -1657,6 +1678,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}}", @@ -1681,7 +1703,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", @@ -1740,8 +1762,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", @@ -1762,6 +1795,7 @@ "logempty": "Nema pronađenih stavki u evidenciji.", "log-title-wildcard": "Traži stranice koje počinju s navedenim izrazom", "showhideselectedlogentries": "Otkrij/sakrij odabrane evidencije", + "log-edit-tags": "Uredi oznake izabranih unosa u evidencijama", "checkbox-select": "Odaberite: $1", "checkbox-all": "Sve", "checkbox-none": "Ništa", @@ -1847,7 +1881,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", @@ -1860,7 +1894,7 @@ "emailmessage": "Poruka:", "emailsend": "Pošalji", "emailccme": "Pošalji mi e-mailom kopiju moje poruke.", - "emailccsubject": "Kopija Vaše poruke suradniku $1: $2", + "emailccsubject": "Kopija Vaše poruke za $1: $2", "emailsent": "E-poruka je poslana!", "emailsenttext": "Vaša poruka je poslana.", "emailuserfooter": "Ovu je e-poruku {{GENDER:$1|poslao suradnik|poslala suradnica}} $1 {{GENDER:$2|suradniku $2|suradnici $2}} uporabom mogućnosti \"{{int:emailuser}}\" s projekta {{SITENAME}}. Ukoliko {{GENDER:$2|odgovorite}} na tu e-poruku, {{GENDER:$2|Vaša}} će poruka biti izravno poslana {{GENDER:$1|izvornom pošiljatelju}}, otkrivajući pritom {{GENDER:$2|Vašu}} adresu e-pošte {{GENDER:$1|pošiljatelju|pošiljateljici}}.", @@ -1921,6 +1955,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", @@ -1955,7 +1990,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]]", @@ -2129,7 +2164,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", @@ -2351,7 +2386,7 @@ "importcantopen": "Ne mogu otvoriti datoteku za uvoz", "importbadinterwiki": "Neispravna međuwiki poveznica", "importsuccess": "Uvoz je uspio!", - "importnosources": "Nije unesen nijedan izvor za transwiki uvoz i neposredno postavljanje povijesti je onemogućeno.", + "importnosources": "Nije unesen ijedan izvor za uvoz preko drugih wikija (''transwiki'') i neposredna postavljanja povijesti izmjena stranice onemogućena su.", "importnofile": "Nije postavljena uvozna datoteka.", "importuploaderrorsize": "Uvoz datoteke nije uspio. Datoteka je veća od dopuštene veličine.", "importuploaderrorpartial": "Uvoz datoteke nije uspio. Datoteka je djelomično uvezena/snimljena.", @@ -2515,7 +2550,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", @@ -2569,8 +2604,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", @@ -3001,10 +3038,10 @@ "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.", + "lag-warn-normal": "Promjene načinjene prije manje od $1 {{PLURAL:$1|sekunde|sekundi}} možda ne će biti prikazane na ovom popisu.", + "lag-warn-high": "Zbog preopterećenosti poslužitelja na kom je baza podataka, izmjene novije od $1 {{PLURAL:$1|sekunde|sekundi}} možda ne će biti prikazane na ovom popisu.", "watchlistedit-normal-title": "Uredi popis praćenja", "watchlistedit-normal-legend": "Ukloni stranice iz popisa praćenja", "watchlistedit-normal-explain": "Prikazane su stranice na Vašem popisu praćenja.\nDa uklonite stranicu s popisa praćenja, označite kućicu kraj nje i kliknite gumb \"{{int:Watchlistedit-normal-submit}}\".\nMožete također [[Special:EditWatchlist/raw|uređivati ovaj popis u okviru za uređivanje]].", @@ -3141,7 +3178,7 @@ "fileduplicatesearch-noresults": "Nije pronađena datoteka s imenom \"$1\".", "specialpages": "Posebne stranice", "specialpages-note-top": "Legenda", - "specialpages-note": "* Normalne posebne stranice\n* Posebne stranice s ograničenim pristupom.", + "specialpages-note-restricted": "* Redovne posebne stranice.\n* Posebne stranice ograničenoga pristupa.", "specialpages-group-maintenance": "Izvješća održavanja", "specialpages-group-other": "Ostale posebne stranice", "specialpages-group-login": "Prijava/otvaranje računa", @@ -3184,6 +3221,7 @@ "tags-hitcount": "$1 {{PLURAL:$1|izmjena|izmjene|izmjena}}", "tags-manage-no-permission": "Nemate pravo upravljati promjenama oznaka.", "tags-create-heading": "Stvori novu oznaku", + "tags-create-explanation": "Predodređeno je da će novostvorene oznake biti omogućene za upotrebu suradnicima i botovima.", "tags-create-tag-name": "Naziv oznake:", "tags-create-reason": "Razlog:", "tags-create-submit": "Stvori", @@ -3231,6 +3269,13 @@ "compare-invalid-title": "Naslov koji ste naveli nije valjan.", "compare-title-not-exists": "Naslov koji ste naveli ne postoji.", "compare-revision-not-exists": "Navedena izmjena stranice ne postoji.", + "diff-form": "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)", @@ -3239,7 +3284,7 @@ "dberr-outofdate": "Imajte na umu da su njihova kazala našeg sadržaja možda zastarjela.", "dberr-cachederror": "Sljedeće je dohvaćena kopija tražene stranice, te možda nije ažurirana.", "htmlform-invalid-input": "Postoje problemi s dijelom Vašeg unosa", - "htmlform-select-badoption": "Vrijednost koju ste naveli nije ispravan izbor.", + "htmlform-select-badoption": "Vrijednost koju ste naveli nije vrijedeća mogućnost.", "htmlform-int-invalid": "Vrijednost koju ste naveli nije cijeli broj.", "htmlform-float-invalid": "Vrijednost koju ste naveli nije broj.", "htmlform-int-toolow": "Vrijednost koju ste naveli je ispod minimuma od $1", @@ -3380,13 +3425,20 @@ "log-name-pagelang": "Evidencija mijenjanja jezika", "mediastatistics": "Statistika datoteka", "mediastatistics-summary": "Slijede statistike postavljenih datoteka koje pokazuju zadnju inačicu datoteke. Starije ili izbrisane inačice nisu prikazane.", + "mediastatistics-nbytes": "{{PLURAL:$1|$1 bajt|$1 bajta|$1 bajtova}} ($2; $3 %)", "mediastatistics-bytespertype": "Ukupna veličina datoteka za ovaj odlomak: {{PLURAL:$1|$1 bajt|$1 bajta|$1 bajtova}} ($2; $3%).", "mediastatistics-allbytes": "Ukupna veličina svih datoteka: {{PLURAL:$1|$1 bajt|$1 bajta|$1 bajtova}} ($2).", + "mediastatistics-header-unknown": "Nepoznata", + "mediastatistics-header-bitmap": "Rasterske slike", "mediastatistics-header-drawing": "Crteži (vektorske slike)", - "mediastatistics-header-audio": "Audio", - "mediastatistics-header-video": "Videozapisi", - "mediastatistics-header-office": "Ured", - "mediastatistics-header-text": "Tekst", + "mediastatistics-header-audio": "Zvukovne datoteke", + "mediastatistics-header-video": "Videodatoteke", + "mediastatistics-header-multimedia": "Datoteke digitalnih kontejnerskih formata", + "mediastatistics-header-office": "Datoteke uredskih formata", + "mediastatistics-header-text": "Tekstualne datoteke", + "mediastatistics-header-executable": "Izvršne datoteke", + "mediastatistics-header-archive": "Kompresirani formati", + "mediastatistics-header-3d": "Datoteke 3D grafičkih formata", "mediastatistics-header-total": "Sve datoteke", "headline-anchor-title": "Poveznica na ovaj odlomak", "special-characters-group-latin": "latinica", @@ -3416,6 +3468,7 @@ "mw-widgets-mediasearch-noresults": "Nema rezultata.", "mw-widgets-titleinput-description-new-page": "stranica još ne postoji", "mw-widgets-titleinput-description-redirect": "preusmjeravanje na $1", + "mw-widgets-usersmultiselect-placeholder": "Dodaj još...", "date-range-from": "Od nadnevka:", "date-range-to": "Do nadnevka:", "randomrootpage": "Slučajna korijenska stranica", diff --git a/languages/i18n/hsb.json b/languages/i18n/hsb.json index 2ae1aa3190..3ebee1746e 100644 --- a/languages/i18n/hsb.json +++ b/languages/i18n/hsb.json @@ -157,13 +157,7 @@ "anontalk": "Diskusija", "navigation": "Nawigacija", "and": " a", - "qbfind": "Namakać", - "qbbrowse": "Přepytować", - "qbedit": "Wobdźěłać", - "qbpageoptions": "Tuta strona", - "qbmyoptions": "Moje strony", "faq": "Husto stajene prašenja (FAQ)", - "faqpage": "Project:Husto stajene prašenja (FAQ)", "actions": "Akcije", "namespaces": "Mjenowe rumy", "variants": "Warianty", @@ -190,30 +184,20 @@ "edit-local": "Lokalny wopis wobdźěłać .", "create": "Wutworić", "create-local": "Lokalny wopis přidać", - "editthispage": "Tutu stronu wobdźěłać", - "create-this-page": "Stronu wutworić", "delete": "wušmórnyć", - "deletethispage": "Stronu wušmórnyć", - "undeletethispage": "Tutu stronu wobnowić", "undelete_short": "{{PLURAL:$1|jednu wersiju|$1 wersiji|$1 wersije|$1 wersijow}} wobnowić", "viewdeleted_short": "{{PLURAL:$1|jednu wušmórnjenu změnu|$1 wušmórnjenej změnje|$1 wušmórnjene změny|$1 wušmórnjenych změnow}} sej wobhladać", "protect": "škitać", "protect_change": "změnić", - "protectthispage": "Stronu škitać", "unprotect": "Škit wotstronić", - "unprotectthispage": "Tutu stronu hižo nješkitać", "newpage": "Nowa strona", - "talkpage": "Tutu stronu diskutować", "talkpagelinktext": "diskusija", "specialpage": "Specialna strona", "personaltools": "Wosobinske nastroje", - "articlepage": "Nastawk", "talk": "diskusija", "views": "Zwobraznjenja", "toolbox": "Nastroje", "tool-link-emailuser": "{{GENDER:$1|Tutomu wužiwarjej|Tutej wužiwarce}} mejlku pósłać", - "userpage": "Wužiwarsku stronu pokazać", - "projectpage": "Projektowu stronu pokazać", "imagepage": "Datajowu stronu sej wobhladać", "mediawikipage": "Zdźělenku pokazać", "templatepage": "Předłohu pokazać", @@ -1173,7 +1157,6 @@ "rcfilters-invalid-filter": "Njepłaćiwy filter", "rcfilters-filterlist-whatsthis": "Što je to?", "rcfilters-highlightmenu-title": "Barbu wubrać", - "rcfilters-filtergroup-registration": "Registrowanje wužiwarja", "rcfilters-filter-user-experience-level-newcomer-label": "Nowački", "rcfilters-filter-user-experience-level-newcomer-description": "Mjenje hač 10 změnow a štyri aktiwne dny.", "rcfilters-filter-user-experience-level-learner-label": "Započatkarjo", @@ -1628,6 +1611,7 @@ "booksources-search": "Pytać", "booksources-text": "To je lisćina wotkazow k druhim sydłam, kotrež nowe a trjebane knihi předawaja. Tam móžeš tež dalše informacije wo knihach dóstać, kotrež pytaš:", "booksources-invalid-isbn": "Podate ISBN-čisło njezda so płaćiwe być; přepruwuj za zmylkami, z tym zo z orginialneho žórła kopěruješ.", + "magiclink-tracking-isbn": "Strony, kotrež wužiwaja magiske ISBN-wotkazy", "specialloguserlabel": "Wukonjer:", "speciallogtitlelabel": "Cil (titul abo {{ns:user}}:wužiwarske mjeno za wužiwarja):", "log": "Protokole", @@ -2940,7 +2924,6 @@ "fileduplicatesearch-noresults": "Žana dataja z mjenom \"$1\" namakana.", "specialpages": "Specialne strony", "specialpages-note-top": "Legenda", - "specialpages-note": "* Normalne specialne strony.\n* Specialne strony z wobmjezowanym přistupom.", "specialpages-group-maintenance": "Hladanske lisćiny", "specialpages-group-other": "Druhe specialne strony", "specialpages-group-login": "Přizjewić/Konto załožić", @@ -3011,6 +2994,7 @@ "compare-invalid-title": "Titul, kotryž sy podał, je njepłaćiwy.", "compare-title-not-exists": "Titul, kotryž sy podał, njeeksistuje.", "compare-revision-not-exists": "Wersija, kotruž sy podał, njeeksistuje.", + "diff-form": "'''formular'''", "dberr-problems": "Wodaj! Tute sydło ma techniske ćežkosće.", "dberr-again": "Počakń někotre mjeńšiny a zaktualizuj stronu.", "dberr-info": "(Njeje móžno na datowu banku přistup měć: $1)", diff --git a/languages/i18n/hu.json b/languages/i18n/hu.json index 629bb705f6..23dc07f4c4 100644 --- a/languages/i18n/hu.json +++ b/languages/i18n/hu.json @@ -48,7 +48,8 @@ "BanKris", "Notramo", "Urbalazs", - "Bencemac" + "Bencemac", + "Rodrigo" ] }, "tog-underline": "Hivatkozások aláhúzása:", @@ -78,7 +79,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", @@ -706,7 +707,6 @@ "explainconflict": "Valaki megváltoztatta a lapot, mióta elkezdted szerkeszteni. A felső szövegdobozban láthatod az oldal jelenlegi tartalmát. A te módosításaid az alsó dobozban találhatók. Át kell másolnod a módosításaidat a felsőbe! \n\nCsak a felső dobozban levő szöveg lesz elmentve, amikor a „$1” gombra kattintasz.", "yourtext": "A te változatod", "storedversion": "A tárolt változat", - "nonunicodebrowser": "'''Figyelem: A böngésződ nem Unicode kompatibilis. Egy kerülő megoldásként biztonságban szerkesztheted a cikkeket: a nem ASCII karakterek a szerkesztőablakban hexadeciális kódokként jelennek meg.'''", "editingold": "'''FIGYELMEZTETÉS: A lap egy elavult változatát szerkeszted.\nHa elmented, akkor az ezen változat után végzett összes módosítás elvész.'''", "yourdiff": "Eltérések", "copyrightwarning": "Vedd figyelembe, hogy a {{SITENAME}} wikin végzett összes módosítás a(z) $2 alatt jelenik meg (lásd a(z) $1 lapot a részletekért). Ha nem akarod, hogy az írásodat módosítsák vagy továbbterjesszék, akkor ne küldd be.
    \nAzt is megígéred, hogy ezt magadtól írtad, vagy egy közkincsből vagy más szabad forrásból másoltad.\n'''NE KÜLDJ BE JOGVÉDETT MUNKÁT ENGEDÉLY NÉLKÜL!'''", @@ -734,8 +734,8 @@ "permissionserrorstext-withaction": "Nincs jogosultságod a következő művelet elvégzéséhez: $2, a következő {{PLURAL:$1|ok|okok}} miatt:", "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": "Az oldal korábban törölve lett.\nA lap törlési, védelmi é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, 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.", @@ -774,6 +774,7 @@ "parser-template-loop-warning": "Végtelen ciklus a következő sablonban: [[$1]]", "template-loop-category": "Lapok végtelen sablonciklusokkal", "template-loop-category-desc": "A lap végtelen sablonciklust tartalmaz, vagyis egy sablon önmagát hívja meg rekurzívan.", + "template-loop-warning": "Figyelem: Ez a lap hivatkozik ide: [[:$1]] amivel a sablon hivatkozás végtelen hurokba kerül (logikailag nem érvényes).", "parser-template-recursion-depth-warning": "A sablon rekurzív beillesztésének mélysége átlépte a határértéket ($1)", "language-converter-depth-warning": "A nyelvátalakító rekurzióinak száma túllépve ($1)", "node-count-exceeded-category": "Túl sok csomópontot tartalmazó lapok", @@ -1003,7 +1004,7 @@ "prefs-editwatchlist-clear": "A figyelőlista kiürítése", "prefs-watchlist-days": "A figyelőlistában mutatott napok száma:", "prefs-watchlist-days-max": "Legfeljebb $1 {{PLURAL:$1|nap|nap}}", - "prefs-watchlist-edits": "A kiterjesztett figyelőlistán mutatott szerkesztések száma:", + "prefs-watchlist-edits": "A figyelőlistán megjelenő szerkesztések maximális száma:", "prefs-watchlist-edits-max": "Legfeljebb 1000", "prefs-watchlist-token": "A figyelőlista kulcsa:", "prefs-misc": "Egyéb", @@ -1043,6 +1044,7 @@ "timezoneregion-indian": "Indiai-óceán", "timezoneregion-pacific": "Csendes-óceán", "allowemail": "E-mail engedélyezése más szerkesztőktől", + "email-blacklist-label": "Letiltás ezen felhasználóknak, hogy e-mailt küldhessenek nekem", "prefs-searchoptions": "Keresés", "prefs-namespaces": "Névterek", "default": "alapértelmezett", @@ -1318,10 +1320,23 @@ "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-other-review-tools": "Egyéb hasznos hivatkozások", + "rcfilters-group-results-by-page": "Csoportosítás eredményei lapok szerint", + "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-quickfilters-placeholder-description": "Hogy elmentsd szűrőid beállításait és később újra használhasd őket, kattints a könyvjelző ikonra az „aktív szűrők” mezőben, feljebb.", "rcfilters-savedqueries-defaultlabel": "Mentett szűrők", "rcfilters-savedqueries-rename": "Átnevezés", "rcfilters-savedqueries-setdefault": "Beállítás alapértelmezettként", @@ -1330,43 +1345,41 @@ "rcfilters-savedqueries-new-name-label": "Név", "rcfilters-savedqueries-new-name-placeholder": "Írd le a szűrő célját.", "rcfilters-savedqueries-apply-label": "Gyors hivatkozás létrehozása", + "rcfilters-savedqueries-apply-and-setdefault-label": "Alapértelmezett szűrő készítése", "rcfilters-savedqueries-cancel-label": "Mégse", "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ó.", "rcfilters-filterlist-title": "Szűrők", - "rcfilters-filterlist-whatsthis": "Mi ez?", - "rcfilters-filterlist-feedbacklink": "Visszajelzés küldése az új (beta) szűrőkről", + "rcfilters-filterlist-whatsthis": "Hogy működnek?", + "rcfilters-filterlist-feedbacklink": "Mond el nekünk, mit gondolsz az (új) szűrőkről", "rcfilters-highlightbutton-title": "Kiemelt találatok", "rcfilters-highlightmenu-title": "Válassz egy színt", "rcfilters-highlightmenu-help": "Válassz színt ennek a tulajdonságnak kijelöléséhez", "rcfilters-filterlist-noresults": "Nem található szűrő", "rcfilters-noresults-conflict": "Nincs találat, mert a keresési kritériumok konfliktusban vannak", "rcfilters-state-message-subset": "Ennek a szűrőnek nincs hatása, mert az eredményét {{PLURAL:$2|tartalmazza a következő, nagyobb szűrő|tartalmazzák a következő, nagyobb szűrők}} (próbáld meg kiemelni a megkülönböztetéshez): $1", - "rcfilters-state-message-fullcoverage": "Az összes szűrő kijelölése egy csoportban ugyanaz, mint ha semmit nem választanál ki, így ennek a szűrőnek nincs hatása. A csoport tartalmazza: $1", - "rcfilters-filtergroup-registration": "Regisztráció", - "rcfilters-filter-registered-label": "Regisztrált", - "rcfilters-filter-registered-description": "Bejelentkezett szerkesztők.", - "rcfilters-filter-unregistered-label": "Nem regisztrált", - "rcfilters-filter-unregistered-description": "Nem bejelentkezett szerkesztők.", - "rcfilters-filter-unregistered-conflicts-user-experience-level": "Ez a szűrő ütközik a következő tapasztalati {{PLURAL:$2|szűrővel, ami|szűrőkkel, amik}} csak regisztrált felhasználókat {{PLURAL:$2|talál|találnak}} meg: $1", + "rcfilters-state-message-fullcoverage": "Az összes szűrő kijelölése ebben a csoportban ugyanaz, mintha semmit nem választanál ki, így ennek a szűrőnek nincs hatása. A csoport tartalmazza: $1", "rcfilters-filtergroup-authorship": "Hozzájárulás szerzője", "rcfilters-filter-editsbyself-label": "Saját változtatásaid", "rcfilters-filter-editsbyself-description": "A te hozzájárulásaid.", "rcfilters-filter-editsbyother-label": "Mások módosításai", "rcfilters-filter-editsbyother-description": "Minden változtatás a tieidet kivéve.", - "rcfilters-filtergroup-userExpLevel": "Tapasztalati szint (csak regisztrált felhasználók)", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "A tapasztalat szűrő csak regisztrált felhasználókat keres, tehát ez a szűrő ellentétben van a \"Regisztrálatlan\" szűrővel.", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "A \"Regisztrálatlan\" szűrő ellentétben van egy vagy több Tapasztalat szűrővel, ami csak regisztrált felhasználókat keres. A konfliktusban lévő szűrők meg vannak jelölve fent az Aktív Szűrők résznél.", + "rcfilters-filtergroup-userExpLevel": "Felhasználói regisztráció és tapasztalat", + "rcfilters-filter-user-experience-level-registered-label": "Regisztrált", + "rcfilters-filter-user-experience-level-registered-description": "Bejelentkezett szerkesztők.", + "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": "Kevesebb mint 10 szerkesztés és 4 nap aktivitás.", + "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": "Több tapasztalat egy „újoncnál”, de kevesebb egy „tapasztalt szerkesztőnél”.", + "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": "Több mint 30 nap aktivitás és 500 szerkesztés.", + "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.", @@ -1389,6 +1402,10 @@ "rcfilters-filter-watchlist-watchednew-description": "A figyelőlistádon szereplő lapokon az utolsó látogatásod után történt változtatások.", "rcfilters-filter-watchlist-notwatched-label": "Figyelőlistán nem szereplők", "rcfilters-filter-watchlist-notwatched-description": "Minden változtatás, kivéve a figyelőlistádon szereplő lapoké.", + "rcfilters-filtergroup-watchlistactivity": "Figyelőlista aktivitás", + "rcfilters-filter-watchlistactivity-unseen-label": "Még nem látott változtatások", + "rcfilters-filter-watchlistactivity-unseen-description": "A figyelőlistádon szereplő lapokon az utolsó látogatásod után történt változtatások.", + "rcfilters-filter-watchlistactivity-seen-label": "Változtatások megtekintése", "rcfilters-filtergroup-changetype": "Változtatás típusa", "rcfilters-filter-pageedits-label": "Lapszerkesztések", "rcfilters-filter-pageedits-description": "A wiki tartalom szerkesztése, beszélgetések, kategória leírások...", @@ -1408,10 +1425,20 @@ "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-exclude-button-off": "A kiválasztottak kizárása", + "rcfilters-exclude-button-on": "A kiválasztottak kizárva", + "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-liveupdates-button-title-off": "A legfrissebb változtatások mutatása, amint megtörténnek", + "rcfilters-watchlist-markseen-button": "Összes változtatás megjelölése olvasottként", + "rcfilters-watchlist-edit-watchlist-button": "A figyelőlistád szerkesztése", + "rcfilters-watchlist-showupdated": "Az újabb változtatások amiket még nem néztél meg, vastaggal jelöltük", + "rcfilters-preference-label": "A friss változtatások fejlesztett változatának elrejtése", "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", @@ -1527,6 +1554,7 @@ "file-deleted-duplicate-notitle": "Egy ugyanilyen fájlt korábban már töröltek, és címét eltávolították. Kérj meg valakit, aki meg tudja nézni a törölt fájlokat, hogy tekintse át a helyzetet, mielőtt újra feltöltenéd a fájlt.", "uploadwarning": "Feltöltési figyelmeztetés", "uploadwarning-text": "Kérlek, módosítsd a fájl leírását alább, majd próbáld újra.", + "uploadwarning-text-nostash": "Kérjük próbálkozz újra: ismét töltsd fel a fájlt és változtass a leírásán.", "savefile": "Fájl mentése", "uploaddisabled": "Feltöltések kikapcsolva", "copyuploaddisabled": "A feltöltés URL alapján le van tiltva.", @@ -1688,7 +1716,7 @@ "listfiles_size": "Méret", "listfiles_description": "Leírás", "listfiles_count": "Változatok", - "listfiles-show-all": "A képek régebbi verzióját is", + "listfiles-show-all": "Tartalmazza a fájlok régebbi verzióját is", "listfiles-latestversion": "Aktuális változat", "listfiles-latestversion-yes": "Igen", "listfiles-latestversion-no": "Nem", @@ -1791,6 +1819,7 @@ "pageswithprop-legend": "Lap tulajdonsággal rendelkező lapok", "pageswithprop-text": "Ez a lap azokat a lapokat listázza, amelyek egy adott lap tulajdonsággal rendelkeznek.", "pageswithprop-prop": "Tulajdonságnév:", + "pageswithprop-reverse": "Rendezze fordított sorrendbe", "pageswithprop-submit": "Ugrás", "pageswithprop-prophidden-long": "hosszú szöveg tulajdonság elrejtve ($1)", "pageswithprop-prophidden-binary": "bináris tulajdonság érték rejtett ($1)", @@ -1943,6 +1972,12 @@ "booksources-search": "Keresés", "booksources-text": "Alább látható a másik webhelyekre mutató hivatkozások listája, ahol új és használt könyveket árulnak, és\ntovábbi információkat lelhetsz ott az általad keresett könyvekről:", "booksources-invalid-isbn": "A megadott ISBN hibásnak tűnik; ellenőrizd, hogy jól másoltad-e át az eredeti forrásból.", + "magiclink-tracking-rfc": "Mágikus RFC-linkeket használó lapok", + "magiclink-tracking-rfc-desc": "Ez az oldal mágikus RFC-linkeket használ. Javításukhoz a [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org]-on találsz segítséget.", + "magiclink-tracking-pmid": "Mágikus PMID-linkeket használó lapok", + "magiclink-tracking-pmid-desc": "Ez az oldal mágikus PMID-linkeket használ. Javításukhoz a [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org]-on találsz segítséget.", + "magiclink-tracking-isbn": "Mágikus ISBN-linkeket használó lapok", + "magiclink-tracking-isbn-desc": "Ez az oldal mágikus ISBN-linkeket használ. Javításukhoz a [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org]-on találsz segítséget.", "specialloguserlabel": "Szerkesztő:", "speciallogtitlelabel": "Cél (cím vagy felhasználóhoz {{ns:user}}:felhasználói név):", "log": "Rendszernaplók", @@ -2120,6 +2155,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", @@ -2148,6 +2184,7 @@ "delete-warning-toobig": "Ennek a lapnak a laptörténete több mint {{PLURAL:$1|egy|$1}} változatot őriz. Törlése fennakadásokat okozhat a wiki adatbázis-műveleteiben; óvatosan járj el.", "deleteprotected": "Nem tudod törölni a lapot, mivel le van védve.", "deleting-backlinks-warning": "Figyelem: [[Special:WhatLinksHere/{{FULLPAGENAME}}|Más lapok]] hivatkoznak a törlendő oldalra (vagy beillesztik azt).", + "deleting-subpages-warning": "Figyelem: A törlésre jelölt lapnak[[Special:PrefixIndex/{{FULLPAGENAME}}/|{{PLURAL:$1|van allapja|$1 vannak allapjai|51=több mint 50 allapja van}}]].", "rollback": "Szerkesztések visszaállítása", "rollbacklink": "visszaállítás", "rollbacklinkcount": "$1 szerkesztés visszaállítása", @@ -2266,6 +2303,7 @@ "undelete-search-title": "Törölt lapok keresése", "undelete-search-box": "Törölt lapok keresése", "undelete-search-prefix": "A megadott szavakkal kezdődő oldalak megjelenítése:", + "undelete-search-full": "A következőt tartalmazó címek keresése:", "undelete-search-submit": "Keresés", "undelete-no-results": "Nem található a keresési feltételeknek megfelelő oldal a törlési naplóban.", "undelete-filename-mismatch": "Nem állítható helyre a(z) $1 időbélyeggel ellátott változat: a fájlnév nem egyezik meg", @@ -2312,6 +2350,7 @@ "sp-contributions-newonly": "Csak az új oldalt létrehozó szerkesztéseket mutassa", "sp-contributions-hideminor": "Apró szerkesztések elrejtése", "sp-contributions-submit": "Keresés", + "sp-contributions-outofrange": "Nem sikerült eredményt megjeleníteni. A kért IP-tartomány nagyobb, mint a CIDR korlátja ($1).", "whatlinkshere": "Mi hivatkozik erre", "whatlinkshere-title": "A(z) „$1” lapra hivatkozó lapok", "whatlinkshere-page": "Lap:", @@ -2376,6 +2415,7 @@ "autoblocklist-submit": "Keresés", "autoblocklist-legend": "Autoblokkok listája", "autoblocklist-localblocks": "Helyi {{PLURAL:$1|autoblokk|autoblokkok}}", + "autoblocklist-total-autoblocks": "Autoblokkok száma: $1", "autoblocklist-empty": "Az autoblokklista üres.", "autoblocklist-otherblocks": "Egyéb {{PLURAL:$1|autoblokk|autoblokkok}}", "ipblocklist": "Blokkolt felhasználók", @@ -2599,7 +2639,7 @@ "import-nonewrevisions": "Nincs változat importálva (mindet korábban importálták vagy a hiba miatt program kihagyta).", "xml-error-string": "$1 a(z) $2. sorban, $3. oszlopban ($4. bájt): $5", "import-upload": "XML-adatok feltöltése", - "import-token-mismatch": "Elveszett a munkamenetadatok.\n\nLehet, hogy ki vagy jelentkezve. Kérjük, győződj meg róla, hogy még mindig be vagy jelentkezve, majd próbálkozz újra! Ha ez továbbra sem sikerül, próbálj meg [[Special:UserLogout|kijelentkezni]], majd ismét bejelentkezni, és ellenőrizd, hogy a böngésződ elfogad sütiket erről az oldalról.", + "import-token-mismatch": "Elvesztek a munkamenetadatok.\n\nLehet, hogy ki vagy jelentkezve. '''Kérjük, győződj meg róla, hogy még mindig be vagy jelentkezve, majd próbálkozz újra!''' Ha ez továbbra sem sikerül, próbálj meg [[Special:UserLogout|kijelentkezni]], majd ismét bejelentkezni, és ellenőrizd, hogy a böngésződ elfogad sütiket erről az oldalról.", "import-invalid-interwiki": "A kijelölt wikiből nem lehet importálni.", "import-error-edit": "„$1” lap nem került importálásra, mert nem szerkesztheted azt.", "import-error-create": "„$1” lap nem került importálásra, mert nem hozhatod létre azt.", @@ -2826,6 +2866,7 @@ "newimages-legend": "Fájlnév", "newimages-label": "Fájlnév (vagy annak részlete):", "newimages-user": "IP-cím vagy felhasználónév", + "newimages-newbies": "Csak az újonnan regisztrált szerkesztők közreműködéseinek mutatása", "newimages-showbots": "Botos feltöltések mutatása", "newimages-hidepatrolled": "Ellenőrzött szerkesztések elrejtése", "newimages-mediatype": "Médiatípus:", @@ -2837,7 +2878,7 @@ "seconds": "{{PLURAL:$1|egy|$1}} másodperccel", "minutes": "{{PLURAL:$1|egy|$1}} perccel", "hours": "{{PLURAL:$1|egy|$1}} órával", - "days": "{{PLURAL:$1|egy|$1}} nappal", + "days": "$1 nappal", "weeks": "{{PLURAL:$1|$1 hét|$1 hét}}", "months": "{{PLURAL:$1|$1 hónap|$1 hónap}}", "years": "{{PLURAL:$1|$1 év|$1 év}}", @@ -3343,7 +3384,7 @@ "version-libraries-license": "Licenc", "version-libraries-description": "Leírás", "version-libraries-authors": "Szerzők", - "redirect": "Átirányítás fájl, szerkesztő, olda, oldalváltozat vagy naplóazonosító alapján", + "redirect": "Átirányítás fájl, szerkesztő, oldal, oldalváltozat vagy naplóazonosító alapján", "redirect-summary": "Ez a speciális lap átirányít egy fájlra (megadott fájlnévvel), lapra (megadott lapváltozat- vagy lapazonosító számmal), felhasználóra (felhasználó azonosítószáma alapján) vagy naplóbejegyzésre (naplóazonosító alapján). Használat: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]] vagy [[{{#Special:Redirect}}/logid/186]].", "redirect-submit": "Mehet", "redirect-lookup": "Keresés:", @@ -3364,7 +3405,7 @@ "fileduplicatesearch-noresults": "Nincs „$1” nevű fájl.", "specialpages": "Speciális lapok", "specialpages-note-top": "Jelmagyarázat", - "specialpages-note": "* Mindenki számára elérhető speciális lapok.\n* Korlátozott hozzáférésű speciális lapok.", + "specialpages-note-restricted": "* Mindenki számára elérhető speciális lapok.\n* Korlátozott hozzáférésű speciális lapok.", "specialpages-group-maintenance": "Állapotjelentések", "specialpages-group-other": "További speciális lapok", "specialpages-group-login": "Bejelentkezés / fiók létrehozása", @@ -3414,7 +3455,7 @@ "tags-create-reason": "Indoklás:", "tags-create-submit": "Létrehozás", "tags-create-no-name": "Kötelező megadnod egy címkenevet.", - "tags-create-invalid-chars": "Címkenevek nem tartalmazhatnak vesszőt (,) és normál perjelet (/).", + "tags-create-invalid-chars": "Címkenevek nem tartalmazhatnak vesszőt (,), függőleges vonalat (|) és normál perjelet (/).", "tags-create-invalid-title-chars": "Címkenevek nem tartalmazhatnak lapcímben nem használható karaktereket.", "tags-create-already-exists": "A(z) „$1” címke már létezik.", "tags-create-warnings-above": "A következő {{PLURAL:$2|figyelmeztetést|figyelmeztetéseket}} találtam a(z) „$1” címke létrehozási kísérlete közben:", @@ -3483,6 +3524,10 @@ "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", + "permanentlink": "Állandó hivatkozás", + "permanentlink-revid": "Változat azonosító", "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)", @@ -3555,7 +3600,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", @@ -3735,6 +3780,7 @@ "special-characters-group-thai": "Thai", "special-characters-group-lao": "Lao", "special-characters-group-khmer": "Khmer", + "special-characters-group-canadianaboriginal": "Kanadai bennszülött jelek", "special-characters-title-endash": "kötőjel", "special-characters-title-emdash": "hosszú kötőjel", "special-characters-title-minus": "minusz jel", @@ -3883,5 +3929,7 @@ "gotointerwiki-external": "A(z) {{SITENAME}} elhagyására és a(z) [[$2]] meglátogatására készülsz, ami egy másik webhelyen található.\n\n[$1 Kattints ide a(z) $1 oldalra való továbblépéshez.]", "undelete-cantedit": "Nem állíthatod helyre ezt a lapot, mert nincs jogosultságod a szerkesztéséhez.", "undelete-cantcreate": "Nem állíthatod helyre ezt a lapot, mert nem létezik ilyen című lap, és nincs jogosultságod létrehozni azt.", + "pagedata-title": "Az oldal adatai", + "pagedata-not-acceptable": "Nem található megfelelő formátum. Támogatott MIME-típusok: $1", "pagedata-bad-title": "Érvénytelen cím: $1." } diff --git a/languages/i18n/hy.json b/languages/i18n/hy.json index 826489b184..f6b8d5c56e 100644 --- a/languages/i18n/hy.json +++ b/languages/i18n/hy.json @@ -29,7 +29,8 @@ "Macofe", "Kareyac", "Irus", - "Narek" + "Narek", + "23artashes" ] }, "tog-underline": "ընդգծել հղումները՝", @@ -532,7 +533,7 @@ "changeemail-oldemail": "Ներկա էլ․ հասցե․", "changeemail-newemail": "Նոր էլ․ հասցե․", "changeemail-none": "(ոչ մի)", - "changeemail-password": "Քո {{SITENAME}} գաղտնաբառը՝", + "changeemail-password": "Ձեր {{SITENAME}} գաղտնաբառը՝", "changeemail-submit": "Փոխել էլ․ հասցեն", "changeemail-nochange": "Խնդրում ենք մուտքագրեք այլ նոր էլեկտրոնային փոստի հասցեն։", "resettokens-tokens": "Կտրոններ՝", @@ -558,7 +559,7 @@ "watchthis": "Հսկել այս էջը", "savearticle": "Հիշել էջը", "savechanges": "Պահպանել փոփոխությունները", - "publishpage": "Հիշել փոփոխությունները", + "publishpage": "Ստեղծել էջը", "publishchanges": "Հիշել փոփոխությունները", "preview": "Նախադիտում", "showpreview": "Նախադիտել", @@ -614,7 +615,6 @@ "explainconflict": "Մեկ այլ մասնակից փոփոխել է այս տեքստը ձեր խմբագրման ընթացքում։\nՎերին խմբագրման դաշտում ընդգրկված է ընթացիկ տեքստը, որն ենթակա է հիշման։\nՁեր խմբագրումներով տեքստը գտնվում է ստորին դաշտում։\nՈրպեսզի ձեր փոփոխությունները հիշվեն, միաձուլեք դրանք վերին տեքստի մեջ։\n«$1» կոճակին սեղմելով կհիշվի '''միայն''' վերևվի դաշտի տեքստը:", "yourtext": "Ձեր տեքստը", "storedversion": "Պահված տարբերակ", - "nonunicodebrowser": "'''ԶԳՈՒՇԱՑՈՒՄ. Ձեր զննարկիչը չունի Յունիկոդ ապահովում։ Հոդվածներ խմբագրելիս բոլոր ոչ-ASCII սիմվլոները փոխարինվելու են իրենց տասնվեցական կոդերով։'''", "editingold": "'''ԶԳՈՒՇԱՑՈՒՄ. Դուք խմբագրում եք այս էջի հնացած տարբերակ։ Էջը հիշելուց հետո հետագա տարբերակներում կատարված փոփոխությունները կկորեն։'''", "yourdiff": "Տարբերությունները", "copyrightwarning": "Հաշվի առեք, որ տեքստի յուրաքանչյուր լրացում և փոփոխություն համարվում է $2 արտոնագրի համաձայն թողարկված (տե՛ս $1 մանրամասների համար)։ Եթե չեք ցանկանում, որ ձեր նյութը անողոքաբար խմբագրվի ու ազատորեն տարածվի, ապա մի՛ տեղադրեք այն այստեղ։
    \nՆյութն այստեղ տեղադրելով՝ դուք նաև հավաստիացնում եք մեզ, որ այն գրված է ձեր կողմից կամ վերցված է ազատ տարածում և բովանդակային փոփոխություններ թույլատրող աղբյուրներից։\n'''ԱՌԱՆՑ ԹՈՒՅԼՏՎՈՒԹՅԱՆ ՄԻ՛ ՏԵՂԱԴՐԵՔ ՀԵՂԻՆԱԿԱՅԻՆ ԻՐԱՎՈՒՆՔՆԵՐՈՎ ՊԱՇՏՊԱՆՎԱԾ ՆՅՈՒԹԵՐ։'''", @@ -960,13 +960,16 @@ "recentchanges-legend-heading": "Լեգենդ՝", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (տես նաև՝ [[Special:NewPages|նոր էջերի ցանկ]])", "recentchanges-submit": "Ցույց տալ", + "rcfilters-limit-shownum": "Ցուցադրել վերջին $1 փոփոխությունները", "rcfilters-savedqueries-rename": "Վերանվանել", "rcfilters-savedqueries-remove": "Ջնջել", "rcfilters-savedqueries-new-name-label": "Անուն", "rcfilters-savedqueries-apply-label": "Ստեղծել արագ հղում", "rcfilters-savedqueries-cancel-label": "Չեղարկել", "rcfilters-filterlist-title": "Զտիչներ", + "rcfilters-filterlist-whatsthis": "Ինչպե՞ս է սա աշխատում:", "rcfilters-filter-editsbyself-label": "Ձեր խմբագրումներ", + "rcfilters-filter-user-experience-level-newcomer-description": "Գրանցված խմբագիրներ՝ ոչ պակաս քան 10 խմբագրումով և 4 օր ակտիվությամբ:", "rcfilters-filtergroup-lastRevision": "Ընթացիկ տարբերակ", "rcnotefrom": "Ստորև բերված են փոփոխությունները սկսած՝ '''$2''' (մինչև՝ '''$1''')։", "rclistfrom": "Ցույց տալ նոր փոփոխությունները սկսած $3 $2", @@ -1332,7 +1335,7 @@ "notanarticle": "Հոդված չէ", "watchlist-details": "Ձեր հսկացանկում կա {{PLURAL:$1|$1 էջ|$1 էջ}}` քննարկման էջերը չհաշված։", "wlheader-enotif": "Էլ-փոստով տեղեկացումը միացված է։", - "wlheader-showupdated": "Էջերը, որոնք փոփոխվել են ձեր դրանց վերջին այցից հետո բերված են '''թավատառ'''։", + "wlheader-showupdated": "Էջերը, որոնք փոփոխվել են ձեր վերջին այցից հետո, բերված են '''թավատառ'''։", "wlnote": "Ստորև բերված {{PLURAL:$1|է վերջին փոփոխությունը|են վերջին '''$1''' փոփոխությունները}} վերջին $2 ժամվա ընթացքում։", "wlshowlast": "Ցուցադրել վերջին $1 ժամերը $2 օրերը", "watchlist-hide": "Թաքցնել", @@ -1368,7 +1371,7 @@ "historywarning": "Զգուշացում. էջը, որը դուք պատրաստվում եք ջնջել ունի փոփոխությունների պատմություն։", "historyaction-submit": "Ցուցադրել", "confirmdeletetext": "Դուք պատրաստվում եք ընդմիշտ ջնջել էջը կամ պատկերը տվյալների բազայից իր փոփոխությունների պատմությամբ հանդերձ։ Խնդրում ենք հաստատել, որ դուք իրոք մտադրված եք դա անել, հասկանում եք դրա հետևանքները և գործում եք [[{{MediaWiki:Policy-url}}|կանոնադրության]] սահմաններում։", - "actioncomplete": "Գործողությունը ավարտված է", + "actioncomplete": "Գործողությունն ավարտված է", "actionfailed": "Գործողությունը չհաջողվեց", "deletedtext": "«$1» էջը ջնջված է։\nՏես $2՝ վերջին ջնջումների պատմության համար։", "dellogpage": "Ջնջման տեղեկամատյան", @@ -1578,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", @@ -1938,7 +1941,7 @@ "size-kilobytes": "$1 ԿԲ", "size-megabytes": "$1 ՄԲ", "size-gigabytes": "$1 ԳԲ", - "lag-warn-normal": "Վերջին $1 վայրկյանի ընթացքում կատարված փափախությունները հնարավոր է չլինեն այս ցանկում։", + "lag-warn-normal": "Վերջին $1 վայրկյանի ընթացքում կատարված փոփոխությունները հնարավոր է չլինեն այս ցանկում։", "lag-warn-high": "Տվյալների բազայի մեծ հապաղման պատճառով վերջին $1 {{PLURAL:$1|վայրկյանում|վայրկյանում}} կատարված խմբագրումները հնարավոր է չերևան այս ցանկում։", "watchlistedit-normal-title": "Հսկացանկի խմբագրում", "watchlistedit-normal-legend": "Հեռացնել անվանումները հսկացանկից", @@ -1973,7 +1976,6 @@ "fileduplicatesearch-result-n": "$1 նիշքն ունի {{PLURAL:$2|1 նույնական կրկնօրինակ|$2 նույնական կրկնօրինակ}}.", "fileduplicatesearch-noresults": "$1 անունով նիշք չի գտնվել", "specialpages": "Սպասարկող էջեր", - "specialpages-note": "* Հասարակ հատուկ էջեր։\n* Սահմանափակված հատուկ էջեր։", "specialpages-group-maintenance": "Տեխնիկական սպասարկման տեղեկատուներ", "specialpages-group-other": "Այլ հատուկ էջեր", "specialpages-group-login": "Մտնել / Գրանցվել", diff --git a/languages/i18n/ia.json b/languages/i18n/ia.json index 53bacc4355..9e4317b6a4 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", @@ -1287,8 +1288,19 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (vide etiam le [[Special:NewPages|lista de nove paginas]])", "recentchanges-legend-plusminus": "(''±123'')", "recentchanges-submit": "Monstrar", + "rcfilters-tag-remove": "Remover '$1'", + "rcfilters-legend-heading": "Lista de abbreviationes:", + "rcfilters-other-review-tools": "Altere instrumentos de revision", + "rcfilters-group-results-by-page": "Gruppar resultatos per pagina", + "rcfilters-grouping-title": "Gruppamento", "rcfilters-activefilters": "Filtros active", "rcfilters-advancedfilters": "Filtros avantiate", + "rcfilters-limit-title": "Cambiamentos a monstrar", + "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}}", + "rcfilters-days-show-hours": "$1 {{PLURAL:$1|hora|horas}}", "rcfilters-quickfilters": "Filtros salveguardate", "rcfilters-quickfilters-placeholder-title": "Nulle ligamine salveguardate ancora", "rcfilters-quickfilters-placeholder-description": "Pro salveguardar tu filtros pro uso posterior, clicca sur le icone marcapaginas in le area Filtro Active hic infra.", @@ -1300,15 +1312,17 @@ "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.", "rcfilters-filterlist-title": "Filtros", - "rcfilters-filterlist-whatsthis": "Que es isto?", + "rcfilters-filterlist-whatsthis": "Como functiona istes?", "rcfilters-filterlist-feedbacklink": "Da nos tu opinion sur le nove filtros (in beta)", "rcfilters-highlightbutton-title": "Colorar le resultatos", "rcfilters-highlightmenu-title": "Selige un color", @@ -1317,26 +1331,22 @@ "rcfilters-noresults-conflict": "Nulle resultato trovate perque le criterios de recerca es in conflicto", "rcfilters-state-message-subset": "Iste filtro non ha effecto perque su resultatos es includite in illos del sequente {{PLURAL:$2|filtro|filtros}} plus comprehensive (essaya colorar pro poter distinguer lo): $1", "rcfilters-state-message-fullcoverage": "Seliger tote le filtros in un gruppo equivale seliger nulle, dunque iste filtro non ha effecto. Le gruppo include: $1", - "rcfilters-filtergroup-registration": "Registration del usator", - "rcfilters-filter-registered-label": "Registrate", - "rcfilters-filter-registered-description": "Redactores que ha aperite session.", - "rcfilters-filter-unregistered-label": "Non registrate", - "rcfilters-filter-unregistered-description": "Redactores que non ha aperite session.", - "rcfilters-filter-unregistered-conflicts-user-experience-level": "Iste filtro es in conflicto con le sequente {{PLURAL:$2|filtro|filtros}} de Experientia, le {{PLURAL:$2|qual|quales}} trova solmente usatores registrate: $1", "rcfilters-filtergroup-authorship": "Autor del contributiones", "rcfilters-filter-editsbyself-label": "Modificationes facite per te", "rcfilters-filter-editsbyself-description": "Tu proprie contributiones.", "rcfilters-filter-editsbyother-label": "Modificationes facite per alteres", "rcfilters-filter-editsbyother-description": "Tote le modificationes excepte le tues.", - "rcfilters-filtergroup-userExpLevel": "Nivello de experientia (solmente pro usatores registrate)", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Filtros de Experientia trova solmente usatores registrate. Iste filtro es dunque in conflicto con le filtro \"Non registrate\".", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Le filtro \"Non registrate\" es in conflicto con un o plure filtros \"Experientia\", le quales trova solmente usatores registrate. Le filtros in conflicto es marcate in le area \"Filtros active\" supra.", + "rcfilters-filtergroup-userExpLevel": "Registration e experientia del usator", + "rcfilters-filter-user-experience-level-registered-label": "Registrate", + "rcfilters-filter-user-experience-level-registered-description": "Redactores que ha aperite session.", + "rcfilters-filter-user-experience-level-unregistered-label": "Non registrate", + "rcfilters-filter-user-experience-level-unregistered-description": "Redactores que non ha aperite session.", "rcfilters-filter-user-experience-level-newcomer-label": "Novicios", - "rcfilters-filter-user-experience-level-newcomer-description": "Minus de 10 modificationes e 4 dies de activitate.", + "rcfilters-filter-user-experience-level-newcomer-description": "Redactores registrate con minus de 10 modificationes e 4 dies de activitate.", "rcfilters-filter-user-experience-level-learner-label": "Apprentisses", - "rcfilters-filter-user-experience-level-learner-description": "Plus experientia que \"Novicios\" ma minus que \"Usatores con experientia\".", + "rcfilters-filter-user-experience-level-learner-description": "Redactores registrate con experientia inter \"Novicios\" e \"Usatores con experientia\".", "rcfilters-filter-user-experience-level-experienced-label": "Usatores con experientia", - "rcfilters-filter-user-experience-level-experienced-description": "Plus de 30 dies de activitate e 500 modificationes.", + "rcfilters-filter-user-experience-level-experienced-description": "Redactores registrate con plus de 500 modificationes e 30 dies de activitate.", "rcfilters-filtergroup-automated": "Contributiones automatisate", "rcfilters-filter-bots-label": "Robot", "rcfilters-filter-bots-description": "Modificationes facite per instrumentos automatisate.", @@ -1371,18 +1381,23 @@ "rcfilters-hideminor-conflicts-typeofchange-global": "Le filtro \"Modificationes minor\" es in conflicto con un o plure filtros \"Typo de cambiamento\", perque certe typos de cambiamento non pote esser assignate como \"minor\". Le filtros in conflicto es marcate in le area \"Filtros active\" supra.", "rcfilters-hideminor-conflicts-typeofchange": "Certe typos de cambiamento non pote esser assignate como \"minor\", dunque iste filtro es in conflicto con le sequente filtros \"Typo de cambiamento\": $1", "rcfilters-typeofchange-conflicts-hideminor": "Iste filtro \"Typo de cambiamento\" es in conflicto con le filtro \"Modificationes minor\". Certe typos de cambiamento non pote esser assignate como \"minor\".", - "rcfilters-filtergroup-lastRevision": "Ultime version", + "rcfilters-filtergroup-lastRevision": "Ultime versiones", "rcfilters-filter-lastrevision-label": "Ultime version", - "rcfilters-filter-lastrevision-description": "Le modification le plus recente de un pagina.", - "rcfilters-filter-previousrevision-label": "Versiones precedente", - "rcfilters-filter-previousrevision-description": "Tote le modificationes que non es le modification le plus recente de un pagina.", + "rcfilters-filter-lastrevision-description": "Solmente le modification le plus recente de un pagina.", + "rcfilters-filter-previousrevision-label": "Non le ultime version", + "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", @@ -1762,6 +1777,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)", @@ -2098,6 +2115,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", @@ -2126,6 +2144,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}}", @@ -2244,6 +2263,7 @@ "undelete-search-title": "Cercar paginas delite", "undelete-search-box": "Cercar paginas delite", "undelete-search-prefix": "Monstrar paginas que comencia con:", + "undelete-search-full": "Monstrar paginas con titulos que contine:", "undelete-search-submit": "Cercar", "undelete-no-results": "Nulle paginas correspondente trovate in le archivo de deletiones.", "undelete-filename-mismatch": "Non pote restaurar le version del file con data e hora $1: le nomine del file non corresponde", @@ -2578,7 +2598,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.", @@ -3336,7 +3356,7 @@ "fileduplicatesearch-noresults": "Nulle file con nomine \"$1\" trovate.", "specialpages": "Paginas special", "specialpages-note-top": "Legenda", - "specialpages-note": "* Paginas special normal.\n* Paginas special restringite.", + "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", @@ -3455,6 +3475,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 cfd6bdfb9e..439edb69a5 100644 --- a/languages/i18n/id.json +++ b/languages/i18n/id.json @@ -53,7 +53,9 @@ "Presidenvolksraad", "Hidayatsrf", "MF-Warburg", - "Rachmat04" + "Rachmat04", + "Arifpedia", + "Uchup19" ] }, "tog-underline": "Garis bawahi pranala:", @@ -83,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", @@ -747,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.", @@ -1017,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", @@ -1336,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", @@ -1346,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", @@ -1363,25 +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-filtergroup-registration": "Pendaftaran pengguna", - "rcfilters-filter-registered-label": "Terdaftar", - "rcfilters-filter-registered-description": "Penyunting masuk log", - "rcfilters-filter-unregistered-label": "Tidak terdaftar", - "rcfilters-filter-unregistered-description": "Penyunting yang tidak masuk log", + "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-user-experience-level-conflicts-unregistered": "Penyaringan mahir hanya mencari pengguna terdaftar, sehingga penyaringan ini bertentangan dengan penyaringan \"pengguna tidak terdaftar\".", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Penyaringan \"pengguna tidak terdaftar\" bertentangan dengan satu atau lebih penyaringan Mahir, yang mana hanya mencari pengguna terdaftar. Penyaringan yang bertentangan ini ditandai di area Penyaringan Aktif, di atas.", + "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.", @@ -1404,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...", @@ -1413,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", @@ -1950,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)", @@ -2132,6 +2166,7 @@ "enotif_lastdiff": "Untuk melihat perubahan ini, lihat $1", "enotif_anon_editor": "pengguna anonim $1", "enotif_body": "Halo $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nRingkasan suntingan: $PAGESUMMARY $PAGEMINOREDIT\n\nHubungi penyunting:\nsurel: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nKami tidak akan mengirim pemberitahuan lain bila ada perubahan lebih lanjut sampai Anda mengunjungi halaman ini ketika masuk log. Anda juga dapat menyetel ulang tanda pemberitahuan untuk semua halaman pantauan pada daftar pantauan Anda.\n\nSistem pemberitahuan situs {{SITENAME}} Anda yang ramah\n\n--\nUntuk mengubah pengaturan pemberitahuan surel, kunjungi\n{{canonicalurl:{{#special:Preferences}}}}\n\nUntuk mengubah setelan daftar pantauan, kunjungi\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nUntuk menghapus halaman dari daftar pantauan, kunjungi\n$UNWATCHURL\n\nUmpan balik dan bantuan lebih lanjut:\n$HELPPAGE", + "enotif_minoredit": "Ini adalah suntingan kecil.", "created": "dibuat", "changed": "diubah", "deletepage": "Hapus halaman", @@ -2160,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}}", @@ -2279,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", @@ -2614,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.", @@ -2842,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", @@ -3478,7 +3517,7 @@ "fileduplicatesearch-noresults": "Tidak ditemukan berkas dengan nama \"$1\".", "specialpages": "Halaman istimewa", "specialpages-note-top": "Keterangan", - "specialpages-note": "* Halaman istimewa normal.\n* Halaman istimewa terbatas (hanya untuk pengurus).", + "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", @@ -3528,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\":", @@ -3595,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/inh.json b/languages/i18n/inh.json index 4feb7b84c0..1e87766cc3 100644 --- a/languages/i18n/inh.json +++ b/languages/i18n/inh.json @@ -153,13 +153,7 @@ "anontalk": "Дувца оттадар", "navigation": "Навигаци", "and": " а", - "qbfind": "Лахар", - "qbbrowse": "БIаргтохар", - "qbedit": "Нийсде", - "qbpageoptions": "ОагIон оттамаш", - "qbmyoptions": "Хьа гIирсаш тоаяраш", "faq": "КТХ", - "faqpage": "Project:КТХ", "actions": "Ардамаш", "namespaces": "ЦIерий аренаш", "variants": "Варианташ", @@ -184,29 +178,19 @@ "edit-local": "Хувца локальни йоазонца сурт оттадар", "create": "Хьакхолла", "create-local": "ТIатоха локальни йоазонца сурт оттадар", - "editthispage": "Нийсъе ер оагIув", - "create-this-page": "Хьакхолла ер оагӀув", "delete": "ДӀаяккха", - "deletethispage": "ДӀаяккха ер оагӀув", - "undeletethispage": "Юхаметтаоттае ер оагӀув", "undelete_short": "Юхаметтаоттде {{PLURAL:$1|$1 нийсдар|$1 нийсдараш}}", "viewdeleted_short": "{{PLURAL:$1|$1 дIадаьккха нийсдарга|дIадаьккха нийсдарга|$1 дIадаьккха нийсдарашга}} хьажар", "protect": "ГIо де", "protect_change": "хувца", - "protectthispage": "ГIо (лорадар) де укх оагIон", "unprotect": "ГIо хувца", - "unprotectthispage": "Укх оагIон гIо (лорадар) хувца", "newpage": "Керда оагӀув", - "talkpage": "Ер оагIув ювца", "talkpagelinktext": "дувца оттадар", "specialpage": "ГIулакха оагӀув", "personaltools": "Доакъашхочун гӀирсаш", - "articlepage": "БIаргтоха оагIонга", "talk": "Дувца оттадар", "views": "Хьажараш", "toolbox": "ГӀирсаш", - "userpage": "Доакъашхочун оагIон бIаргтоха", - "projectpage": "Проекта оагIон бIаргтоха", "imagepage": "Файла оагIон бIаргтоха", "mediawikipage": "Хьахьокха хоам бара оагIув", "templatepage": "Лера оагIон бIаргтоха", @@ -217,7 +201,7 @@ "redirectedfrom": "($1 дIа-сахьожаяьй укхаз)", "redirectpagesub": "ОагIув-дIа-сахьожадар", "redirectto": "ДIа-сахьожадар укхаза:", - "lastmodifiedat": "Укх оагIoн тIеххьара хувцам: $2, $1.", + "lastmodifiedat": "Ер оагIув тIеххьара хийца хиннай $2 $1 яьннача ха́на.", "viewcount": "Укх оагIонга хьежа хиннаб $1{{PLURAL:$1|-зза}}.", "protectedpage": "ГIо оттадаь лораяь оагIув", "jumpto": "Дехьавала укхаза:", @@ -301,6 +285,7 @@ "badtitle": "Мегаш йоаца цӀи", "badtitletext": "Езаш йола оагӀон цӀи нийса яц, яьсса я, е харцахь йоалаяй меттий юкъера цIи е интервики цӀи. Иштта, цӀера юкъе оттаде мегаш доаца хьаракаш нийсаденна хила мегаш да.", "viewsource": "Хьажар", + "viewsource-title": "Оагӏон $1 духхьара текстага хьажар", "actionthrottled": "Сухалах доазув дар", "protectedpagetext": "Ер оагIув лораяь я цу тIа хувцамаш е кхы дола ардамаш дергдоацаш.", "virus-unknownscanner": "йовзанза антивирус:", @@ -402,8 +387,10 @@ "newarticletext": "Шо тIахьожаяргаца дехьадаьннад йоаца оагӀон тӀа.\nИз хьакхолларгьйолаш кӀалхагӀа доала корачу текст Iочуязде (нагахьа санна кхетаде хала дале [$1 новкъосталара оагӀонга] хьажа).\nЦа ховш укхаза нийсденнадале, шоай браузера '''Юха''' (назад) тоIаер тӀа пӀелг тоӀабе.", "noarticletext": "ХIанза укх оагӀон тӀа текст яц.\nШун аьттув ба [[Special:Search/{{PAGENAME}}|цу тайпара цӀи хьоаяр кораде]] кхыйола оагIонаш тIа, иштта\n[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} тара дола тептарий дIаяздаьраш], е\n'''[{{fullurl:{{FULLPAGENAME}}|action=edit}} изза мо цӀи йолаш оагӀув хьакхолла]'''.", "noarticletext-nopermission": "ХIанз укх оагӀон тӀа текст яц.\nШун аьттув ба [[Special:Search/{{PAGENAME}}|цу тайпара цӀи белгалъяр хьалаха]] кхыйола оагIонаш тIа, иштта\n[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} тара дола тептарай дIаяздаьраш]. Ер оагӀув хьакхолла Хьа бокъо яц.", + "userpage-userdoesnotexist-view": "«$1» яха дагара йоазув дац.", "note": "'''Белгалдоахар:'''", "previewnote": "'''Теркам бе, ер хьалххе бIаргтохар мара бац.'''\nХьа хувцамаш хIанза а дIаяздаь дац!", + "continue-editing": "Хувцар кхы дIахо де", "editing": "Хувцам: $1", "creating": "«$1» оагIув хьакхоллар", "editingsection": "Хувцам: $1 (оагӀон дáкъа)", @@ -438,7 +425,7 @@ "page_first": "цхьоаллагIа", "page_last": "тӀехьара", "histlegend": "Версий хоржам: белгалъе шун вIаши йиста безам бола оагIон версеш, тIаккха тоIае '''{{int:compare-submit}}'''.
    \nКхетавар: '''({{int:cur}})''' — карара версеца дола башхалонаш; '''({{int:last}})''' — хьалха йоагIаш версеца дола башхалонаш; '''{{int:minoreditletter}}''' — зIамига хувцамаш.", - "history-fieldset-title": "Исторена бIаргтоха", + "history-fieldset-title": "Даь хинна хувцамаш лахар", "history-show-deleted": "Алхха дӀадаьккхараш", "histfirst": "эггара къаьнагIа", "histlast": "эггара кердагIа", @@ -467,6 +454,7 @@ "lineno": "МугI $1:", "compareselectedversions": "ВIаши йиста хержа версеш", "editundo": "юхадаккха", + "diff-empty": "(башхалонаш яц)", "diff-multi-sameuser": "({{PLURAL:$1|цхьа юкъ хулаш йола верси|$1 юкъ хулаш йола версеш}} гуш яц цу доакъашхочун)", "searchresults": "Лахар чакхдоалаш корадаьр", "searchresults-title": "«$1» лахар", @@ -477,7 +465,7 @@ "nextn-title": "{{PLURAL:$1|ТIадоагIа $1 яздар|ТIадоагIа $1 яздараш}}", "shown-title": "Гойта $1 {{PLURAL:$1|яздаьр|яздаьраш}} укх оáгIон тIа", "viewprevnext": "ДIахьажа ($1 {{int:pipe-separator}} $2) ($3)", - "searchmenu-exists": "Укх вики чу йолаш я оагӀув «[[:$1]]».", + "searchmenu-exists": "'''Укх вики чу йолаш я оагӀув «[[:$1]]».'''", "searchmenu-new": "Хьакхолла оагIув «[[:$1]]» укх вики-проекте!\n{{PLURAL:$2|0=|Иштта хьажа Iайха лийха оагIонга.|Иштта хьажа хьай лахара хьахиннарашка.}}", "searchprofile-articles": "Кертера оагIонаш", "searchprofile-images": "Мультимедиа", @@ -593,6 +581,7 @@ "rcshowhidebots-show": "Хьахьокха", "rcshowhidebots-hide": "Къайладаккха", "rcshowhideliu": "$1 бовзийтарчара доакъашхой", + "rcshowhideliu-show": "Хьахьокха", "rcshowhideliu-hide": "Къайлабаха", "rcshowhideanons": "$1 цIияккханза доакъашхой", "rcshowhideanons-show": "Хьахьокха", @@ -654,6 +643,7 @@ "nolinkstoimage": "Укх файла тIахьожавеш йола оагIонаш яц.", "sharedupload": "Ер файл $1 чура я, из пайда эцаш лелае мегаш я кхыйола проекташ чу.", "sharedupload-desc-here": "Ер файл $1 чура я, иштта кхыйола проекташ чу пайда эца аьттув болаш я.\nЦун [$2 сурт оттадара оагIон] хоам кIалхахь хьабоалабаьб.", + "filepage-nofile": "Ишта цӀи йола файл йоацаш я.", "uploadnewversion-linktext": "Чуяккха укх файла керда верси", "upload-disallowed-here": "Хьа бокъо яц ер файл юха дӀаязъе.", "filerevert-comment": "Бахьан:", @@ -685,6 +675,7 @@ "booksources-search-legend": "Джейнах лаьца хоам лахар", "booksources-search": "Хьалáха", "log": "Тептараш", + "logempty": "Укх оагӀон дӀаяздаьраш тептара чу дац.", "allpages": "Еррига оагIонаш", "prevpage": "Хьалха йоагIа оагIув ($1)", "allpagesfrom": "Гучаяккха оагIонаш йолалуш йола укхох:", @@ -948,6 +939,13 @@ "version-specialpages": "ГIулакха оагӀонаш", "version-version": "($1)", "version-software-version": "Верси", + "redirect-submit": "Дехьавала", + "redirect-lookup": "Лахар:", + "redirect-value": "Боарам:", + "redirect-user": "Доакъашхочун ID", + "redirect-page": "ОагӀон ID", + "redirect-revision": "ОагӀон верси", + "redirect-file": "Файла цӀи", "fileduplicatesearch-filename": "Файла цӀи:", "fileduplicatesearch-submit": "Хьалáха", "specialpages": "ЛаьрххIа йола оагIонаш", @@ -973,6 +971,7 @@ "htmlform-selectorother-other": "Кхыдар", "logentry-delete-delete": "$1 {{GENDER:$2|дIаяккхай}} оагIув $3", "logentry-move-move": "$1 {{GENDER:$2|цӀи хийцай}} $3 → $4", + "logentry-move-move-noredirect": "$1 {{GENDER:$2|цӀи хийцай}} $3 → $4 дӀа-сахьожадар ца дуташ.", "logentry-newusers-create": "{{GENDER:$2|Доакъашхочо хьакхеллад}} дагара йоазув $1", "logentry-upload-upload": "$1 {{GENDER:$2|чуяьккхай}} $3", "rightsnone": "(яц)", diff --git a/languages/i18n/is.json b/languages/i18n/is.json index 3b852926fb..662971027b 100644 --- a/languages/i18n/is.json +++ b/languages/i18n/is.json @@ -56,7 +56,7 @@ "tog-shownumberswatching": "Sýna fjölda vaktandi notenda", "tog-oldsig": "Núverandi undirskriftin þín:", "tog-fancysig": "Meðhöndla undirskrift sem wikitexta (án sjálfvirks tengils)", - "tog-uselivepreview": "Nota beina forskoðun", + "tog-uselivepreview": "Nota beina forskoðun án þess að endurhlaða síðuna", "tog-forceeditsummary": "Birta áminningu þegar breytingarágripið er tómt", "tog-watchlisthideown": "Ekki sýna mínar breytingar á vaktlistanum", "tog-watchlisthidebots": "Ekki sýna breytingar vélmenna á vaktlistanum", @@ -173,13 +173,7 @@ "anontalk": "Spjall", "navigation": "Flakk", "and": " og", - "qbfind": "Finna", - "qbbrowse": "Flakka", - "qbedit": "Breyta", - "qbpageoptions": "Þessi síða", - "qbmyoptions": "Mínar síður", "faq": "Algengar spurningar", - "faqpage": "Project:Algengar spurningar", "actions": "Aðgerðir", "namespaces": "Nafnrými", "variants": "Útgáfur", @@ -205,32 +199,22 @@ "edit-local": "Breyta staðbundinni lýsingu", "create": "Skapa", "create-local": "Bæta við staðbundinni lýsingu", - "editthispage": "Breyta þessari síðu", - "create-this-page": "Skapa þessari síðu", "delete": "Eyða", - "deletethispage": "Eyða þessari síðu", - "undeletethispage": "Endurvekja þessa síðu", "undelete_short": "Endurvekja {{PLURAL:$1|$1 breytingu|$1 breytingar}}", "viewdeleted_short": "Skoða $1 {{PLURAL:$1|eydda breytingu|eyddar breytingar}}", "protect": "Vernda", "protect_change": "breyta", - "protectthispage": "Vernda þessa síðu", "unprotect": "Afvernda", - "unprotectthispage": "Afvernda þessa síðu", "newpage": "Ný síða", - "talkpage": "Ræða um þessa síðu", "talkpagelinktext": "Spjall", "specialpage": "Kerfissíða", "personaltools": "Tenglar", - "articlepage": "Sýna núverandi síðu", "talk": "Spjall", "views": "Sýn", "toolbox": "Verkfæri", "tool-link-userrights": "Breyta {{GENDER:$1|notanda}} hópum", "tool-link-userrights-readonly": "Skoða {{GENDER:$1|notanda}} hópa", "tool-link-emailuser": "Senda þessum {{GENDER:$1|notanda}} tölvupóst", - "userpage": "Skoða notandasíðu", - "projectpage": "Skoða verkefnissíðu", "imagepage": "Skoða skráarsíðu", "mediawikipage": "Skoða skilaboðasíðu", "templatepage": "Skoða sniðmátasíðu", @@ -397,7 +381,7 @@ "filereadonlyerror": "Ekki var hægt að breyta skránni \"$1\" því skráin í skráarsafninu \"$2\" er engöngu hægt að lesa.\n\nKerfisstjórinn sem læsti skránni gaf þessa ástæðu: \"$3\".", "invalidtitle-knownnamespace": "Ógildur titill í nafnrými \"$2\" og með textann \"$3\"", "invalidtitle-unknownnamespace": "Ógildur titill með óþekkt nafnrými númer $1 og texta \"$2\"", - "exception-nologin": "Óinnskráð(ur)", + "exception-nologin": "Ekki skráð/ur inn", "exception-nologin-text": "Skráðu þig inn til þess að fá aðgang að þessari síðu eða aðgerð.", "exception-nologin-text-manual": "$1 til þess að fá aðgang að þessari síðu eða aðgerð.", "virus-badscanner": "Slæm stilling: óþekktur veiruskannari: $1", @@ -410,37 +394,42 @@ "welcomecreation-msg": "Aðgangurinn þinn hefur verið búinn til.\nEkki gleyma að breyta [[Special:Preferences|{{SITENAME}} stillingunum]] þínum.", "yourname": "Notandanafn:", "userlogin-yourname": "Notandanafn", - "userlogin-yourname-ph": "Skrifaðu inn notandanafnið þitt", - "createacct-another-username-ph": "Skrifaðu inn notandanafnið", + "userlogin-yourname-ph": "Settu inn notandanafnið þitt", + "createacct-another-username-ph": "Settu inn notandanafnið", "yourpassword": "Lykilorð:", "userlogin-yourpassword": "Lykilorð", - "userlogin-yourpassword-ph": "Skrifaðu niður lykilorðið þitt", - "createacct-yourpassword-ph": "Skrifaðu niður lykilorð", + "userlogin-yourpassword-ph": "Settu inn lykilorðið þitt", + "createacct-yourpassword-ph": "Settu inn lykilorð", "yourpasswordagain": "Endurrita lykilorð:", "createacct-yourpasswordagain": "Staðfestu lykilorðið", "createacct-yourpasswordagain-ph": "Sláðu inn lykilorðið aftur", "userlogin-remembermypassword": "Muna innskráningu mína", "userlogin-signwithsecure": "Nota örugga tengingu", + "cannotlogin-title": "Get ekki skráð inn", + "cannotlogin-text": "Innskráning er ekki möguleg.", "cannotloginnow-title": "Get ekki skráð inn núna", "cannotloginnow-text": "Innskráning er ekki möguleg þegar verið er að nota $1.", + "cannotcreateaccount-title": "Ekki hægt að búa til aðganga", "yourdomainname": "Þitt lén:", "password-change-forbidden": "Þú getur ekki breytt lykilorðum á þessum wiki.", "externaldberror": "Uppfærsla mistókst. Annaðhvort varð villa í gagnasafninu eða að þér sé óheimilt að uppfæra aðra aðganga.", - "login": "Innskrá", - "nav-login-createaccount": "Innskrá / Búa til aðgang", + "login": "Skrá inn", + "login-security": "Sannreyndu auðkennin þín", + "nav-login-createaccount": "Skrá inn / Búa til aðgang", "logout": "Útskráning", "userlogout": "Útskrá", - "notloggedin": "Ekki innskráð(ur)", - "userlogin-noaccount": "Áttu ekki aðgang?", + "notloggedin": "Ekki skráð/ur inn", + "userlogin-noaccount": "Ertu ekki með aðgang?", "userlogin-joinproject": "Sameina {{SITENAME}}", "createaccount": "Nýskrá", - "userlogin-resetpassword-link": "Gleymdiru lykilorðinu þínu?", + "userlogin-resetpassword-link": "Gleymdirðu lykilorðinu þínu?", "userlogin-helplink2": "Hjálp við innskráningu", "userlogin-loggedin": "Þú ert búin(n) að skrá þig inn sem {{GENDER:$1|$1}}.\nNotaðu eyðablaðið fyrir neðan til að skrá þig inn sem annar notandi.", + "userlogin-reauth": "Þú verður að skrá þig aftur inn til að sannreyna að þú sért {{GENDER:$1|$1}}.", "userlogin-createanother": "Stofna annan aðgang", "createacct-emailrequired": "Netfang", "createacct-emailoptional": "Netfang (valfrjálst)", - "createacct-email-ph": "Skrifaðu niður netfangið þitt", + "createacct-email-ph": "Settu inn netfangið þitt", "createacct-another-email-ph": "Skrifaðu netfang", "createaccountmail": "Nota handahófsvalið bráðabirgðalykilorð og senda það á netfangið sem er tilgreint hér fyrir neðan", "createacct-realname": "Raunverulegt nafn (valfrjálst)", @@ -448,6 +437,8 @@ "createacct-reason-ph": "Afhverju ertu að búa til annan aðgang", "createacct-submit": "Búa til aðganginn", "createacct-another-submit": "Stofna aðgang", + "createacct-continue-submit": "Halda áfram við að búa til aðgang", + "createacct-another-continue-submit": "Halda áfram við að búa til aðgang", "createacct-benefit-heading": "{{SITENAME}} er skrifuð af fólki eins og þér.", "createacct-benefit-body1": "{{PLURAL:$1|breyting|breytingar}}", "createacct-benefit-body2": "{{PLURAL:$1|síða|síður}}", @@ -495,7 +486,7 @@ "emaildisabled": "Þessi síða getur ekki sent tölvupóst.", "accountcreated": "Aðgangur búinn til", "accountcreatedtext": "Notandaaðgangurinn fyrir [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|spjall]]) hefur verið búinn til.", - "createaccount-title": "Innskráningagerð á {{SITENAME}}", + "createaccount-title": "Gerð notandaaðgangs á {{SITENAME}}", "createaccount-text": "Einhver bjó til aðgang fyrir netfangið þitt á {{SITENAME}} ($4) undir nafninu „$2“, með lykilorðið „$3“.\nÞú ættir að skrá þig inn og breyta lykilorðinu núna.\n\nÞú getur hunsað þessi skilaboð, ef villa hefur átt sér stað.", "login-throttled": "Þér hefur of oft mistekist að skrá þig inn með þessu notandanafni.\nBíddu $1 áður en þú reynir aftur.", "login-abort-generic": "Innskráningin misheppnaðist - hætt var við hana.", @@ -503,8 +494,9 @@ "loginlanguagelabel": "Tungumál: $1", "suspicious-userlogout": "Beiðni um útskráningu hafnað því hún var líklegast send frá biluðum vafra eða vefseli sem hefur vistað vefsíðuna í flýtiminni.", "createacct-another-realname-tip": "Alvöru nafn er valfrjálst. Ef þú kýst að gefa það upp, verður það notað til að gefa þér heiður af verkum þínum.", - "pt-login": "Innskrá", - "pt-login-button": "Innskrá", + "pt-login": "Skrá inn", + "pt-login-button": "Skrá inn", + "pt-login-continue-button": "Halda áfram við að skrá þig inn", "pt-createaccount": "Stofna aðgang", "pt-userlogout": "Útskrá", "php-mail-error-unknown": "Óþekkt villa í PHP mail() aðgerð.", @@ -527,6 +519,7 @@ "botpasswords-label-delete": "Eyða", "botpasswords-label-resetpassword": "Endurstilla lykilorðið", "resetpass_forbidden": "Ekki er hægt að breyta lykilorðum", + "resetpass_forbidden-reason": "Ekki er hægt að breyta lykilorðum: $1", "resetpass-no-info": "Þú verður að vera skráð(ur) inn til að hafa aðgang að þessari síðu.", "resetpass-submit-loggedin": "Breyta lykilorði", "resetpass-submit-cancel": "Hætta við", @@ -548,6 +541,7 @@ "passwordreset-emailelement": "Notandanafn: \n$1\n\nBráðabirgðalykilorð: \n$2", "passwordreset-emailsentemail": "Ef þetta netfang er skráð fyrir aðganginum þínum þá hefur töluvpóstur verið sendur til að endursetja lykilorðið.", "passwordreset-emailsentusername": "Ef eitthvað netfang er skráð fyrir aðganginum þínum, þá mun verða sendur töluvpóstur til að endursetja lykilorðið.", + "passwordreset-invalidemail": "Ógilt tölvupóstfang", "changeemail": "Breyta eða fjarlægja netfang", "changeemail-header": "Fylltu út þetta eyðublað til að breyta netfanginu þínu. Ef þú vilt fjarlægja tengingu allra netfanga frá aðganginum þínum skildu þá netfangs reitinn eftir tóman.", "changeemail-no-info": "Þú verður að vera skráð(ur) inn til að hafa aðgang að þessari síðu.", @@ -596,12 +590,12 @@ "showdiff": "Sýna breytingar", "blankarticle": "Viðvörun: Síðan sem þú ert að búa til er tóm.\nEf þú smellir aftur á \"$1\", verður síðan búin til án innihalds.", "anoneditwarning": "Viðvörun: Þú ert ekki innskráð(ur). Vistfang þitt verður sýnt opinberlega ef þú gerir einhverjar breytingar. Ef þú [$1 skráir þig inn] eða [$2 stofnar aðgang] munu breytingarnar þínar vera tengdar við notandanafn þitt, ásamt öðrum kostum.", - "anonpreviewwarning": "Þú ert ekki innskráð(ur). Vistfang þitt skráist í breytingaskrá síðunnar.", + "anonpreviewwarning": "Þú ert ekki skráð(ur) inn. Vistfang þitt skráist í breytingaskrá síðunnar.", "missingsummary": "'''Áminning:''' Þú hefur ekki skrifað breytingarágrip.\nEf þú smellir á Vista aftur, verður breyting þín vistuð án þess.", "missingcommenttext": "Gerðu svo vel og skrifaðu athugasemd fyrir neðan.", "missingcommentheader": "Áminning: Þú hefur ekki gefið upp umræðuefni.\nEf þú smellir á \"$1\" aftur, verður breyting þín vistuð án þess.", "summary-preview": "Forskoða breytingarágrip:", - "subject-preview": "Forskoðun umræðuefnis:", + "subject-preview": "Forskoðun viðfangsefnis:", "blockedtitle": "Notandi er bannaður", "blockedtext": "'''Notandanafn þitt eða vistfang hefur verið bannað.'''\n\nBannið var sett af $1.\nÁstæðan er eftirfarandi: ''$2''.\n\n* Bannið hófst: $8\n* Banninu lýkur: $6\n* Sá sem banna átti: $7\n\nÞú getur haft samband við $1 eða annan [[{{MediaWiki:Grouppage-sysop}}|stjórnanda]] til að ræða bannið.\nÞú getur ekki notað „Senda þessum notanda tölvupóst“ aðgerðina nema gilt netfang sé skráð í [[Special:Preferences|kjörstillingum þínum]] og að þér hafi ekki verið óheimilað það.\nNúverandi vistfang þitt er $3, og bannnúmerið er #$5.\nHafðu með allar þessar upplýsingar hér fyrir ofan í fyrirspurnum þínum.", "autoblockedtext": "Vistfang þitt hefur verið sjálfvirkt bannað því það var notað af öðrum notanda, sem var bannaður af $1.\nÁstæðan er eftirfarandi:\n\n:''$2''\n\n* Bannið hófst: $8\n* Banninu lýkur: $6\n* Sá sem banna átti: $7\n\nÞú getur haft samband við $1 eða annan [[{{MediaWiki:Grouppage-sysop}}|stjórnanda]] til að ræða bannið.\n\nAthugaðu að þú getur ekki notað „Senda þessum notanda tölvupóst“ aðgerðina nema gilt netfang sé skráð í [[Special:Preferences|kjörstillingum þínum]] og að þér hafi ekki verið óheimilað það.\n\nNúverandi vistfang þitt er $3, og bannnúmerið er #$5.\nHafðu með allar þessar upplýsingar hér fyrir ofan í fyrirspurnum þínum.", @@ -611,7 +605,7 @@ "nosuchsectiontitle": "Hluti ekki til", "nosuchsectiontext": "Þú reyndir að breyta hluta sem er ekki til.\nHlutinn gæti hafa verið fluttur til eða hent á meðan þú varst að skoða síðuna.", "loginreqtitle": "Innskráningar krafist", - "loginreqlink": "innskrá", + "loginreqlink": "skrá inn", "loginreqpagetext": "Þú þarft að $1 þig til að geta séð aðrar síður.", "accmailtitle": "Lykilorð sent.", "accmailtext": "Lykilorðið fyrir [[User talk:$1|$1]] hefur verið sent á $2. Hægt er að breyta því á síðunni ''[[Special:ChangePassword|breyta lykilorði]]'' þegar notandinn hefur skráð sig inn.", @@ -658,7 +652,7 @@ "readonlywarning": "AÐVÖRUN: Gagnagrunninum hefur verið læst til að unnt sé að framkvæma viðhaldsaðgerðir, svo þú getur ekki vistað breytingar þínar núna.\nÞú ættir að klippa og líma textann yfir í textaskjal til þess að geyma hann til seinni tíma.\n\nKerfisstjórinn sem læsti honum gaf þessa skýringu: $1", "protectedpagewarning": "'''Viðvörun: Þessari síðu hefur verið læst svo aðeins notendur með möppudýraréttindi geti breytt henni.'''\nSíðasta færsla síðunnar úr verndunarskrá er sýnd til skýringar:", "semiprotectedpagewarning": "'''Athugið''': Þessari síðu hefur verið læst þannig að aðeins innskráðir notendur geti breytt henni.\nSíðasta færsla síðunnar úr verndunarskrá er sýnd til skýringar:", - "cascadeprotectedwarning": "Viðvörun: Þessari síðu hefur verið læst svo aðeins möppudýr geta breytt henni, því hún er ítengd keðjuvörn eftirfarandi {{PLURAL:$1|síðu|síðna}}:", + "cascadeprotectedwarning": "Viðvörun: Þessari síðu hefur verið læst þannig að aðeins notendur með [[Special:ListGroupRights|sérstök réttindi]] geta breytt henni, því hún er ítengd keðjuvörn eftirfarandi {{PLURAL:$1|síðu|síðna}}:", "titleprotectedwarning": "''VIÐVÖRUN: Þessari síðu hefur verið læst svo aðeins [[Special:ListGroupRights|sérstakir notendur]] geta breytt henni.'''\nVerndunarskrá síðunnar er gefin fyrir neðan til tilvísunar.", "templatesused": "Sniðmát {{PLURAL:$1|notað|notuð}} á þessari síðu:", "templatesusedpreview": "Sniðmát {{PLURAL:$1|notað|notuð}} í forskoðuninni:", @@ -676,8 +670,8 @@ "permissionserrorstext": "Þú hefur ekki leyfi til að gera þetta, af eftirfarandi {{PLURAL:$1|ástæðu|ástæðum}}:", "permissionserrorstext-withaction": "Þú hefur ekki réttindi til að $2, af eftirfarandi {{PLURAL:$1|ástæðu|ástæðum}}:", "recreate-moveddeleted-warn": "'''Viðvörun: Þú ert að endurskapa síðu sem áður hefur verið eytt.'''\n\nAthuga skal hvort viðeigandi sé að gera þessa síðu.\nEyðingarskrá og flutningaskrá fyrir þessa síðu eru útvegaðar hér til þæginda:", - "moveddeleted-notice": "Þessari síðu hefur verið eytt.\nEyðingaskrá og flutningaskrá síðunnar eru gefnar fyrir neðan til tilvísunar.", - "moveddeleted-notice-recent": "Því miður var þessari síðu eytt nýlega (innan síðustu 24 tímana).\nEyðingar og færsluskráin fyrir síðuna eru gefnar hér fyrir neðan til glöggvunar.", + "moveddeleted-notice": "Þessari síðu hefur verið eytt.\nEyðinga-, verndunar- og flutningaskrá síðunnar eru gefnar fyrir neðan til tilvísunar.", + "moveddeleted-notice-recent": "Því miður var þessari síðu eytt nýlega (innan síðustu 24 klst).\nEyðingar-, verndunar- og færsluskrár fyrir síðuna eru gefnar hér fyrir neðan til glöggvunar.", "log-fulllog": "Skoða alla aðgerðaskrána", "edit-hook-aborted": "Breyting síðu stöðvuð af viðbótarkrók (extension hook).\nEngin skýring gefin.", "edit-gone-missing": "Gat ekki uppfært síðu.\nSvo virðist sem henni hafi verið eytt.", @@ -883,9 +877,10 @@ "search-file-match": "(passar við innihald skráa)", "search-suggest": "Varstu að leita að: $1", "search-rewritten": "Sýni niðurstöður $1. Leita í staðinn að $2.", - "search-interwiki-caption": "Systurverkefni", + "search-interwiki-caption": "Niðurstöður úr systurverkefnum", "search-interwiki-default": "Útkomur frá $1:", "search-interwiki-more": "(fleiri)", + "search-interwiki-more-results": "fleiri niðurstöður", "search-relatedarticle": "Tengt", "searchrelated": "tengt", "searchall": "öllum", @@ -903,6 +898,7 @@ "search-external": "Ytri leit", "searchdisabled": "{{SITENAME}}-leit er óvirk.\nÞú getur leitað í genum Google á meðan.\nAthugaðu að skrár þeirra yfir {{SITENAME}}-efni kunna að vera úreltar.", "search-error": "Villa kom upp við leit að: $1", + "search-warning": "Aðvörun kom upp við leit: $1", "preferences": "Kjörstillingar", "mypreferences": "Kjörstillingar", "prefs-edits": "Fjöldi breytinga:", @@ -922,7 +918,7 @@ "prefs-editwatchlist-clear": "Hreinsa vaktlista", "prefs-watchlist-days": "Fjöldi daga sem vaktlistinn nær yfir:", "prefs-watchlist-days-max": "Hámark $1 {{PLURAL:$1|dagur|dagar}}", - "prefs-watchlist-edits": "Fjöldi breytinga sem vaktlistinn nær yfir:", + "prefs-watchlist-edits": "Hámarksfjöldi breytinga sem birta skal í vaktlista:", "prefs-watchlist-edits-max": "Hámarkstala: 1000", "prefs-watchlist-token": "Tóki vaktlistans:", "prefs-misc": "Aðrar stillingar", @@ -974,6 +970,7 @@ "username": "{{Gender:$1|Notandanafn}}:", "prefs-memberingroups": "{{GENDER:$2|Meðlimur}} {{PLURAL:$1|hóps|hópa}}:", "prefs-memberingroups-type": "$1", + "group-membership-link-with-expiry": "$1 (til $2)", "prefs-registration": "Skráningartími:", "prefs-registration-date-time": "$1", "yourrealname": "Fullt nafn:", @@ -1012,23 +1009,30 @@ "prefs-diffs": "Breytingar", "prefs-help-prefershttps": "Þessi stilling tekur gildi í næsta skiptið sem þú skráir þig inn.", "prefswarning-warning": "Þú hefur gert breytingar á kjörstillingum þínum sem ekki er búið að vista.\nEf þú ferð af þessari síðu án þess að smella á \"$1\" verða kjörstillingar þínar ekki uppfærðar.", - "userrights": "Breyta notandaréttindum", + "userrights": "Notandaréttindi", "userrights-lookup-user": "Velja notanda", "userrights-user-editname": "Skráðu notandanafn:", "editusergroup": "Hlaða inn notanda hópum", "editinguser": "Breyti réttindum {{GENDER:$1|notandans}} [[User:$1|$1]] $2", - "userrights-editusergroup": "Breyta notandahópum", + "userrights-editusergroup": "Breyta hópum {{GENDER:$1|notanda}}", + "userrights-viewusergroup": "Skoða hópa {{GENDER:$1|notanda}}", "saveusergroups": "Vista {{GENDER:$1|notanda}} hópa", "userrights-groupsmember": "Meðlimur:", "userrights-groupsmember-auto": "Sjálfvirkt bætt við sem meðlimur í:", "userrights-groupsmember-type": "$1", - "userrights-groups-help": "Þú getur breytt hópunum sem að þessi notandi er í.\n* Valinn reitur þýðir að notandinn er í hópnum.\n* Óvalinn reitur þýðir að notandinn er ekki í hópnum.\n* Stjarnan (*) þýðir að þú getur ekki fært hópinn eftir að þú hefur breytt honum, eða öfugt.", + "userrights-groups-help": "Þú getur breytt hópunum sem að þessi notandi er í.\n* Valinn reitur þýðir að notandinn er í hópnum.\n* Óvalinn reitur þýðir að notandinn er ekki í hópnum.\n* Stjarnan (*) þýðir að þú getur ekki fært hópinn eftir að þú hefur breytt honum, eða öfugt.\n* Myllumerki (#) þýðir að þú getur flutt til baka úreldingartíma á þátttöku í þessum hópi; þú getur ekki lengt hann.", "userrights-reason": "Ástæða:", "userrights-no-interwiki": "Þú hefur ekki leyfi til að breyta notandaréttindum á öðrum wiki-síðum.", "userrights-nodatabase": "Gagnagrunnurinn $1 er ekki til eða ekki staðbundinn.", "userrights-changeable-col": "Hópar sem þú getur breytt", "userrights-unchangeable-col": "Hópar sem þú getur ekki breytt", "userrights-irreversible-marker": "$1*", + "userrights-expiry-current": "Rennur út $1", + "userrights-expiry-none": "Rennur ekki út", + "userrights-expiry": "Rennur út:", + "userrights-expiry-existing": "Núverandi gildislok: $3, $2", + "userrights-expiry-othertime": "Annar tími:", + "userrights-expiry-options": "1 dagur:1 dagur,1 vika:1 vika,1 mánuður:1 mánuður,3 mánuðir:3 mánuðir,6 mánuðir:6 mánuðir,1 ár:1 ár", "userrights-conflict": "Árekstur í að breyta notandaréttindum! Skoðaðu þetta aftur og staðfestu breytingar þínar.", "group": "Hópur:", "group-user": "Notendur", @@ -1208,6 +1212,51 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (sjá einng [[Special:NewPages|lista yfir nýjar síður]])", "recentchanges-legend-plusminus": "(±123)", "recentchanges-submit": "Sýna", + "rcfilters-tag-remove": "Fjarlægja '$1'", + "rcfilters-legend-heading": "Listi yfir styttingar", + "rcfilters-grouping-title": "Hópun", + "rcfilters-activefilters": "Virkar síur", + "rcfilters-advancedfilters": "Ítarlegar síur", + "rcfilters-limit-title": "Breytingar sem á að sýna", + "rcfilters-limit-shownum": "Birta síðustu {{PLURAL:$1|breytingu|$1 breytingar}}", + "rcfilters-days-title": "Síðustu daga", + "rcfilters-hours-title": "Síðustu klukkutíma", + "rcfilters-days-show-days": "$1 {{PLURAL:$1|dag|daga}}", + "rcfilters-days-show-hours": "$1 {{PLURAL:$1|klukkustund|klukkustundir}}", + "rcfilters-highlighted-filters-list": "Áherslulitað: $1", + "rcfilters-quickfilters": "Vistaðar síur", + "rcfilters-savedqueries-defaultlabel": "Vistaðar síur", + "rcfilters-savedqueries-rename": "Endurnefna", + "rcfilters-savedqueries-setdefault": "Setja sem sjálfgefið", + "rcfilters-savedqueries-unsetdefault": "Fjarlægja sjálfgefið", + "rcfilters-savedqueries-remove": "Fjarlægja", + "rcfilters-savedqueries-new-name-label": "Heiti", + "rcfilters-savedqueries-new-name-placeholder": "Lýstu markmiði síunnar", + "rcfilters-savedqueries-apply-label": "Búa til síu", + "rcfilters-savedqueries-apply-and-setdefault-label": "Búa til sjálfgefna síu", + "rcfilters-savedqueries-cancel-label": "Hætta við", + "rcfilters-clear-all-filters": "Hreinsa allar síur", + "rcfilters-show-new-changes": "Skoða nýjustu breytingarnar", + "rcfilters-filterlist-title": "Síur", + "rcfilters-highlightbutton-title": "Áherslulita niðurstöður", + "rcfilters-highlightmenu-title": "Veldu lit", + "rcfilters-filter-editsbyself-label": "Breytingar eftir þig", + "rcfilters-filter-editsbyself-description": "Þín eigin framlög.", + "rcfilters-filter-editsbyother-label": "Breytingar eftir aðra", + "rcfilters-filter-editsbyother-description": "Allir breytingar nema þínar eigin.", + "rcfilters-filtergroup-userExpLevel": "Skráning notanda og reynsla", + "rcfilters-filter-user-experience-level-registered-label": "Skráð/ur", + "rcfilters-filter-user-experience-level-unregistered-label": "Óskráður", + "rcfilters-filter-user-experience-level-newcomer-label": "Byrjendur", + "rcfilters-filter-user-experience-level-learner-label": "Námshestar", + "rcfilters-filter-user-experience-level-experienced-label": "Vanir notendur", + "rcfilters-filtergroup-automated": "Sjálfvirk framlög", + "rcfilters-filter-bots-label": "Vélmenni", + "rcfilters-filter-humans-label": "Manneskja (ekki vélmenni)", + "rcfilters-filtergroup-reviewstatus": "Staða yfirferðar", + "rcfilters-filter-patrolled-label": "Vaktað", + "rcfilters-filter-minor-label": "Minniháttar breytingar", + "rcfilters-filter-watchlist-watched-label": "Á vaktlista", "rcnotefrom": "Að neðan {{PLURAL:$5|er breyting síðan|eru breytingar síðan}} $3, $4 (allt að $1 sýndar).", "rclistfrom": "Sýna breytingar frá og með $3 $2", "rcshowhideminor": "$1 minniháttar breytingar", @@ -1219,7 +1268,7 @@ "rcshowhideliu": "$1 skráða notendur", "rcshowhideliu-show": "Sýna", "rcshowhideliu-hide": "Fela", - "rcshowhideanons": "$1 óinnskráða notendur", + "rcshowhideanons": "$1 nafnlausa notendur", "rcshowhideanons-show": "Sýna", "rcshowhideanons-hide": "Fela", "rcshowhidepatr": "$1 vaktaðar breytingar", @@ -1265,7 +1314,7 @@ "uploadbtn": "Hlaða inn skrá", "reuploaddesc": "Hætta við og fara aftur á innhleðsluformið.", "upload-tryagain": "Sendu breytta myndlýsingu", - "uploadnologin": "Óinnskráð(ur)", + "uploadnologin": "Ekki skráð/ur inn", "uploadnologintext": "Þú verður $1 til að hlaða inn skrám.", "upload_directory_missing": "Innhleðslumappan ($1) er týnd og vefþjónninn gat ekki búið hana til.", "upload_directory_read_only": "Mistókst að skrifa í innhleðslumöppu ($1) á vefþjóninum.", @@ -1353,6 +1402,7 @@ "upload-copy-upload-invalid-domain": "Lokað er fyrir afritun skráa frá öðrum vefþjónum á þessu vefsvæði.", "upload-dialog-title": "Hlaða inn skrá", "upload-dialog-button-cancel": "Hætta við", + "upload-dialog-button-back": "Til baka", "upload-dialog-button-done": "Lokið", "upload-dialog-button-save": "Vista", "upload-dialog-button-upload": "Hlaða inn", @@ -1420,6 +1470,7 @@ "uploadstash-badtoken": "Þessi aðgerð misheppnaðist, kannski hafa réttindi þín til breytinga runnið út.\nReyndu aftur.", "uploadstash-errclear": "Tæming listans mistókst.", "uploadstash-refresh": "Endurhlaða listann", + "uploadstash-thumbnail": "skoða smámynd", "invalid-chunk-offset": "Ógild raðbreyting bunka", "img-auth-accessdenied": "Aðgangur óheimill", "img-auth-nopathinfo": "PATH_INFO vantar.\nBiðlarinn þínn er ekki stilltur til að gefa upp þessar upplýsingar.\nÞær mega vera CGI-byggðar og mega ekki styðja img_auth.\nhttps://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization", @@ -1687,6 +1738,8 @@ "apisandbox-submit-invalid-fields-title": "Sumir reitir eru ógildir", "apisandbox-results": "Niðurstöður", "apisandbox-alert-field": "Gildi þessa reits er ekki leyfilegt.", + "apisandbox-continue": "Halda áfram", + "apisandbox-continue-clear": "Hreinsa", "booksources": "Bókaleit", "booksources-search-legend": "Leita að bókaheimildum", "booksources-isbn": "ISBN:", @@ -1772,7 +1825,7 @@ "trackingcategories-nodesc": "Enginn lýsing tiltæk.", "trackingcategories-disabled": "Flokkurinn er óvirkur", "mailnologin": "Ekkert netfang til að senda á", - "mailnologintext": "Þú verður að vera [[Special:UserLogin|innskráð(ur)]] auk þess að hafa gilt netfang í [[Special:Preferences|stillingunum]] þínum til að senda tölvupóst til annara notenda.", + "mailnologintext": "Þú verður að vera [[Special:UserLogin|skráð(ur) inn]] auk þess að hafa gilt netfang í [[Special:Preferences|stillingunum]] þínum til að senda tölvupóst til annara notenda.", "emailuser": "Senda þessum notanda tölvupóst", "emailuser-title-target": "Sendu þessum {{GENDER:$1|notanda}} tölvupóst", "emailuser-title-notarget": "Senda tölvupóst", @@ -1797,7 +1850,7 @@ "emailccsubject": "Afrit af skilaboðinu þínu til $1: $2", "emailsent": "Sending tókst", "emailsenttext": "Skilaboðin þín hafa verið send.", - "emailuserfooter": "Þessi tölvupóstur var {{GENDER:$1|sendur}} af $1 til {{GENDER:$2|$2}} með möguleikanum \"{{int:emailuser}}\" á {{SITENAME}}. Netfangið {{GENDER:$2|þitt}} verður sent {{GENDER:$1|upphaflega sendandanum}}, sem uppljóstrar netfangi {{GENDER:$2|þínu}} til hans.", + "emailuserfooter": "Þessi tölvupóstur var {{GENDER:$1|sendur}} af $1 til {{GENDER:$2|$2}} með möguleikanum \"{{int:emailuser}}\" á {{SITENAME}}.Ef {{GENDER:$2|þú}} svarar þessum pósti, verður netfangið {{GENDER:$2|þitt}} sent {{GENDER:$1|upphaflega sendandanum}}, sem uppljóstrar netfangi {{GENDER:$2|þínu}} til {{GENDER:$1|þeirra}}.", "usermessage-summary": "Skil eftir kerfismeldingu.", "usermessage-editor": "Skilaboðakerfi", "watchlist": "Vaktlistinn", @@ -1805,7 +1858,7 @@ "watchlistfor2": "Eftir $1 $2", "nowatchlist": "Vaktlistinn er tómur.", "watchlistanontext": "Skráðu þig til að skoða eða breyta hlutum á vaktlistanum þínum.", - "watchnologin": "Óinnskráð(ur)", + "watchnologin": "Ekki skráð/ur inn", "addwatch": "Bæta á vaktlistann", "addedwatchtext": "Síðunni „[[:$1]]“ og spjallsíðu hennar hafa verið bætt á [[Special:Watchlist|vaktlistann]] þinn.", "addedwatchtext-short": "Síðunni \"$1\" hefur verið bætt við á vaktlistann þinn.", @@ -1818,7 +1871,7 @@ "unwatchthispage": "Hætta vöktun", "notanarticle": "Ekki efnisleg síða", "notvisiblerev": "Síðasta breyting eftir annan notanda hefur verið eytt.", - "watchlist-details": "{{PLURAL:$1|$1 síða|$1 síður}} á vaktlistanum þínum, fyrir utan spjallsíður.", + "watchlist-details": "{{PLURAL:$1|$1 síða|$1 síður}} á vaktlistanum þínum (fyrir utan spjallsíður).", "wlheader-enotif": "Tilkynning með tölvupósti er virk.", "wlheader-showupdated": "Síðum sem hefur verið breytt síðan þú skoðaðir þær síðast eru '''feitletraðar'''.", "wlnote": "Hér fyrir neðan {{PLURAL:$1|er síðasta $1 breyting|eru síðustu $1 breytingar}} {{PLURAL:$2|síðasta $2 klukkutímann|síðustu $2 klukkutímana}}, frá $3, $4.", @@ -1849,10 +1902,11 @@ "enotif_body_intro_moved": "Síðan „$1” sem þú hefur beðið um að fylgjast með á {{SITENAME}} hefur verið færð $PAGEEDITDATE af {{gender:$2|$2}}. Þetta er tengill á síðuna: $3.", "enotif_body_intro_restored": "Síðan „$1” sem þú hefur beðið um að fylgjast með á {{SITENAME}} hefur verið endurvakin $PAGEEDITDATE af {{gender:$2|$2}}. Þetta er tengill á síðuna: $3.", "enotif_body_intro_changed": "Síðan „$1” sem þú hefur beðið um að fylgjast með á {{SITENAME}} hefur verið breytt $PAGEEDITDATE af {{gender:$2|$2}}. Þetta er tengill á síðuna: $3.", - "enotif_lastvisited": "Heimsóttu eftirfarandi tengil til að sjá allar breytingar síðan \nþú heimsóttir síðuna síðast:\n $1", - "enotif_lastdiff": "Einnig getur þú heimsótt eftirfarandi tengil til að skoða þessa breytingu:\n $1", + "enotif_lastvisited": "Til að sjá allar breytingar síðan þú heimsóttir síðuna síðast, skoðaðu $1", + "enotif_lastdiff": "Til að sjá þessa breytingu, skoðaðu $1", "enotif_anon_editor": "ónefndum notanda $1", "enotif_body": "Kæri $WATCHINGUSERNAME,\n\n$PAGEINTRO\n$NEWPAGE\n\n$PAGEEDITOR skildi eftir eftirfarandi breytingarágrip: $PAGESUMMARY $PAGEMINOREDIT\n\nTil þess að hafa samband við $PAGEEDITOR, smelltu á $PAGEEDITOR_WIKI eða sentu tölvupóst á $PAGEEDITOR_EMAIL\n\nAthugaðu að frekari aðgerðir á $PAGETITLE leiða\nekki af sér fleiri tilkynningar fyrr en þú hefur heimsótt síðuna á meðan þú ert skráð/ur inn. Þú getur einnig endursett tilkynningar fyrir allar þær síður sem þú fylgist með.\n\nKveðja,\n{{SITENAME}}\n\n--\n\nTil þess að breyta stillingum um hvenær þú færð sendar tilkynningar, smelltu á:\n\n{{canonicalurl:{{#special:Preferences}}}}\n\n\nTil þess að hætta að fylgjast með „$PAGETITLE”, smelltu á:\n\n$UNWATCHURL\n\nFrekari hjálp er að finna á $HELPPAGE.", + "enotif_minoredit": "Þetta er minniháttar breyting", "created": "búin til", "changed": "breytt", "deletepage": "Eyða", @@ -1890,11 +1944,12 @@ "editcomment": "Beytingaágripið var: $1.", "revertpage": "Tók aftur breytingar [[Special:Contributions/$2|$2]] ([[User talk:$2|spjall]]), breytt til síðustu útgáfu [[User:$1|$1]]", "revertpage-nouser": "Tók aftur breytingar falins notanda til síðustu útgáfu {{GENDER:$1|[[User:$1|$1]]}}", - "rollback-success": "Tók til baka breytingar eftir $1; núverandi $2.", + "rollback-success": "Tók til baka breytingar eftir {{GENDER:$3|$1}};\nsetti yfir á síðustu útgáfu eftir {{GENDER:$4|$2}}.", "sessionfailure-title": "Mistök í setu", - "sessionfailure": "Líklega er vandamál með innskráningar setuna þína;\nhætt hefur verið við þessa aðgerð sem vörn gegn mögulegu samskiptaráni setunar.\nFarðu aftur á fyrri síðu, endurhladdu hana og reyndu aftur.", + "sessionfailure": "Líklega er vandamál með innskráningarsetuna þína;\nhætt hefur verið við þessa aðgerð sem vörn gegn mögulegu samskiptaráni setunar.\nFarðu aftur á fyrri síðu, endurhladdu hana og reyndu aftur.", "changecontentmodel-title-label": "Titill síðu", "changecontentmodel-reason-label": "Ástæða:", + "changecontentmodel-submit": "Breyta", "logentry-contentmodel-change-revertlink": "taka aftur", "logentry-contentmodel-change-revert": "taka aftur", "protectlogpage": "Verndunarskrá", @@ -2016,7 +2071,7 @@ "sp-contributions-uploads": "innsendingar", "sp-contributions-logs": "aðgerðaskrá", "sp-contributions-talk": "spjall", - "sp-contributions-userrights": "Breyta notandaréttindum", + "sp-contributions-userrights": "Breyta {{GENDER:$1|notandaréttindum}}", "sp-contributions-blocked-notice": "Þessi notandi er í banni.\nSíðasta færsla notandans úr bannskrá er sýnd hér fyrir neðan til skýringar:", "sp-contributions-blocked-notice-anon": "Þetta vistfang er í banni.\nSíðasta færsla vistfangsins úr bannskrá er sýnd hér fyrir neðan til skýringar:", "sp-contributions-search": "Leita að framlögum", @@ -2052,7 +2107,7 @@ "ipbexpiry": "Bannið rennur út:", "ipbreason": "Ástæða:", "ipbreason-dropdown": "* Algengar bannástæður\n** Setur inn rangar upplýsingar\n** Fjarlægir efni af síðum\n** Setur inn rusltengla á utanaðkomandi síður\n** Setur inn vitleysu/þvaður á síður\n** Yfirþyrmandi framkoma/áreitni\n** Misnotkun á fjölda notandanafna\n** Óásættanlegt notandanafn", - "ipb-hardblock": "Banna innskráðum notendum að breyta frá þessu vistfangi.", + "ipb-hardblock": "Banna innskráðum notendum að breyta frá þessu IP-vistfangi.", "ipbcreateaccount": "Banna nýskráningu notandanafns", "ipbemailban": "Banna notanda að senda tölvupóst", "ipbenableautoblock": "Banna síðasta vistfang notanda sjálfkrafa; og þau vistföng sem viðkomandi notar til að breyta síðum", @@ -2074,6 +2129,7 @@ "ipb-unblock": "Afbanna notanda eða vistfang", "ipb-blocklist": "Sjá núverandi bönn", "ipb-blocklist-contribs": "Framlög fyrir {{GENDER:$1|$1}}", + "ipb-blocklist-duration-left": "$1 eftir", "unblockip": "Afbanna notanda", "unblockiptext": "Endurvekja skrifréttindi bannaðra notenda eða vistfanga.", "ipusubmit": "Afbanna", @@ -2082,6 +2138,7 @@ "unblocked-id": "Bann $1 hefur verið fjarlægt", "unblocked-ip": "[[Special:Contributions/$1|$1]] hefur verið afbannaður.", "blocklist": "Bannaðir notendur og vistföng", + "autoblocklist-submit": "Leita", "ipblocklist": "Bannaðir notendur og vistföng", "ipblocklist-legend": "Finna bannaðan notanda", "blocklist-userblocks": "Fela notendabönn", @@ -2170,7 +2227,7 @@ "movepagetalktext": "Ef þú hakar við þennan reit mun viðeigandi spjallsíða vera færð sjálfkrafa á nýja titilinn, nema að spjallsíða sem er ekki tóm sé þegar til staðar.\n\nÍ því tilfelli þarft þú að færa eða sameina síðuna handvirkt ef þess er óskað.", "moveuserpage-warning": "Viðvörun: Þú ert í þann mund að færa notandasíðu. Athugaðu aðeins síðan verður færð og notandanafni hans verður ekki breytt.", "movecategorypage-warning": "Viðvörun: Þú ert í þann mund að færa flokkssíðu. Athugaðu aðeins síðan verður færð og allar síður í gamla flokknum verða ekki endurflokkaðar í nýja flokkinn.", - "movenologintext": "Þú verður að vera [[Special:UserLogin|innskráð(ur)]] til að geta fært síður.", + "movenologintext": "Þú verður að vera [[Special:UserLogin|skráð(ur) inn]] til að geta fært síður.", "movenotallowed": "Þú hefur ekki leyfi til að færa síður.", "movenotallowedfile": "Þú hefur ekki leyfi til að færa skrár.", "cant-move-user-page": "Þú hefur ekki leyfi til að færa notandasíðu (fyrir utan undirsíður).", @@ -2297,7 +2354,7 @@ "import-nonewrevisions": "Engar breytingar voru fluttar inn (þær voru allar annaðhvort þegar til eða sleppt vegna villna).", "xml-error-string": "$1 í línu $2, dálki $3 ($4 bæt): $5", "import-upload": "Hlaða inn XML-gögnum", - "import-token-mismatch": "Týnd setugögn.\n\nÞú hefur kannski verið skráð/ur út. Athugaðu hvort þú sért ennþá skráð/ur inn og reyndu aftur.\nEf það virkar ekki, reyndu að [[Special:UserLogout|skrá þig út]], skrá þig aftur inn og gakktu úr skugga um að vafrinn þinn leyfi vefkökur frá þessu vefsvæði.", + "import-token-mismatch": "Týnd setugögn.\n\nÞú hefur kannski verið skráð/ur út. '''Athugaðu hvort þú sért ennþá skráð/ur inn og reyndu aftur'''.\nEf það virkar ekki, reyndu að [[Special:UserLogout|skrá þig út]], skrá þig aftur inn og gakktu úr skugga um að vafrinn þinn leyfi vefkökur frá þessu vefsvæði.", "import-invalid-interwiki": "Get ekki flutt inn frá þessum wiki.", "import-error-edit": "Síðan \"$1\" var ekki flutt inn því þú hefur ekki réttindi til að breyta henni.", "import-error-create": "Síðan \"$1\" var ekki flutt inn því þú hefur ekki réttindi til að stofna hana.", @@ -2372,6 +2429,7 @@ "tooltip-ca-nstab-category": "Sýna efnisflokkasíðuna", "tooltip-minoredit": "Merkja þessa breytingu sem minniháttar", "tooltip-save": "Vista breytingarnar", + "tooltip-publish": "Gefa út breytingarnar þínar", "tooltip-preview": "Forskoða breytingarnar þínar. Gerðu þetta áður en þú vistar.", "tooltip-diff": "Sýna hvaða breytingar þú gerðir á textanum.", "tooltip-compareselectedversions": "Sjá breytingarnar á þessari grein á milli útgáfanna sem þú valdir.", @@ -2429,6 +2487,8 @@ "pageinfo-length": "Lengd síðunnar (í bætum)", "pageinfo-article-id": "Einkennisnúmer síðunnar", "pageinfo-language": "Tungumál síðunnar", + "pageinfo-language-change": "breyta", + "pageinfo-content-model-change": "breyta", "pageinfo-robot-policy": "Attriðaskráning af vélmennum", "pageinfo-robot-index": "Heimilað", "pageinfo-robot-noindex": "Ekki heimilað", @@ -2464,6 +2524,7 @@ "pageinfo-category-pages": "Fjöldi síðna", "pageinfo-category-subcats": "Fjöldi undirflokka", "pageinfo-category-files": "Fjöldi skráa", + "pageinfo-user-id": "Notandanúmer", "markaspatrolleddiff": "Merkja sem yfirfarið", "markaspatrolledtext": "Merkja þessa síðu sem yfirfarna", "markaspatrolledtext-file": "Merkja þessa útgáfu skrár sem yfirfarna", @@ -2480,6 +2541,7 @@ "patrol-log-header": "Þetta er skrá yfir yfirfarnar breytingar.", "log-show-hide-patrol": "$1 listi yfir yfirfarnar síður", "log-show-hide-tag": "$1 merkjaannáll", + "confirm-markpatrolled-button": "Í lagi", "deletedrevision": "Eyddi gamla útgáfu $1", "filedeleteerror-short": "Villa við eyðingu: $1", "filedeleteerror-long": "Það kom upp villa við eyðingu skrárinnar: $1", @@ -2957,6 +3019,7 @@ "confirm-watch-top": "Bæta þessari síðu á vaktlistann þinn?", "confirm-unwatch-button": "Í lagi", "confirm-unwatch-top": "Fjarlægja þessa síðu af vaktlistanum þínum?", + "confirm-rollback-button": "Í lagi", "semicolon-separator": "; ", "comma-separator": ", ", "colon-separator": ": ", @@ -3169,10 +3232,9 @@ "fileduplicatesearch-noresults": "Mistókst að finna skrána \"$1\"", "specialpages": "Kerfissíður", "specialpages-note-top": "Fyrirsögn", - "specialpages-note": "* Venjulegar kerfissíður.\n* Kerfissíður með takmörkuðum aðgangi.", "specialpages-group-maintenance": "Viðhaldsskýrslur", "specialpages-group-other": "Aðrar kerfissíður", - "specialpages-group-login": "Innskrá / Búa til aðgang", + "specialpages-group-login": "Skrá inn / Búa til aðgang", "specialpages-group-changes": "Nýlegar breytingar og skrár", "specialpages-group-media": "Skýrslur um gagnamiðla og innsendingar", "specialpages-group-users": "Notendur og réttindi", @@ -3217,7 +3279,7 @@ "tags-create-reason": "Ástæða:", "tags-create-submit": "Stofna", "tags-create-no-name": "Þú verður að gefa upp heiti merkisins.", - "tags-create-invalid-chars": "Heiti merkja mega ekki innihalda kommur (,) eða öfug skástrik (/).", + "tags-create-invalid-chars": "Heiti merkja mega ekki innihalda kommur (,), pípur (|), eða öfug skástrik (/).", "tags-create-invalid-title-chars": "Heiti merkja mega ekki innihalda stafi sem ekki má nota í síðutitlum.", "tags-create-already-exists": "Merkið \"$1\" er nú þegar til.", "tags-create-warnings-below": "Viltu halda áfram við að búa til merkið?", @@ -3248,6 +3310,7 @@ "tags-edit-chosen-placeholder": "Veldu einhver merki", "tags-edit-chosen-no-results": "Engin merki fundust sem samsvara", "tags-edit-reason": "Ástæða:", + "tags-edit-success": "Breytingarnar voru framkvæmdar.", "tags-edit-nooldid-title": "Ógild markútgáfa", "tags-edit-none-selected": "Vinsamlega veldu a.m.k. eitt merki til að bæta við eða fjarlægja.", "comparepages": "Bera saman síður", @@ -3259,6 +3322,7 @@ "compare-invalid-title": "Titillinn sem þú gafst upp er ógildur.", "compare-title-not-exists": "Umbeðinn titill er ekki til.", "compare-revision-not-exists": "Umbeðin útgáfa er ekki til.", + "diff-form": "Mismunur", "dberr-problems": "Því miður!Tæknilegir örðugleikar eru á þessari síðu.", "dberr-again": "Reyndu að bíða í nokkrar mínútur og endurhlaða síðan síðuna.", "dberr-info": "(Mistókst að fá aðgang að gagnaþjóni: $1)", @@ -3282,13 +3346,16 @@ "htmlform-cloner-create": "Bæta við meiru", "htmlform-cloner-delete": "Fjarlægja", "htmlform-cloner-required": "Það þarf allavega eitt gildi.", + "htmlform-date-placeholder": "ÁÁÁÁ-MM-DD", + "htmlform-time-placeholder": "KK:MM:SS", + "htmlform-datetime-placeholder": "ÁÁÁÁ-MM-DD KK:MM:SS", "htmlform-title-badnamespace": "[[:$1]] er ekki í \"{{ns:$2}}\" nafnrýminu.", "htmlform-title-not-creatable": "\"$1\" er ekki hægt að nota við að búa til titil á síðu", "htmlform-title-not-exists": "$1 er ekki til", "htmlform-user-not-exists": "$1 er ekki til.", "htmlform-user-not-valid": "$1 er ekki gilt notandanafn.", "logentry-delete-delete": "$1 {{GENDER:$2|eyddi}} síðunni $3", - "logentry-delete-restore": "$1 {{GENDER:$2|endurvakti}} $3", + "logentry-delete-restore": "$1 {{GENDER:$2|endurvakti}} síðu $3 ($4)", "logentry-delete-event": "$1 {{GENDER:$2|breytti}} sýnileika {{PLURAL:$5|færslu|$5 færslna}} á $3: $4", "logentry-delete-revision": "$1 {{GENDER:$2|breytti}} sýnileika {{PLURAL:$5|útgáfu|$5 útgáfna}} á $3: $4", "logentry-delete-event-legacy": "$1 {{GENDER:$2|breytti}} sýnileika færslna á $3", @@ -3366,7 +3433,7 @@ "api-error-emptypage": "Stofnun nýrra, tómra síðna er óheimil.", "api-error-publishfailed": "Innri villa: Vefþjónninn gat ekki gefið út bráðabirgðaskrá.", "api-error-stashfailed": "Innri villa: Vefþjónninn gat ekki geymt bráðabirgðaskrá.", - "api-error-unknown-warning": "Óþekkt viðvörun: $1", + "api-error-unknown-warning": "Óþekkt viðvörun: \"$1\".", "api-error-unknownerror": "Óþekkt villa: \"$1\".", "duration-seconds": "$1 {{PLURAL:$1|sekúnda|sekúndur}}", "duration-minutes": "$1 {{PLURAL:$1|mínúta|mínútur}}", diff --git a/languages/i18n/it.json b/languages/i18n/it.json index 4ee4bd41b7..8a7f13c9ab 100644 --- a/languages/i18n/it.json +++ b/languages/i18n/it.json @@ -109,7 +109,9 @@ "Luigi.delia", "Samuele2002", "Kaspo", - "Pequod76" + "Pequod76", + "Greis", + "Pierpao" ] }, "tog-underline": "Sottolinea i collegamenti:", @@ -139,13 +141,14 @@ "tog-shownumberswatching": "Mostra il numero di utenti che hanno la pagina in osservazione", "tog-oldsig": "La tua firma attuale:", "tog-fancysig": "Gestisci la firma come wikitesto (senza collegamento automatico)", - "tog-uselivepreview": "Abilita la funzione ''Live preview'' (anteprima in diretta)", + "tog-uselivepreview": "Mostra anteprime senza ricaricare la pagina", "tog-forceeditsummary": "Chiedi conferma se il campo oggetto è vuoto", "tog-watchlisthideown": "Nascondi le mie modifiche negli osservati speciali", "tog-watchlisthidebots": "Nascondi le modifiche dei bot negli osservati speciali", "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 +164,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 +216,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 +272,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", @@ -289,7 +292,7 @@ "protect_change": "cambia", "unprotect": "Cambia la protezione", "newpage": "Nuova pagina", - "talkpagelinktext": "Discussione", + "talkpagelinktext": "discussione", "specialpage": "Pagina speciale", "personaltools": "Strumenti personali", "talk": "Discussione", @@ -483,7 +486,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 +588,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 +707,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 +734,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.", @@ -767,7 +770,6 @@ "explainconflict": "Un altro utente ha salvato una nuova versione della pagina mentre stavi effettuando le modifiche.\nLa casella di modifica superiore contiene il testo della pagina attualmente online, così come è stato aggiornato dall'altro utente.\nLa versione con le tue modifiche è invece riportata nella casella di modifica inferiore.\nSe desideri confermarle, devi riportare le tue modifiche nel testo esistente (casella superiore).\nPremendo il pulsante '$1', verrà salvato '''solo''' il testo contenuto nella casella di modifica superiore.", "yourtext": "Il tuo testo", "storedversion": "La versione memorizzata", - "nonunicodebrowser": "'''Attenzione: si sta utilizzando un browser non compatibile con i caratteri Unicode. Per consentire la modifica delle pagine senza creare inconvenienti, i caratteri non ASCII vengono visualizzati nella casella di modifica sotto forma di codici esadecimali.'''", "editingold": "Attenzione: si sta modificando una versione non aggiornata della pagina.\nSalvandola così, tutti i cambiamenti apportati dopo questa versione saranno sovrascritti.", "yourdiff": "Differenze", "copyrightwarning": "Per favore tieni presente che tutti i contributi a {{SITENAME}} si considerano pubblicati nei termini d'uso della licenza $2 (vedi $1 per maggiori dettagli).\nSe non desideri che i tuoi testi possano essere modificati e ridistribuiti da chiunque senza alcuna limitazione, non inviarli qui.
    \nInviando il testo dichiari inoltre, sotto tua responsabilità, che è stato scritto da te personalmente oppure è stato copiato da una fonte di pubblico dominio o similarmente libera.\n'''Non inviare materiale protetto da copyright senza autorizzazione!'''", @@ -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.", @@ -837,7 +839,7 @@ "template-loop-category-desc": "La pagina contiene un template che richiama sé stesso, cioè un template in cui è incluso lo stesso template.", "parser-template-recursion-depth-warning": "È stato raggiunto il limite di ricorsione nel template ($1)", "language-converter-depth-warning": "Limite di profondità del convertitore di lingua superato ($1)", - "node-count-exceeded-category": "Pagine dove viene superato il numero di nodi", + "node-count-exceeded-category": "Pagine che superano il numero di nodi", "node-count-exceeded-category-desc": "La pagina supera il numero massimo di nodi.", "node-count-exceeded-warning": "Questa pagina ha superato il numero di nodi", "expansion-depth-exceeded-category": "Pagine nelle quali è superata la profondità di espansione", @@ -911,7 +913,7 @@ "revdelete-text-file": "Le versioni di file cancellati appariranno ancora nella cronologia del file, ma parti del loro contenuto sarà inaccessibile al pubblico.", "logdelete-text": "Gli eventi cancellati appariranno ancora nei registri, ma parti del loro contenuto sarà inaccessibile al pubblico.", "revdelete-text-others": "Altri amministratori saranno ancora in grado di accedere ai contenuti nascosti e potranno ripristinarli, se non sono state impostate restrizioni aggiuntive.", - "revdelete-confirm": "Per favore conferma che questo è quanto intendi fare, che sei consapevole delle conseguenze, e che stai facendo questo nel rispetto delle [[{{MediaWiki:Policy-url}}|linee guida]].", + "revdelete-confirm": "Per favore conferma che questo è quanto intendi fare, che sei consapevole delle conseguenze, e che stai facendo ciò nel rispetto delle [[{{MediaWiki:Policy-url}}|linee guida]].", "revdelete-suppress-text": "La rimozione dovrebbe essere utilizzata '''unicamente''' nei seguenti casi:\n* informazioni potenzialmente diffamatorie\n* dati personali inopportuni\n*: ''indirizzi, numeri di telefono, codici fiscali, ecc.''", "revdelete-legend": "Imposta le seguenti limitazioni sulle versioni cancellate:", "revdelete-hide-text": "Testo della versione", @@ -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", @@ -1104,6 +1106,7 @@ "timezoneregion-indian": "Oceano Indiano", "timezoneregion-pacific": "Oceano Pacifico", "allowemail": "Abilita la ricezione di messaggi email da altri utenti", + "email-blacklist-label": "Impedisci a questi utenti di inviarmi email:", "prefs-searchoptions": "Ricerca", "prefs-namespaces": "Namespace", "default": "predefinito", @@ -1122,7 +1125,7 @@ "yourlanguage": "Lingua dell'interfaccia:", "yourvariant": "Variante della lingua:", "prefs-help-variant": "La variante o grafia in cui preferisci che le pagine del wiki ti siano mostrate.", - "yournick": "Soprannome (nickname):", + "yournick": "Nuova firma:", "prefs-help-signature": "I commenti nelle pagine di discussione devono essere firmati con \"~~~~\" che verrà convertito nella propria firma seguita dalla data.", "badsig": "Errore nella firma non standard, verificare i tag HTML.", "badsiglength": "La firma scelta è troppo lunga, non deve superare $1 {{PLURAL:$1|carattere|caratteri}}.", @@ -1380,9 +1383,20 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (vedi le [[Special:NewPages|nuove pagine]])", "recentchanges-legend-plusminus": "(''±123'')", "recentchanges-submit": "Mostra", + "rcfilters-tag-remove": "Rimuovi '$1'", "rcfilters-legend-heading": "Elenco di abbreviazioni:", + "rcfilters-other-review-tools": "Altri strumenti di revisione", + "rcfilters-group-results-by-page": "Raggruppa risultati per pagina", + "rcfilters-grouping-title": "Raggruppamento", "rcfilters-activefilters": "Filtri attivi", "rcfilters-advancedfilters": "Filtri avanzati", + "rcfilters-limit-title": "Modifiche da mostrare", + "rcfilters-limit-shownum": "Mostra {{PLURAL:$1|l'ultima modifica|le ultime $1 modifiche}}", + "rcfilters-days-title": "Giorni recenti", + "rcfilters-hours-title": "Ore recenti", + "rcfilters-days-show-days": "$1 {{PLURAL:$1|giorno|giorni}}", + "rcfilters-days-show-hours": "$1 {{PLURAL:$1|ora|ore}}", + "rcfilters-highlighted-filters-list": "Evidenziato: $1", "rcfilters-quickfilters": "Filtri salvati", "rcfilters-quickfilters-placeholder-title": "Nessun collegamento salvato ancora", "rcfilters-quickfilters-placeholder-description": "Per salvare le impostazioni del tuo filtro e riutilizzarle dopo, clicca l'icona segnalibro nell'area \"Filtri attivi\" qui sotto", @@ -1394,43 +1408,41 @@ "rcfilters-savedqueries-new-name-label": "Nome", "rcfilters-savedqueries-new-name-placeholder": "Descrivi lo scopo del filtro", "rcfilters-savedqueries-apply-label": "Crea filtro", + "rcfilters-savedqueries-apply-and-setdefault-label": "Crea filtro predefinito", "rcfilters-savedqueries-cancel-label": "Annulla", "rcfilters-savedqueries-add-new-title": "Salva le impostazioni attuali del filtro", "rcfilters-restore-default-filters": "Ripristina i filtri predefiniti", "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.", "rcfilters-filterlist-title": "Filtri", - "rcfilters-filterlist-whatsthis": "Cos'è questo?", - "rcfilters-filterlist-feedbacklink": "Lascia un commento sulla nuova funzionalità sperimentale", + "rcfilters-filterlist-whatsthis": "Come funzionano?", + "rcfilters-filterlist-feedbacklink": "Dicci cosa ne pensi su questi (nuovi) strumenti di filtraggio", "rcfilters-highlightbutton-title": "Evidenzia risultati", "rcfilters-highlightmenu-title": "Seleziona un colore", "rcfilters-highlightmenu-help": "Seleziona un colore per evidenziare questa proprietà", "rcfilters-filterlist-noresults": "Nessun filtro trovato", "rcfilters-noresults-conflict": "Nessun risultato trovato, perché i criteri di ricerca sono in conflitto", "rcfilters-state-message-subset": "Questo filtro non ha effetto perché i suoi risultati sono inclusi in quelli {{PLURAL:$2|del seguente filtro, più ampio|dei seguenti filtri, più ampi}} (prova ad evidenziarli per distinguerli): $1", - "rcfilters-state-message-fullcoverage": "La selezione di tutti i filtri in un gruppo è come non selezionarne alcuno, in questo modo questo filtro non ha effetto. Il gruppo include: $1", - "rcfilters-filtergroup-registration": "Registrazione utente", - "rcfilters-filter-registered-label": "Registrato", - "rcfilters-filter-registered-description": "Contributori che hanno effettuato l'accesso.", - "rcfilters-filter-unregistered-label": "Non registrato", - "rcfilters-filter-unregistered-description": "Contributori che non hanno effettuato l'accesso.", - "rcfilters-filter-unregistered-conflicts-user-experience-level": "Questo filtro è in conflitto con {{PLURAL:$2|il seguente filtro|i seguenti filtri}} esperienza, che {{PLURAL:$2|trova|trovano}} soltanto utenti registrati: $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.", "rcfilters-filter-editsbyother-label": "Modifiche di altri", "rcfilters-filter-editsbyother-description": "Tutte le modifiche eccetto le tue.", - "rcfilters-filtergroup-userExpLevel": "Livello d'esperienza (solo per utenti registrati)", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "I filtri esperienza trovano solo utenti registrati, quindi questo filtro è in conflitto con il filtro \"Non registrato\".", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Il filtro \"Non registrato\" è in conflitto con uno o più filtri esperienza, che trovano solo utenti registrati. I filtri in conflitto sono evidenziati nell'area \"Filtri attivi\" qui sopra.", + "rcfilters-filtergroup-userExpLevel": "Registrazione utente ed esperienza", + "rcfilters-filter-user-experience-level-registered-label": "Registrato", + "rcfilters-filter-user-experience-level-registered-description": "Contributori che hanno effettuato l'accesso.", + "rcfilters-filter-user-experience-level-unregistered-label": "Non registrato", + "rcfilters-filter-user-experience-level-unregistered-description": "Contributori che non hanno effettuato l'accesso.", "rcfilters-filter-user-experience-level-newcomer-label": "Nuovi utenti", - "rcfilters-filter-user-experience-level-newcomer-description": "Meno di 10 modifiche e 4 giorni di attività.", + "rcfilters-filter-user-experience-level-newcomer-description": "Utenti registrati con meno di 10 modifiche e 4 giorni di attività.", "rcfilters-filter-user-experience-level-learner-label": "Principianti", - "rcfilters-filter-user-experience-level-learner-description": "Con più esperienza dei \"Nuovi arrivati\" ma meno degli \"Utenti esperti\".", + "rcfilters-filter-user-experience-level-learner-description": "Utenti registrati il cui livello di esperienza è compreso tra \"Nuovi arrivati\" e \"Utenti esperti\".", "rcfilters-filter-user-experience-level-experienced-label": "Utenti con esperienza", - "rcfilters-filter-user-experience-level-experienced-description": "Più di 30 giorni di attività e 500 modifiche.", + "rcfilters-filter-user-experience-level-experienced-description": "Utenti registrati con più di 500 modifiche e 30 giorni di attività.", "rcfilters-filtergroup-automated": "Contributi automatici", "rcfilters-filter-bots-label": "Bot", "rcfilters-filter-bots-description": "Modifiche effettuate da strumenti automatici.", @@ -1453,6 +1465,10 @@ "rcfilters-filter-watchlist-watchednew-description": "Modifiche alle pagine nei osservati speciali che non hai visitato dopo la modifica.", "rcfilters-filter-watchlist-notwatched-label": "Non negli osservati speciali", "rcfilters-filter-watchlist-notwatched-description": "Tutto tranne le pagine nei tuoi osservati speciali.", + "rcfilters-filtergroup-watchlistactivity": "Attività negli osservati speciali", + "rcfilters-filter-watchlistactivity-unseen-label": "Modifiche non ancora viste", + "rcfilters-filter-watchlistactivity-unseen-description": "Modifiche alle pagine che non hai ancora visitato da quando le modifiche sono avvenute.", + "rcfilters-filter-watchlistactivity-seen-label": "Modifiche già viste", "rcfilters-filtergroup-changetype": "Tipo di modifica", "rcfilters-filter-pageedits-label": "Modifiche alle pagine", "rcfilters-filter-pageedits-description": "Modifiche al contenuto wiki, discussioni, descrizioni categoria…", @@ -1465,17 +1481,31 @@ "rcfilters-hideminor-conflicts-typeofchange-global": "Il filtro \"Modifiche minori\" è in confitto con uno o più dei filtri \"Tipo di modifica\", perché certe modifiche non possono essere indicate come \"minori\". I filtri in conflitto sono indicati nell'area \"Filtri attivi\" qui sopra.", "rcfilters-hideminor-conflicts-typeofchange": "Alcuni tipi di modifiche non possono essere indicate come \"minori\", quindi questo filtro è in conflitto con i seguenti filtri \"Tipo di modifica\": $1", "rcfilters-typeofchange-conflicts-hideminor": "Questo filtro \"Tipo di modifica\" è in conflitto con il filtro \"Modifiche minori\". Alcuni tipi di modifiche non possono essere indicati come \"minori\".", - "rcfilters-filtergroup-lastRevision": "Ultima versione", - "rcfilters-filter-lastrevision-label": "Ultima versione", - "rcfilters-filter-lastrevision-description": "Le ultime modifiche ad una pagina.", - "rcfilters-filter-previousrevision-label": "Versioni precedenti", - "rcfilters-filter-previousrevision-description": "Tutte le modifiche che non sono l'ultima modifica effettuata sulla voce.", + "rcfilters-filtergroup-lastRevision": "Ultime versioni", + "rcfilters-filter-lastrevision-label": "Versione attuale", + "rcfilters-filter-lastrevision-description": "Solo l'ultima modifica ad una pagina.", + "rcfilters-filter-previousrevision-label": "Non l'ultima versione", + "rcfilters-filter-previousrevision-description": "Tutte le modifiche che non sono la \"versione attuale\".", "rcfilters-filter-excluded": "Escluso", "rcfilters-tag-prefix-namespace-inverted": ":non $1", + "rcfilters-exclude-button-off": "Escludi selezionati", + "rcfilters-exclude-button-on": "Escludendo selezionati", + "rcfilters-view-advanced-filters-label": "Filtri avanzati", "rcfilters-view-tags": "Modifiche etichettate", + "rcfilters-view-namespaces-tooltip": "Filtra risultati per namespace", + "rcfilters-view-tags-tooltip": "Filtra risultati per etichette di modifica", + "rcfilters-view-return-to-default-tooltip": "Torna al menu filtri principale", + "rcfilters-liveupdates-button": "Aggiornamenti in tempo reale", + "rcfilters-liveupdates-button-title-on": "Disabilita gli aggiornamenti in tempo reale", + "rcfilters-liveupdates-button-title-off": "Mostra le nuove modifiche appena avvengono", + "rcfilters-watchlist-markseen-button": "Segna tutte le modifiche come già viste", + "rcfilters-watchlist-edit-watchlist-button": "Modifica il tuo elenco di pagine osservate", + "rcfilters-watchlist-showupdated": "Le modifiche alle pagine che non hai ancora visitato da quando le modifiche sono avvenute, vengono evidenziate in grassetto e con dei pallini pieni.", + "rcfilters-preference-label": "Nascondi la versione migliorata delle ultime modifiche", + "rcfilters-preference-help": "Ripristina la riprogettazione dell'interfaccia 2017 e tutti gli strumenti aggiunti allora e da allora.", "rcnotefrom": "Di seguito {{PLURAL:$5|è elencata la modifica apportata|sono elencate le modifiche apportate}} a partire da $3, $4 (mostrate fino a $1).", "rclistfromreset": "Reimposta la selezione della data", - "rclistfrom": "Mostra le modifiche apportate a partire da $3 $2", + "rclistfrom": "Mostra le nuove modifiche a partire daː $2, $3", "rcshowhideminor": "$1 le modifiche minori", "rcshowhideminor-show": "Mostra", "rcshowhideminor-hide": "Nascondi", @@ -1588,6 +1618,7 @@ "file-deleted-duplicate-notitle": "Un file identico a questo è stato cancellato in passato, ed il titolo è stato soppresso. Chiedi a qualcuno che ha la possibilità di vedere i file soppressi di esaminare la situazione prima di procedere nuovamente al caricamento.", "uploadwarning": "Avviso di caricamento", "uploadwarning-text": "Per favore modifica qui sotto la descrizione del file e prova di nuovo.", + "uploadwarning-text-nostash": "Per favore ricarica il file, modifica la descrizione sotto e riprova.", "savefile": "Salva file", "uploaddisabled": "Il caricamento dei file è disabilitato.", "copyuploaddisabled": "Il caricamento tramite URL è disabilitato.", @@ -1750,7 +1781,7 @@ "listfiles_size": "Dimensione", "listfiles_description": "Descrizione", "listfiles_count": "Versioni", - "listfiles-show-all": "Includi le vecchie versioni delle immagini", + "listfiles-show-all": "Includi le vecchie versioni dei file", "listfiles-latestversion": "Versione attuale", "listfiles-latestversion-yes": "Sì", "listfiles-latestversion-no": "No", @@ -1853,6 +1884,7 @@ "pageswithprop-legend": "Pagine con una proprietà di pagina", "pageswithprop-text": "Questa pagina elenca le pagine che utilizzano una particolare proprietà di pagina.", "pageswithprop-prop": "Nome proprietà:", + "pageswithprop-reverse": "Ordinamento inverso", "pageswithprop-submit": "Vai", "pageswithprop-prophidden-long": "valore testuale lungo della proprietà nascosto ($1)", "pageswithprop-prophidden-binary": "valore binario della proprietà nascosto ($1)", @@ -2186,6 +2218,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", @@ -2214,6 +2247,7 @@ "delete-warning-toobig": "La cronologia di questa pagina è molto lunga (oltre $1 {{PLURAL:$1|versione|versioni}}). La sua cancellazione può creare dei problemi di funzionamento al database di {{SITENAME}}; procedere con cautela.", "deleteprotected": "Non puoi cancellare questa pagina perché è stata protetta.", "deleting-backlinks-warning": "Attenzione: [[Special:WhatLinksHere/{{FULLPAGENAME}}|altre pagine]] contengono collegamenti o inclusioni alla pagina che stai per cancellare.", + "deleting-subpages-warning": "Attenzione: la pagina che stai per cancellare ha [[Special:PrefixIndex/{{FULLPAGENAME}}/|{{PLURAL:$1|una sotto-pagina|$1 sotto-pagine|51=più di 50 sotto-pagine}}]].", "rollback": "Annulla le modifiche", "rollbacklink": "rollback", "rollbacklinkcount": "rollback di {{PLURAL:$1|una modifica|$1 modifiche}}", @@ -2310,11 +2344,11 @@ "undeletepage": "Visualizza e recupera le pagine cancellate", "undeletepagetitle": "'''Quanto segue è composto da versioni cancellate di [[:$1|$1]]'''.", "viewdeletedpage": "Visualizza le pagine cancellate", - "undeletepagetext": "{{PLURAL:$1|La pagina indicata di seguito è stata cancellata, ma è ancora in archivio e pertanto può essere recuperata|Le pagine indicate di seguito sono state cancellate, ma sono ancora in archivio e pertanto possono essere recuperate}}. L'archivio può essere svuotato periodicamente.", + "undeletepagetext": "{{PLURAL:$1|La pagina indicata di seguito è stata cancellata, ma è ancora in archivio e pertanto può essere ripristinata|Le pagine indicate di seguito sono state cancellate, ma sono ancora in archivio e pertanto possono essere ripristinate}}. L'archivio può essere svuotato periodicamente.", "undelete-fieldset-title": "Ripristina versioni", "undeleteextrahelp": "Per recuperare l'intera cronologia della pagina, lasciare tutte le caselle deselezionate e fare clic su '''''{{int:undeletebtn}}'''''.\nPer effettuare un ripristino selettivo, selezionare le caselle corrispondenti alle versioni da ripristinare e fare clic su '''''{{int:undeletebtn}}'''''.", "undeleterevisions": "{{PLURAL:$1|Una versione cancellata|$1 versioni cancellate}}", - "undeletehistory": "Recuperando questa pagina, tutte le sue versioni saranno ripristinate nella relativa cronologia.\nSe dopo la cancellazione è stata creata una nuova pagina con lo stesso titolo, le versioni recuperate saranno inserite nella cronologia precedente.", + "undeletehistory": "Ripristinando questa pagina, tutte le sue versioni saranno recuperate nella relativa cronologia.\nSe dopo la cancellazione è stata creata una nuova pagina con lo stesso titolo, le versioni recuperate saranno inserite nella cronologia precedente.", "undeleterevdel": "Il ripristino non verrà effettuato se determina la cancellazione parziale della versione attuale della pagina o del file interessato. In tal caso, è necessario rimuovere il segno di spunta o l'oscuramento dalle versioni cancellate più recenti.", "undeletehistorynoadmin": "Questa pagina è stata cancellata.\nIl motivo della cancellazione è mostrato qui sotto, assieme ai dettagli dell'utente che ha modificato questa pagina prima della cancellazione.\nIl testo contenuto nelle versioni cancellate è disponibile solo agli amministratori.", "undelete-revision": "Versione cancellata della pagina $1, inserita il $4 alle $5 da $3:", @@ -2327,7 +2361,7 @@ "undeleteinvert": "Inverti selezione", "undeletecomment": "Motivo:", "cannotundelete": "Alcuni o tutti i ripristini non riusciti:\n$1", - "undeletedpage": "'''La pagina $1 è stata recuperata'''\n\nConsulta il [[Special:Log/delete|registro delle cancellazioni]] per vedere le cancellazioni e i recuperi più recenti.", + "undeletedpage": "'''La pagina $1 è stata ripristinata'''\n\nConsulta il [[Special:Log/delete|registro delle cancellazioni]] per vedere le cancellazioni e i ripristini più recenti.", "undelete-header": "Consulta il [[Special:Log/delete|registro delle cancellazioni]] per vedere le cancellazioni più recenti.", "undelete-search-title": "Ricerca nelle pagine cancellate", "undelete-search-box": "Ricerca le pagine cancellate", @@ -2666,7 +2700,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.", @@ -2825,7 +2859,7 @@ "pageinfo-hidden-categories": "{{PLURAL:$1|Categoria nascosta|Categorie nascoste}} ($1)", "pageinfo-templates": "Template {{PLURAL:$1|incluso|inclusi}} ($1)", "pageinfo-transclusions": "{{PLURAL:$1|Pagina|Pagine}} in cui è incluso ($1)", - "pageinfo-toolboxlink": "Informazioni sulla pagina", + "pageinfo-toolboxlink": "Informazioni pagina", "pageinfo-redirectsto": "Reindirizza a", "pageinfo-redirectsto-info": "info", "pageinfo-contentpage": "Conteggiata come una pagina di contenuto", @@ -3110,7 +3144,7 @@ "exif-personinimage": "Persona raffigurata", "exif-originalimageheight": "Altezza dell'immagine prima che fosse ritagliata", "exif-originalimagewidth": "Larghezza dell'immagine prima che fosse ritagliata", - "exif-compression-1": "Nessuno", + "exif-compression-1": "Senza compressione", "exif-compression-2": "CCITT gruppo 3 monodimensionale - codifica run length di Huffman modificata", "exif-compression-3": "Codifica fax CCITT Group 3", "exif-compression-4": "Codifica fax CCITT gruppo 4", @@ -3449,7 +3483,7 @@ "fileduplicatesearch-noresults": "Nessun file di nome \"$1\" trovato.", "specialpages": "Pagine speciali", "specialpages-note-top": "Legenda", - "specialpages-note": "* Pagine speciali non riservate.\n* Pagine speciali riservate ad alcune categorie di utenti.", + "specialpages-note-restricted": "* Pagine speciali non riservate.\n* Pagine speciali riservate ad alcune categorie di utenti.", "specialpages-group-maintenance": "Resoconti di manutenzione", "specialpages-group-other": "Altre pagine speciali", "specialpages-group-login": "Accesso / creazione utenze", @@ -3568,6 +3602,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)", @@ -3684,7 +3721,7 @@ "feedback-back": "Indietro", "feedback-bugcheck": "Ottimo! Verifica che non sia già fra i [$1 bug conosciuti].", "feedback-bugnew": "Controllo effettuato. Segnala un nuovo bug", - "feedback-bugornote": "Se si è in grado di descrivere il problema tecnico riscontrato in maniera precisa, [$1 segnalate il bug]. In alternativa, si può usare il modulo semplificato sottostante. Il commento inserito sarà aggiunto alla pagina \"[$3 $2]\", insieme al proprio nome utente e al browser in uso.", + "feedback-bugornote": "Se sei in grado di descrivere il problema tecnico riscontrato in maniera precisa, [$1 segnala il bug]. In alternativa, si può usare il modulo semplificato sottostante. Il commento inserito sarà aggiunto alla pagina \"[$3 $2]\", insieme al proprio nome utente.", "feedback-cancel": "Annulla", "feedback-close": "Fatto", "feedback-external-bug-report-button": "Documenta un problema tecnico", @@ -3733,7 +3770,7 @@ "limitreport-templateargumentsize-value": "$1/$2 {{PLURAL:$2|byte}}", "limitreport-expansiondepth": "Massima profondità di espansione", "limitreport-expensivefunctioncount": "Numero funzioni parser dispendiose", - "expandtemplates": "Espansione dei template", + "expandtemplates": "Espandi i template", "expand_templates_intro": "Questa pagina speciale elabora un testo espandendo tutti i template presenti.\nCalcola inoltre il risultato delle funzioni supportate dal parser come\n{{#language:…}} e delle variabili di sistema quali\n{{CURRENTDAY}},\nvale a dire praticamente tutto ciò che si trova tra doppie parentesi graffe.", "expand_templates_title": "Contesto (per {{FULLPAGENAME}} ecc.):", "expand_templates_input": "Testo da espandere:", @@ -3741,7 +3778,7 @@ "expand_templates_xml_output": "Output in formato XML", "expand_templates_html_output": "Risultato HTML", "expand_templates_ok": "OK", - "expand_templates_remove_comments": "Ignora i commenti", + "expand_templates_remove_comments": "Rimuovi i commenti", "expand_templates_remove_nowiki": "Elimina il tag nel risultato", "expand_templates_generate_xml": "Mostra albero sintattico XML", "expand_templates_generate_rawhtml": "Mostra HTML", diff --git a/languages/i18n/ja.json b/languages/i18n/ja.json index 50d13ae384..54612fed59 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": "ボットによる編集をウォッチリストに表示しない", @@ -218,12 +219,14 @@ "index-category": "検索エンジンに収集されるページ", "noindex-category": "検索エンジンに収集されないページ", "broken-file-category": "壊れたファイルへのリンクがあるページ", + "categoryviewer-pagedlinks": "($1) ($2)", + "category-header-numerals": "$1–$2", "about": "解説", "article": "本文", "newwindow": "(新しいウィンドウで開きます)", "cancel": "取り消し", "moredotdotdot": "続き...", - "morenotlisted": "この一覧はおそらく完全ではありません。", + "morenotlisted": "この一覧は不完全かもしれません。", "mypage": "ページ", "mytalk": "トーク", "anontalk": "トーク", @@ -318,6 +321,9 @@ "versionrequired": "MediaWiki のバージョン $1 が必要", "versionrequiredtext": "このページの使用にはMediaWiki バージョン $1 が必要です。\n[[Special:Version|バージョン情報]]をご覧ください。", "ok": "OK", + "pagetitle": "$1 - {{SITENAME}}", + "pagetitle-view-mainpage": "{{SITENAME}}", + "backlinksubtitle": "← $1", "retrievedfrom": "「$1」から取得", "youhavenewmessages": "$1が{{PLURAL:$3|あります}} ($2)。", "youhavenewmessagesfromusers": "{{PLURAL:$3|他の利用者|$3 人の利用者}}からの$1が{{PLURAL:$4|あります}} ($2)。", @@ -744,7 +750,6 @@ "explainconflict": "このページを編集し始めた後に、他の誰かがこのページを変更しました。\n上側のテキスト領域は現在の最新の状態です。\n編集していた文章は下側のテキスト領域に示されています。\n編集していた文章を、上側のテキスト領域の、既存の文章に組み込んでください。\n上側のテキスト領域の内容だけが、「$1」をクリックした時に実際に保存されます。", "yourtext": "編集中の文章", "storedversion": "保存された版", - "nonunicodebrowser": "警告: ご使用中のブラウザーは Unicode に未対応です。\n安全にページを編集する回避策を表示しています: 編集ボックス内の非 ASCII 文字を 16 進数コードで表現しています。", "editingold": "警告: このページの古い版を編集しています。\n保存すると、この版以降になされた変更がすべて失われます。", "yourdiff": "差分", "copyrightwarning": "{{SITENAME}}への投稿はすべて、$2 (詳細は$1を参照)のもとで公開したと見なされることにご注意ください。\n自分が書いたものが他の人に容赦なく編集され、自由に配布されるのを望まない場合は、ここに投稿しないでください。
    \nまた、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください。\n著作権保護されている作品は、許諾なしに投稿しないでください!", @@ -763,6 +768,7 @@ "template-semiprotected": "(半保護)", "hiddencategories": "このページは {{PLURAL:$1|$1 個の隠しカテゴリ}}に属しています:", "edittools": "", + "edittools-upload": "-", "nocreatetext": "{{SITENAME}}ではページの新規作成を制限しています。\n元のページに戻って既存のページを編集するか、[[Special:UserLogin|ログインまたはアカウント作成]]をしてください。", "nocreate-loggedin": "新しいページを作成する権限がありません。", "sectioneditnotsupported-title": "節単位編集はサポートされていません", @@ -772,8 +778,8 @@ "permissionserrorstext-withaction": "あなたには「$2」を行う権限がありません。{{PLURAL:$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既に削除されているようです。", @@ -796,6 +802,7 @@ "content-model-text": "プレーンテキスト", "content-model-javascript": "JavaScript", "content-model-css": "CSS", + "content-model-json": "JSON", "content-json-empty-object": "空のオブジェクト", "content-json-empty-array": "空の配列", "deprecated-self-close-category": "無効な自己終了HTMLタグを使用しているページ", @@ -953,6 +960,7 @@ "mergehistory-comment": "[[:$1]]を[[:$2]]に統合: $3", "mergehistory-same-destination": "統合元と統合先のページを同じにはできません", "mergehistory-reason": "理由:", + "mergehistory-revisionrow": "$1 ($2) $3 . . $4 $5 $6", "mergelog": "統合記録", "revertmerge": "統合解除", "mergelogpagetext": "以下は、最近行われたあるページから別のページへの統合の一覧です。", @@ -1041,7 +1049,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": "その他", @@ -1153,6 +1161,7 @@ "userrights-changeable-col": "変更できるグループ", "userrights-unchangeable-col": "変更できないグループ", "userrights-irreversible-marker": "$1*", + "userrights-no-shorten-expiry-marker": "$1#", "userrights-expiry-current": "期限 $1", "userrights-expiry-none": "無期限", "userrights-expiry": "有効期限:", @@ -1345,6 +1354,7 @@ "action-deletechangetags": "データベースからタグの削除", "action-purge": "このページのキャッシュ破棄", "nchanges": "$1 {{PLURAL:$1|回の変更}}", + "ntimes": "$1×", "enhancedrc-since-last-visit": "最終閲覧以降 $1 {{PLURAL:$1|件}}", "enhancedrc-history": "履歴", "recentchanges": "最近の更新", @@ -1361,7 +1371,18 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|新しいページ一覧]]も参照)", "recentchanges-legend-plusminus": "(±123)", "recentchanges-submit": "表示", + "rcfilters-tag-remove": "「$1」を除去", + "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-days-show-days": "$1 {{PLURAL:$1|日}}", + "rcfilters-days-show-hours": "$1 {{PLURAL:$1|時間}}", "rcfilters-quickfilters": "フィルターを保存", "rcfilters-quickfilters-placeholder-title": "リンクはまだ保存されていません", "rcfilters-quickfilters-placeholder-description": "フィルターの設定を保存し、後で再び使用するためには、下のアクティブフィルター内のブックマークアイコンをクリックしてください。", @@ -1390,20 +1411,16 @@ "rcfilters-noresults-conflict": "検索条件が競合しているため、絞り込みできません", "rcfilters-state-message-subset": "この項目による絞り込みは全て以下の{{PLURAL:$2|項目}}による絞り込みの結果に含まれています(強調表示を使うことで該当項目を抽出できます) : $1", "rcfilters-state-message-fullcoverage": "同じグループの全ての項目が選択されています。絞り込みできません。同じグループに含まれる項目 :$1", - "rcfilters-filtergroup-registration": "利用者登録", - "rcfilters-filter-registered-label": "登録済み", - "rcfilters-filter-registered-description": "ログイン済みの編集者。", - "rcfilters-filter-unregistered-label": "未登録", - "rcfilters-filter-unregistered-description": "ログインしていない利用者。", - "rcfilters-filter-unregistered-conflicts-user-experience-level": "この項目は、登録済み利用者を編集回数別で絞り込む以下の{{PLURAL:$2|項目}}と競合しています :$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-user-experience-level-conflicts-unregistered": "編集回数別絞り込みは登録利用者のみが対象です。「未登録」の絞り込み項目と競合しています。", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "「未登録」の項目が登録済み利用者を絞り込む項目と競合しています。競合している項目は項目選択欄で強調表示されています。", + "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": "登録から4日以内、かつ10編集以下の利用者", "rcfilters-filter-user-experience-level-learner-label": "初学者", @@ -1449,6 +1466,8 @@ "rcfilters-filter-lastrevision-description": "ページの最新の変更", "rcfilters-filter-previousrevision-label": "古い版", "rcfilters-filter-previousrevision-description": "ページの最新の変更ではない全ての変更。", + "rcfilters-view-namespaces-tooltip": "名前空間別のフィルター結果", + "rcfilters-view-tags-tooltip": "編集タグを利用した絞込み", "rcnotefrom": "以下は$3 $4以降の{{PLURAL:$5|更新です}} (最大 $1 件)。", "rclistfromreset": "日時指定をリセット", "rclistfrom": "$3の$2以降の更新を表示する", @@ -1728,7 +1747,7 @@ "listfiles_size": "サイズ", "listfiles_description": "概要", "listfiles_count": "版数", - "listfiles-show-all": "画像の古い版を含める", + "listfiles-show-all": "ファイルの古い版を含める", "listfiles-latestversion": "現在の版", "listfiles-latestversion-yes": "はい", "listfiles-latestversion-no": "いいえ", @@ -1966,6 +1985,7 @@ "apisandbox-request-selectformat-label": "リクエストデータを次の形式で表示", "apisandbox-request-format-url-label": "URLクエリ文字列", "apisandbox-request-url-label": "リクエスト URL:", + "apisandbox-request-format-json-label": "JSON", "apisandbox-request-json-label": "JSONリクエスト:", "apisandbox-request-time": "リクエスト時間: {{PLURAL:$1|$1ミリ秒}}", "apisandbox-results-fixtoken": "トークンを訂正して再送信", @@ -2067,6 +2087,7 @@ "listgrants": "権限群", "listgrants-grant": "権限群名", "listgrants-rights": "権限", + "listgrants-grant-display": "$1 ($2)", "trackingcategories": "追跡用カテゴリ", "trackingcategories-summary": "このページでは、MediaWiki ソフトウェアが自動的に追加した追跡用カテゴリを列挙します。これらの名前は、{{ns:8}} 名前空間内の対応するシステム メッセージを修正することで変更できます。", "trackingcategories-msg": "追跡用カテゴリ", @@ -2112,6 +2133,7 @@ "emailuserfooter": "このメールは$1から{{GENDER:$2|$2}}へ、{{SITENAME}}の「{{int:emailuser}}」機能で{{GENDER:$1|送信}}されました。返信する場合は、{{GENDER:$2|あなた}}からのメールは{{GENDER:$1|もとの送信者}}に直接送信され、{{GENDER:$2|あなたの}}メールアドレスは{{GENDER:$2|返信先}}に開示されます。", "usermessage-summary": "システムメッセージを残す。", "usermessage-editor": "システムメッセンジャー", + "usermessage-template": "MediaWiki:UserMessage", "watchlist": "ウォッチリスト", "mywatchlist": "ウォッチリスト", "watchlistfor2": "利用者: $1 $2", @@ -2132,7 +2154,7 @@ "unwatchthispage": "ウォッチをやめる", "notanarticle": "記事ではありません", "notvisiblerev": "別の利用者による最終版は削除されました", - "watchlist-details": "ウォッチリストには {{PLURAL:$1|$1 ページ}}が登録されています (トークページを除く)。", + "watchlist-details": "ウォッチリストには {{PLURAL:$1|$1 ページ}}が登録されています (トークページも含む)。", "wlheader-enotif": "メール通知が有効になっています。", "wlheader-showupdated": "最終訪問以降に変更されたページは、太字で表示されます。", "wlnote": "$3 $4 までの{{PLURAL:$2|$2時間}}になされた{{PLURAL:$1|$1件の変更}}は以下の通りです。", @@ -2167,6 +2189,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": "ページを削除", @@ -2325,6 +2348,7 @@ "undelete-error-long": "ファイルの復元中にエラーが発生しました:\n\n$1", "undelete-show-file-confirm": "ファイル「$1」の削除された$2$3の版を本当に閲覧しますか?", "undelete-show-file-submit": "はい", + "undelete-revision-row2": "$1 ($2) $3 . . $4 $5 $6 $7 $8", "namespace": "名前空間:", "invert": "選択したものを除く", "tooltip-invert": "選択した名前空間 (チェックを入れている場合は、関連付けられた名前空間も含む) のページの変更を非表示にするには、このボックスにチェックを入れる", @@ -2649,7 +2673,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」は取り込まれませんでした。", @@ -2740,6 +2764,7 @@ "tooltip-preferences-save": "設定を保存する", "tooltip-summary": "短い要約を入力してください", "interlanguage-link-title": "$2: $1", + "interlanguage-link-title-nonlang": "$1 – $2", "common.css": "/* ここに記述したCSSはすべての外装に反映されます */", "print.css": "/* ここに記述したCSSは印刷出力に影響します */", "noscript.css": "/* ここに記述したCSSはJavaScriptを無効にしている利用者に影響します */", @@ -2870,7 +2895,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 画像の、サムネイルはアニメーションされません。", @@ -2880,6 +2905,7 @@ "newimages-legend": "絞り込み", "newimages-label": "ファイル名 (またはその一部):", "newimages-user": "IPアドレスまたは利用者名:", + "newimages-newbies": "新規利用者の投稿のみ表示", "newimages-showbots": "ボットによるアップロードを表示", "newimages-hidepatrolled": "巡回済みのアップロードを隠す", "noimages": "表示できるものがありません。", @@ -2947,11 +2973,16 @@ "variantname-shi-tfng": "シルハ語 (ティフィナグ文字)", "variantname-shi-latn": "シルハ語 (ラテン文字)", "variantname-shi": "シルハ語", + "variantname-uz": "uz", + "variantname-uz-latn": "uz-Latn", + "variantname-uz-cyrl": "uz-Cyrl", "metadata": "メタデータ", "metadata-help": "このファイルには、追加情報があります (おそらく、作成やデジタル化する際に使用したデジタルカメラやスキャナーが追加したものです)。\nこのファイルが元の状態から変更されている場合、修正されたファイルを完全に反映していない項目がある場合があります。", "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", + "metadata-langitem": "$2: $1", + "metadata-langitem-default": "$1", "exif-imagewidth": "画像の幅", "exif-imagelength": "画像の高さ", "exif-bitspersample": "画像のビットの深さ", @@ -2997,6 +3028,7 @@ "exif-exposuretime": "露出時間", "exif-exposuretime-format": "$1秒 ($2)", "exif-fnumber": "F値", + "exif-fnumber-format": "f/$1", "exif-exposureprogram": "露出プログラム", "exif-spectralsensitivity": "スペクトル感度", "exif-isospeedratings": "ISO 感度", @@ -3010,6 +3042,7 @@ "exif-lightsource": "光源", "exif-flash": "フラッシュ", "exif-focallength": "レンズ焦点距離", + "exif-focallength-format": "$1 ミリ", "exif-subjectarea": "被写体領域", "exif-flashenergy": "フラッシュ強度", "exif-focalplanexresolution": "焦点面の幅の解像度", @@ -3064,6 +3097,7 @@ "exif-gpsareainformation": "測位地点の名称", "exif-gpsdatestamp": "GPS日付", "exif-gpsdifferential": "GPS補正測位", + "exif-coordinate-format": "$4$1度$2分$3秒", "exif-jpegfilecomment": "JPEGファイルのコメント", "exif-keywords": "キーワード", "exif-worldregioncreated": "写真が撮影された大陸/地域", @@ -3128,15 +3162,28 @@ "exif-personinimage": "映っている人物", "exif-originalimageheight": "トリミングされる前の画像の高さ", "exif-originalimagewidth": "トリミングされる前の画像の幅", + "exif-contact-value": "$1\n\n$2\n
    \n$3\n\n$4, $5, $6 $7\n
    \n$8", + "exif-subjectnewscode-value": "$2 ($1)", "exif-compression-1": "無圧縮", "exif-compression-2": "CCITT Group 3 1次元修正ハフマン連長符号化", "exif-compression-3": "CCITT Group 3 ファックス符号化", "exif-compression-4": "CCITT Group 4 ファックス符号化", + "exif-compression-5": "LZW", "exif-compression-6": "JPEG (旧式)", + "exif-compression-7": "JPEG", + "exif-compression-8": "Deflate (Adobe)", + "exif-compression-32773": "PackBits (Macintosh RLE)", + "exif-compression-32946": "Deflate (PKZIP)", + "exif-compression-34712": "JPEG2000", "exif-copyrighted-true": "著作権あり", "exif-copyrighted-false": "著作権情報未設定", "exif-photometricinterpretation-0": "黒と白(白が0です)", "exif-photometricinterpretation-1": "黒と白(黒が0)", + "exif-photometricinterpretation-2": "RGB", + "exif-photometricinterpretation-3": "Palette", + "exif-photometricinterpretation-5": "Separated (Probably CMYK)", + "exif-photometricinterpretation-6": "YCbCr", + "exif-photometricinterpretation-8": "CIE L*a*b*", "exif-photometricinterpretation-9": "CIE L*a*b* (ICC エンコード)", "exif-photometricinterpretation-10": "CIE L*a*b* (ITU エンコード)", "exif-photometricinterpretation-32803": "カラーフィルター配列", @@ -3154,8 +3201,15 @@ "exif-planarconfiguration-2": "面順次フォーマット", "exif-xyresolution-i": "$1dpi", "exif-xyresolution-c": "$1dpc", + "exif-colorspace-1": "sRGB", "exif-colorspace-65535": "その他", "exif-componentsconfiguration-0": "存在しない", + "exif-componentsconfiguration-1": "Y", + "exif-componentsconfiguration-2": "Cb", + "exif-componentsconfiguration-3": "Cr", + "exif-componentsconfiguration-4": "R", + "exif-componentsconfiguration-5": "G", + "exif-componentsconfiguration-6": "B", "exif-exposureprogram-0": "未定義", "exif-exposureprogram-1": "マニュアル", "exif-exposureprogram-2": "ノーマルプログラム", @@ -3189,6 +3243,10 @@ "exif-lightsource-17": "標準光A", "exif-lightsource-18": "標準光B", "exif-lightsource-19": "標準光C", + "exif-lightsource-20": "D55", + "exif-lightsource-21": "D65", + "exif-lightsource-22": "D75", + "exif-lightsource-23": "D50", "exif-lightsource-24": "ISOスタジオタングステン", "exif-lightsource-255": "その他の光源", "exif-flash-fired-0": "フラッシュ発光せず", @@ -3278,6 +3336,7 @@ "exif-dc-type": "メディアの種類", "exif-rating-rejected": "却下", "exif-isospeedratings-overflow": "65535より大きい", + "exif-maxaperturevalue-value": "$1 APEX (f/$2)", "exif-iimcategory-ace": "芸術、文化、娯楽", "exif-iimcategory-clj": "犯罪と法律", "exif-iimcategory-dis": "災害、事故", @@ -3347,12 +3406,16 @@ "colon-separator": ": ", "pipe-separator": " | ", "word-separator": " ", + "ellipsis": "…", + "percent": "$1%", "parentheses": "($1)", + "brackets": "[$1]", "quotation-marks": "「$1」", "imgmultipageprev": "←前ページ", "imgmultipagenext": "次ページ→", "imgmultigo": "表示", "imgmultigoto": "ページ$1に移動", + "img-lang-opt": "$2 ($1)", "img-lang-default": "(既定の言語)", "img-lang-info": "この画像を $1 で描画する。$2", "img-lang-go": "実行", @@ -3419,7 +3482,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": "関連する変更を表示", @@ -3478,6 +3541,7 @@ "hebrew-calendar-m11-gen": "アブ", "hebrew-calendar-m12-gen": "エルール", "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|トーク]])", + "timezone-utc": "UTC", "timezone-local": "ローカル", "duplicate-defaultsort": "警告: 既定のソートキー「$2」が、その前に書かれている既定のソートキー「$1」を上書きしています。", "duplicate-displaytitle": "警告: DISPLAYTITLE「$2」が、その前に書かれているDISPLAYTITLE「$1」を上書きしています。", @@ -3490,6 +3554,7 @@ "version-parserhooks": "構文解析フック", "version-variables": "変数", "version-antispam": "スパム対策", + "version-api": "API", "version-other": "その他", "version-mediahandlers": "メディアハンドラー", "version-hooks": "フック", @@ -3551,7 +3616,7 @@ "fileduplicatesearch-noresults": "「$1」という名前のファイルはありません。", "specialpages": "特別ページ", "specialpages-note-top": "凡例", - "specialpages-note": "* 通常の特別ページ\n* 制限されている特別ページ", + "specialpages-note-restricted": "* 標準の特別ページ\n* 制限された特別ページ", "specialpages-group-maintenance": "メンテナンス報告", "specialpages-group-other": "その他の特別ページ", "specialpages-group-login": "ログインまたはアカウント作成", @@ -3670,6 +3735,10 @@ "compare-invalid-title": "指定したページ名は無効です。", "compare-title-not-exists": "指定したページは存在しません。", "compare-revision-not-exists": "指定した版は存在しません。", + "diff-form": "差分", + "diff-form-submit": "差分を表示", + "permanentlink": "固定リンク", + "permanentlink-revid": "版 ID", "dberr-problems": "申し訳ありません! このウェブサイトに技術的な障害が発生しています。", "dberr-again": "数分間待った後、もう一度読み込んでください。", "dberr-info": "(データベース $1 にアクセスできません)", @@ -3828,13 +3897,17 @@ "limitreport-walltime": "実時間", "limitreport-walltime-value": "$1 {{PLURAL:$1|秒}}", "limitreport-ppvisitednodes": "プリプロセッサが訪問したノード数", + "limitreport-ppvisitednodes-value": "$1/$2", "limitreport-ppgeneratednodes": "プリプロセッサが生成したノード数", + "limitreport-ppgeneratednodes-value": "$1/$2", "limitreport-postexpandincludesize": "参照読み込みの展開後のサイズ", "limitreport-postexpandincludesize-value": "$1/$2 {{PLURAL:$2|バイト}}", "limitreport-templateargumentsize": "テンプレート引数のサイズ", "limitreport-templateargumentsize-value": "$1/$2 {{PLURAL:$2|バイト}}", "limitreport-expansiondepth": "展開の最大深さ", + "limitreport-expansiondepth-value": "$1/$2", "limitreport-expensivefunctioncount": "高負荷パーサー関数の数", + "limitreport-expensivefunctioncount-value": "$1/$2", "expandtemplates": "テンプレートを展開", "expand_templates_intro": "この特別ページは、入力したテキストに含まれるすべてのテンプレートを再帰的に展開します。\n{{#language:…}} のようなパーサー関数や、\n{{CURRENTDAY}} のような変数も展開します。\nつまり、二重中括弧で囲まれたものほぼすべてを展開します。", "expand_templates_title": "{{FULLPAGENAME}} などで使用するページ名:", @@ -3873,6 +3946,7 @@ "default-skin-not-found-row-disabled": "* $1 / $2 (無効)", "mediastatistics": "メディア統計", "mediastatistics-summary": "アップロードされたファイルの種類に関する統計です。これはファイルの最新バージョンのみを含みます。以前のまたは削除されたバージョンについては除外されています。", + "mediastatistics-nfiles": "$1 ($2%)", "mediastatistics-nbytes": "{{PLURAL:$1|$1 バイト}} ($2; $3%)", "mediastatistics-bytespertype": "このセクションの総ファイルサイズは {{PLURAL:$1|$1 バイト}} ($2、$3%) です。", "mediastatistics-allbytes": "全ファイルの総ファイルサイズは {{PLURAL:$1|$1 バイト}} ($2) です。", @@ -3890,6 +3964,7 @@ "mediastatistics-header-text": "テキスト", "mediastatistics-header-executable": "実行ファイル", "mediastatistics-header-archive": "圧縮フォーマット", + "mediastatistics-header-3d": "3D", "mediastatistics-header-total": "すべてのファイル", "json-warn-trailing-comma": "JSON の末尾の{{PLURAL:$1|カンマ $1 個}}を除去しました", "json-error-unknown": "JSON に問題点がありました。エラー: $1", @@ -3926,7 +4001,9 @@ "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-dateinput-placeholder-day": "YYYY-MM-DD", + "mw-widgets-dateinput-placeholder-month": "YYYY-MM", "mw-widgets-mediasearch-input-placeholder": "メディアを検索", "mw-widgets-mediasearch-noresults": "見つかりませんでした。", "mw-widgets-titleinput-description-new-page": "ページは存在しません", @@ -4023,8 +4100,10 @@ "authmanager-provider-password-domain": "パスワードおよびドメインベースの認証", "authmanager-provider-temporarypassword": "仮パスワード", "authprovider-confirmlink-message": "最近のログイン試行に基づいて、以下のアカウントはあなたのウィキのアカウントに関連付けできます。関連付けることで、各々のアカウントを経由してログインすることを可能にします。関連付けるアカウントを選択してください。", + "authprovider-confirmlink-option": "$1 ($2)", "authprovider-confirmlink-request-label": "関連付けるアカウント", "authprovider-confirmlink-success-line": "$1: 関連付けが完了しました。", + "authprovider-confirmlink-failed-line": "$1: $2", "authprovider-confirmlink-failed": "アカウントの関連付けは完了されませんでした: $1", "authprovider-confirmlink-ok-help": "関連付けのエラーメッセージが表示された後に続行します。", "authprovider-resetpass-skip-label": "スキップ", @@ -4075,5 +4154,7 @@ "gotointerwiki-external": "{{SITENAME}}を離れ、別のウェブサイトである[[$2]]を訪れようとしています。\n\n'''[$1 $1に行く]'''", "undelete-cantedit": "このページを編集する許可がないため復元できません。", "undelete-cantcreate": "同名のページが存在せず、このページを作成する許可がないため復元できません。", - "pagedata-not-acceptable": "該当する形式が見つかりません。対応している MIME タイプ: $1" + "pagedata-title": "ページ・データ", + "pagedata-not-acceptable": "該当する形式が見つかりません。対応している MIME タイプ: $1", + "pagedata-bad-title": "「$1」は無効なページ名です。" } 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 069c712a65..9433ba4c55 100644 --- a/languages/i18n/jv.json +++ b/languages/i18n/jv.json @@ -30,12 +30,12 @@ "tog-showtoolbar": "Tuduhaké wilah piranti sarana besut", "tog-editondblclick": "Besut kaca sarana ngeklik pindho", "tog-editsectiononrightclick": "Idinaké mbesut pérangan sarana klik tengen ing sesirahing pérangan", - "tog-watchcreations": "Wuwuh kaca gawéanku lan barkas unggahanku nyang pawawanganku", - "tog-watchdefault": "Wuwuh kaca lan barkas besutanku nyang pawawanganku", - "tog-watchmoves": "Wuwuh kaca lan barkas lih-lihanku nyang pawawanganku", - "tog-watchdeletion": "Wuwuh kaca lan barkas busakanku nyang pawawanganku", - "tog-watchuploads": "Wuwuh barkas anyar unggahanku nyang pawawanganku", - "tog-watchrollback": "Wuwuh kaca sing takpulihaké nyang pawawanganku", + "tog-watchcreations": "Wuwuh kaca gawéanku lan barkas unggahanku menyang pawawanganku", + "tog-watchdefault": "Wuwuh kaca lan barkas besutanku menyang pawawanganku", + "tog-watchmoves": "Wuwuh kaca lan barkas lih-lihanku menyang pawawanganku", + "tog-watchdeletion": "Wuwuh kaca lan barkas busakanku menyang pawawanganku", + "tog-watchuploads": "Wuwuh barkas anyar unggahanku menyang pawawanganku", + "tog-watchrollback": "Wuwuh kaca sing takpulihaké menyang pawawanganku", "tog-minordefault": "Tengeri kabèh besutan minangka besutan cilik sacara baku", "tog-previewontop": "Deleng pratuduh sadurungé mbesut kothak", "tog-previewonfirst": "Delelng pratuduh nalika mbesut pisanan", @@ -56,11 +56,11 @@ "tog-watchlisthideanons": "Dhelikaké saka pawawangan besutaning para anonim", "tog-watchlisthidepatrolled": "Dhelikaké besutan ingawasan saka pawawangan", "tog-watchlisthidecategorization": "Dhelikaké kategorisasi kaca", - "tog-ccmeonemails": "Kirimi aku turunan layang-èl sing takkirim nyang wong liya", + "tog-ccmeonemails": "Kirimi aku turunan layang-èl sing takkirim menyang wong liya", "tog-diffonly": "Aja tuduhaké isiné kaca sangisoré bédané besutan", "tog-showhiddencats": "Tuduhaké kategori sing didhelikaké", "tog-norollbackdiff": "Aja tuduhaké béda sawisé ngayahi bebalèn", - "tog-useeditwarning": "Élingaké kula yèn kula ninggalaké suntingan sing durung kasimpen", + "tog-useeditwarning": "Élingaké kula yèn ninggal kaca besutan sadurungé nyimpen", "tog-prefershttps": "Tansah nganggo sambungan sing aman nalika mlebu log", "underline-always": "Tansah", "underline-never": "Ora tau", @@ -168,7 +168,7 @@ "variants": "Varian", "navigation-heading": "Menu navigasi", "errorpagetitle": "Masalah", - "returnto": "Bali nyang $1.", + "returnto": "Bali menyang $1.", "tagline": "Saka {{SITENAME}}", "help": "Pitulung", "search": "Golèk", @@ -176,15 +176,15 @@ "searchbutton": "Golèk", "go": "Menyang", "searcharticle": "Menyang", - "history": "Sujarah kaca", - "history_short": "Sujarah", - "history_small": "sujarah", + "history": "Sajarah kaca", + "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", - "view-foreign": "Deleng nyang $1", + "view-foreign": "Deleng ing $1", "edit": "Besut", "edit-local": "Besut andharan enggon-enggonan", "create": "Gawé", @@ -198,7 +198,7 @@ "newpage": "Kaca anyar", "talkpagelinktext": "rembugan", "specialpage": "Kaca mirunggan", - "personaltools": "Piranti priangga", + "personaltools": "Piranti pribadi", "talk": "Parembugan", "views": "Praèn", "toolbox": "Piranti", @@ -215,7 +215,7 @@ "redirectedfrom": "(Dilih saka $1)", "redirectpagesub": "Alih kaca", "redirectto": "Ngalih menyang:", - "lastmodifiedat": "Kaca iki dibesut pungkasan nalika $1, pukul $2.", + "lastmodifiedat": "Kaca iki dibesut kèri dhéwé dhèk $1, pukul $2.", "viewcount": "Kaca iki wis diaksès ping {{PLURAL:$1|siji|$1}}.", "protectedpage": "Kaca kareksa", "jumpto": "Jujug:", @@ -227,8 +227,8 @@ "pool-queuefull": "Kempalan antrian kebak", "pool-errorunknown": "Kalepata ingkang mboten dipun mangertosi", "poolcounter-usage-error": "Masalah pangguna: $1", - "aboutsite": "Ngenani {{SITENAME}}", - "aboutpage": "Project:Ngenani", + "aboutsite": "Bab {{SITENAME}}", + "aboutpage": "Project:Bab", "copyright": "Isi cumepak kanthi pangayoman $1, kajaba ana katerangan liyané.", "copyrightpage": "{{ns:project}}:Hak cipta", "currentevents": "Kadadéan saiki", @@ -242,8 +242,8 @@ "policy-url": "Project:Kabijakan", "portal": "Gapura paguyuban", "portal-url": "Project:Garupa paguyuban", - "privacy": "Pranatan bab priangga", - "privacypage": "Project:Pranatan bab priangga", + "privacy": "Pranatan bab privasi", + "privacypage": "Project:Pranatan bab privasi", "badaccess": "Aksès ora olèh", "badaccess-group0": "Panjenengan ora pareng nglakokaké tindhakan sing panjenengan gayuh.", "badaccess-groups": "Pratingkah panjenengan diwatesi tumrap panganggo ing {{PLURAL:$2|klompoké|klompoké}}: $1.", @@ -251,7 +251,7 @@ "versionrequiredtext": "MediaWiki vèrsi $1 dibutuhaké kanggo nggunakaké kaca iki. Mangga mirsani [[Special:Version|kaca iki]]", "ok": "Oké", "retrievedfrom": "Dijupuk saka \"$1\"", - "youhavenewmessages": "Panjenengan kagungan $1 ($2).", + "youhavenewmessages": "{{PLURAL:$3|Panjenengan duwé}} $1 ($2).", "youhavenewmessagesfromusers": "{{PLURAL:$4|Panjenengan duwé}} $1 saka {{PLURAL:$3|panganggo liya|$3 panganggo}} ($2).", "youhavenewmessagesmanyusers": "Panjenengan duwé $1 saka manéka panganggo ($2).", "newmessageslinkplural": "{{PLURAL:$1|layang anyar|999=layang anyar}}", @@ -281,7 +281,7 @@ "site-atom-feed": "Lebon atom $1", "page-rss-feed": "\"$1\" ''RSS Feed''", "page-atom-feed": "\"$1\" ''Atom Feed''", - "red-link-title": "$1 (kaca durung ana)", + "red-link-title": "$1 (kaca ora ana)", "sort-descending": "Urutaké medhun", "sort-ascending": "Urutaké munggah", "nstab-main": "Kaca", @@ -331,7 +331,7 @@ "delete-hook-aborted": "Pambusakan dibatalaké déning ''hook''.\nOra ana alesané.", "no-null-revision": "Ora isa nggawe revisi 'null' anyar kanggo kaca \"$1\"", "badtitle": "Sesirah ala", - "badtitletext": "Sesirahing kaca sing dikarepaké ora sah, suwung, utawa salah nggayut nyang sesirah antarabasa utawa antarawiki.\nIku mungkin ngandhut pralambang siji utawa luwih sing ora kena dianggo tumrap sesirah iki.", + "badtitletext": "Sesirahing kaca sing disuwun ora trep, kosong, utawa salah nggayut menyang sesirah antarabasa utawa antarawiki.\nMungkin tulisané ngandhut pralambang cacah siji utawa luwih sing ora kena dianggo tumraping sesirah.", "title-invalid-empty": "Sesirah kaca sing dikarepaké kosong utawa mung ngemu jenengé mandala-aran.", "title-invalid-utf8": "Sesirah kaca sing dikarepaké ngemu reroncèn UTF-8 sing ora sah.", "title-invalid-interwiki": "Sesirah kaca sing dikarepaké ngemu pranala interwiki sing ora bisa dicakaké dadi sesirah", @@ -350,7 +350,7 @@ "actionthrottledtext": "Minangka upaya lumawan tumindak salah-guna, panjenengan diwatesi nalika ngayahi iki ping bola-bali tur rikat, lan panjenengan wis munjuli watesané.\nMangga jajalen manèh mengko.", "protectedpagetext": "Kaca iki wis direksa supaya ora dibesut lan diapa-apakaké.", "viewsourcetext": "Panjenengan bisa ndeleng lan nurun sumberé kaca iki.", - "viewyourtext": "Panjenengan bisa ndeleng lan nurun sumberé besutané panjenengan nyang kaca iki.", + "viewyourtext": "Panjenengan bisa ndeleng lan nurun sumberé besutané panjenengan menyang kaca iki.", "protectedinterface": "Kaca iki isiné tèks antarmuka sing dienggo software lan wis dikunci kanggo menghindari kasalahan.", "editinginterface": "Pélik: Panjenengan lagi mbesut kaca sing kanggo ngisèni tèks mukantarané piranti alus.\nOwahan tumrap kaca iki bakal mrabawani cakriké mukantarané panganggo liya ing wiki iki.", "translateinterface": "Saperlu nambah utawa ngowah pertalan tumrap kabèh wiki, mangga anggoa [https://translatewiki.net/ translatewiki.net] minangka proyèk panglokaling MediaWiki.", @@ -389,7 +389,7 @@ "yourpasswordagain": "Tik manèh tembung wadiné:", "createacct-yourpasswordagain": "Konfirmasi tembung wadi", "createacct-yourpasswordagain-ph": "Lebokaké manèh tembung wadiné", - "userlogin-remembermypassword": "Gawé amrih aku panggah kalebu", + "userlogin-remembermypassword": "Gawé supaya panggah mlebu log", "userlogin-signwithsecure": "Nganggo koneksi aman", "cannotlogin-title": "Ora bisa mlebu log", "cannotlogin-text": "Mokal mlebu log.", @@ -417,7 +417,7 @@ "createacct-emailoptional": "Alamat layang-èl (manasuka)", "createacct-email-ph": "Isinen layang-èlé panjenengan", "createacct-another-email-ph": "Isi alamat layang-èl", - "createaccountmail": "Anggonen tembung wadi sembarang sauntara lan kirimen nyang alamat layang-èl sing dikarepaké", + "createaccountmail": "Anggonen tembung wadi sembarang sauntara lan kirimen iku menyang alamat layang-èl sing dikarepaké", "createacct-realname": "Jeneng asli (manasuka)", "createacct-reason": "Alesan", "createacct-reason-ph": "Alesané panjenengan nggawé akun liya", @@ -460,10 +460,10 @@ "noemailcreate": "Panjenengan kudu maringi alamat e-mail sing absah", "passwordsent": "Tembung sandi anyar wis dikirim menyang alamat layang èlèktronik tumrap \"$1\". \nMangga mlebu log manèh sawisé panjenengan nampa iku.", "blocked-mailpassword": "Alamat IP-né panjenengan diblokir saka mbesut. Kanggo ngéndhani tumindak salah-guna, ora diparengaké nganggo pamulihan tembung wadi saka alamat IP iki.", - "eauthentsent": "Layang-èl konfirmasi wis dikirim nyang alamat layang-èl sing diisèkaké. Sadurungé ana layang-èl liyané sing dikirim nyang akun iku, panjenengan kudu nuruti arahan ana ing layang-èl iku saperlu ngonfirmasi yèn akun iku pancèn duwèké panjenengan.", + "eauthentsent": "Layang-èl konfirmasi wis dikirim menyang alamat layang-èl sing diisèkaké. Sadurungé ana layang-èl liyané sing dikirim menyang akun iku, panjenengan kudu nuruti arahan ana ing layang-èl iku saperlu ngonfirmasi yèn akun iku pancèn duwèké panjenengan.", "throttled-mailpassword": "Layang kanggo mbalèkaké tembung sandhi wis dikirim sasuwené ing {{PLURAL:$1|jam|$1 jam}}.\nKanggo nyegah ananing tumindhak culika, namung sak layang kanggo mbalèkaké tembung sandhi sing bakal dikirim sasuwéné ing {{PLURAL:$1|jam|$1 jam}}.", "mailerror": "Masalah pangirim layang: $1", - "acct_creation_throttle_hit": "Para neneka nyang wiki iki sing nganggo alamat IP-né panjenengan wis gawé {{PLURAL:$1|akun cacah 1|akun cacah $1}} sajeroné $2 pungkasan, sing cacahé nyandhak cacah maksimum sing diidinaké.\nTemahané, para neneka sing nganggo alamat IP iki ora bisa gawé akun manèh sauntara iki.", + "acct_creation_throttle_hit": "Para neneka menyang wiki iki sing nganggo alamat IP-né panjenengan wis gawé {{PLURAL:$1|akun cacah 1|akun cacah $1}} sajeroné $2 pungkasan, sing cacahé nyandhak cacah maksimum sing diidinaké.\nTemahané, para neneka sing nganggo alamat IP iki ora bisa gawé akun manèh sauntara iki.", "emailauthenticated": "Alamat layang-èlé panjenengan wis dikonfirmasi ing tanggal $2 pukul $3.", "emailnotauthenticated": "Alamat layang-èlé panjenengan durung dikonfirmasi.\nLayang-èl ora bakal dikirim yèn gegayutan karo fitur-fitur iki.", "noemailprefs": "Panjenengan kudu milih alamat e-mail supaya bisa nganggo fitur iki.", @@ -501,7 +501,7 @@ "changepassword-throttled": "Panjenengan wis kakèhan njajal mlebu log.\nTulung nunggu dhisik $1 sadurungé njajal manèh.", "botpasswords": "Tembung wadi bot", "botpasswords-disabled": "Tembung wadiné bot dipatèni.", - "botpasswords-no-central-id": "Saperlu nganggo tembung wadiné bot, panjenengan kudu mlebu log nyang akun séntral.", + "botpasswords-no-central-id": "Saperlu nganggo tembung wadiné bot, panjenengan kudu mlebu log menyang akun séntral.", "botpasswords-existing": "Tembung wadiné bot sing cumepak", "botpasswords-createnew": "Gawé anyar tembung wadiné bot", "botpasswords-editexisting": "Besut tembung wadiné bot sing anyar", @@ -579,9 +579,9 @@ "showpreview": "Deleng pratuduh", "showdiff": "Tuduhaké owahan", "anoneditwarning": "Pènget: Panjenengan durung mlebu log. Alamat IP-né panjenengan bakal katon marang wong akèh manawa panjenengan mbesut. Manawa panjenengan [$1 mlebu log] utawa [$2 nggawé akun], besutané panjenengan bakal dadi darbéné naragunané panjenengan lan uga ana kauntungan liya.", - "anonpreviewwarning": "Panjenengan durung mlebu log. Yèn disimpen, alamat IP panjenengan bakal kacathet ing sujarah besutan kaca iki.", + "anonpreviewwarning": "Panjenengan durung mlebu log. Yèn disimpen, alamat IP panjenengan bakal kacathet ing sajarah besutan kaca iki.", "missingsummary": "Pangéling-éling: Panjenengan ora ngisèni ringkesané besutan.\nManawa panjenengan mencèt \"$1\" manèh, besutané panjengan bakal kasimpen tanpa katerangan.", - "selfredirect": "Pélik: Sampéyan ngalih kaca iki iya nyang kaca iki dhéwé.\nSampéyan mungkin salah wènèh tujuan kanggo alihan utawa salah mbesut kaca.\nYèn sampéyan ngeklik \"$1\" manèh, kaca alihan bakal digawé.", + "selfredirect": "Pepéling: Panjenengan ngalih kaca iki menyang kaca iki dhéwé.\nPanjenengan mungkin salah wènèh paraning alihan utawa salah mbesut kaca.\nYèn panjenengan ngeklik \"$1\" manèh, kaca alihan bakal digawé.", "missingcommenttext": "Mangga isi tanggepan ing ngisor iki.", "missingcommentheader": "'''Pangéling:''' Sampéyan durung nyadhiyakaké judhul/jejer kanggo tanggepan iki.\nYèn Sampéyan klik \"$1\" manèh, suntingan Sampéyan bakal kasimpen tanpa kuwi.", "summary-preview": "Pratuduh ringkesan besutan:", @@ -591,7 +591,7 @@ "blockedtext": "Asma panganggo utawa alamat IP panjenengan diblokir.\n\nBlokir iki sing nglakoni $1.\nAlesané $2.\n\n* Diblokir wiwit: $8\n* Kadaluwarsa pemblokiran ing: $6\n* Sing arep diblokir: $7\n\nPanjenengan bisa ngubungi $1 utawa [[{{MediaWiki:Grouppage-sysop}}|pangurus liyané]] kanggo ngomongaké prakara iki.\n\nPanjenengan ora bisa nggunakaké fitur 'Kirim layang é-mail panganggo iki' kejaba panjenengan wis nglebokaké alamat é-mail sing sah ing [[Special:Preferences|prèferènsi]] panjenengan.\n\nAlamat IP panjenengan iku $3, lan ID pamblokiran iku #$5.\nTulung kabèh informasi ing ndhuwur iki disertakaké ing saben pitakon panjenengan.", "autoblockedtext": "Alamat IP-né panjenangan wis otomatis diblokir amarga dienggo déning panganggo liyané, sing diblokir déning $1.\n\n:$2\n\n* Wiwit diblokir: $8\n* Rampung diblokir: $6\n* Sing diblokir: $7\n\nPanjenengan bisa ngubungi $1 utawa [[{{MediaWiki:Grouppage-sysop}}|pangurus]] liyané kanggo ngrembug blokirané.\n\nPanjenengan ora bisa nganggo fitur \"kirim layang-èl panganggo iki\" kajaba panjenengan wis ndhaftaraké alamat layang-èl sing trep ing [[Special:Preferences|pilalan panganggoné]] panjenengan lan panjenengan durung tau diblokir nalika nganggo iku.\n\nAlamat IP-né panjenengan sing saiki ya iku $3, lan ID blokirané ya iku $5. \nMangga wuwuhen kabèh rerincèn ing ndhuwur sajeroné samubarang pitakoné panjenengan.", "blockednoreason": "ora ana alesan sing diwènèhaké", - "whitelistedittext": "Sampéyan kudu $1 murih bisa mbesut kaca.", + "whitelistedittext": "Mangga $1 dhisik yèn arep mbesut kaca.", "confirmedittext": "Panjenengan kudu ndhedhes alamat e-mail dhisik sadurungé pareng nyunting sawijining kaca. Mangga nglebokaké lan validasi alamat e-mail panjenengan sadurungé nglakoni panyuntingan. Alamat e-mail sawisé bisa diowahi liwat [[Special:Preferences|kaca préférènsi]]", "nosuchsectiontitle": "Pérangan ora katemu", "nosuchsectiontext": "Panjenengan nyoba nyunting sawijining bagéan sing ora ana.\nBagéan iki manawa wis dipindhah utawa dibusak nalika panjenengan buka.", @@ -602,14 +602,14 @@ "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 sujarah sing wis lawas saka sawijiné kaca sing wis dibusak.\nRerincèné bisa digolèki ing [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log busak].", + "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].", "userpage-userdoesnotexist": "Akun panganggo \"$1\" ora kadhaftar.\nMangga pesthèkaké dhisik yèn panjenengan péngin nggawé/mbesut kaca iki.", "userpage-userdoesnotexist-view": "Akun panganggo \"$1\" ora kadhaftar.", "blocked-notice-logextract": "Panganggo iki saiki lagi diblokir.\nLog pamblokiran pungkasan dituduhaké ing ngisor iki minangka bahan rujukan:", - "clearyourcache": "Cathetan: Nalika rampung nyimpen, panjenengan kudu mbusak cache-né pangluruné panjenengan supaya owahané ketara.\n* Firefox / Safari: Pencèt Shift nalika ngeklik Reload, utawa pencèt Ctrl-F5 utawa Ctrl-R (⌘-R ing Mac)\n* Google Chrome: Pencèt Ctrl-Shift-R (⌘-Shift-R ing Mac)\n* Internet Explorer: Pencèt Ctrl nalika ngeklik Refresh, utawa pencèt Ctrl-F5\n* Opera: Nyang Menu → Settings (Opera → Preferences ing Mac) nuli nyang Privacy & security → Clear browsing data → Cached images and files.", + "clearyourcache": "Cathetan: Nalika rampung nyimpen, panjenengan kudu mbusak telihing pangluruné panjenengan supaya owahané katon.\n* Firefox / Safari: Pencèt Shift nalika ngeklik Reload, utawa pencèt Ctrl-F5 utawa Ctrl-R (⌘-R ing Mac)\n* Google Chrome: Pencèt Ctrl-Shift-R (⌘-Shift-R ing Mac)\n* Internet Explorer: Pencèt Ctrl nalika ngeklik Refresh, utawa pencèt Ctrl-F5\n* Opera: Menyang Menu → Settings (Opera → Preferences ing Mac) nuli menyang Privacy & security → Clear browsing data → Cached images and files.", "usercssyoucanpreview": "'''Tips:''' Gunakna tombol \"{{int:showpreview}}\" kanggo ngetès CSS anyar panjenengan sadurungé disimpen.", "userjsyoucanpreview": "'''Tips:''' Gunakna tombol \"{{int:showpreview}}\" kanggo ngetès JavaScript anyar panjenengan sadurungé disimpen.", "usercsspreview": "'''Pèngeten yèn panjenengan namung mirsani pratilik CSS panjenengan.''''\n'''Pratilik iku durung kasimpen!'''", @@ -634,7 +634,6 @@ "explainconflict": "Wong liya wis nyunting kaca iki wiwit panjenengan mau nyunting.\nBagian dhuwur tèks iki ngamot tèks kaca vèrsi saiki.\nPangowahan sing panjenengan lakoni dituduhaké ing bagian ngisor tèks.\nPanjenengan namung prelu nggabungaké pangowahan panjenengan karo tèks sing wis ana.\n'''Namung''' tèks ing bagian dhuwur kaca sing bakal kasimpen menawa panjenengan mencèt \"$1\".", "yourtext": "Tèksé panjenengan", "storedversion": "Owahan kasimpen", - "nonunicodebrowser": "'''PÈNGET: Panjlajah wèb panjenengan ora ndhukung Unicode, mangga gantènana panjlajah wèb panjenengan sadurungé nyunting artikel.'''", "editingold": "'''PÈNGET:''' Panjenengan nyunting revisi lawas sawijining kaca. Yèn versi iki panjenengan simpen, mengko pangowahan-pangowahan sing wis digawé wiwit revisi iki bakal ilang.", "yourdiff": "Béda", "copyrightwarning": "Tulung dipun-gatèkaké menawa kabèh sumbangsih utawa kontribusi kanggo {{SITENAME}} iku dianggep wis diluncuraké miturut $2 GNU (mangga priksanen $1 kanggo ditèlé).\nMenawa panjenengan ora kersa menawa tulisan panjenengan bakal disunting karo disebar, aja didokok ing kéné.
    \nPanjenengan uga janji menawa apa-apa sing katulis ing kéné, iku karyané panjenengan dhéwé, utawa disalin saka sumber bébas. '''AJA NDOKOK KARYA SING DIREKSA DÉNING UNDHANG-UNDHANG HAK CIPTA TANPA IDIN!'''", @@ -656,16 +655,16 @@ "nocreate-loggedin": "Panjenengan ora kagungan idin kanggo nggawé kaca anyar.", "sectioneditnotsupported-title": "Panyuntingan bagéyan ora kasengkuyungan", "sectioneditnotsupported-text": "Ora bisa mbesut sapérangan ana ing kaca iki.", - "permissionserrors": "Palilan ora diolèhaké", + "permissionserrors": "Masalah idin", "permissionserrorstext": "Panjengan ora kagungan idin kanggo nglakoni sing panjenengan gayuh amerga {{PLURAL:$1|alesan|alesan-alesan}} iki:", "permissionserrorstext-withaction": "Panjenengan ora duwé hak aksès kanggo $2, amarga {{PLURAL:$1|alasan|alasan}} ing ngisor iki:", "recreate-moveddeleted-warn": "'''Pènget: Panjenengan gawé manèh sawijining kaca sing wis tau dibusak.'''\n\nMangga digagas manèh apa pantes nerusaké nyunting kaca iki.\nIng ngisor iki kapacak log pambusakan lan pamindhahan saka kaca iki:", - "moveddeleted-notice": "Kaca iki wis dibusak.\nLog busak lan alih ngenani kacané cumepak ing ngisor kanggo rujukan.", + "moveddeleted-notice": "Kaca iki wis dibusak.\nLog busak, reksa, lan alih bab kacané cumepak ing ngisor minangka rujukan.", "log-fulllog": "Deleng cathetan wutuh", "edit-hook-aborted": "Besutan diwurungaké déning cangkolan.\nOra ana katerangané.", "edit-gone-missing": "Ora bisa nganyari kaca.\nKatoné kaca iki wis dibusak.", "edit-conflict": "Cengkah besutan", - "edit-no-change": "Besutané panjenengan dilirwakaké amarga ora ana owahan apa-apa nyang tèksé.", + "edit-no-change": "Besutané panjenengan dilirwakaké amarga ora ana owahan apa-apa tumraping tèksé.", "postedit-confirmation-created": "Kaca wis kagawé.", "postedit-confirmation-saved": "Besutané panjenengan wis kasimpen.", "edit-already-exists": "Ora bisa nggawé kaca anyar.\nAmerga wis ana.", @@ -695,7 +694,7 @@ "parser-unstrip-recursion-limit": "Unstrip recursion limit exceeded ($1)", "converter-manual-rule-error": "Masalah kapranggul ing aturan konvèrsi basa manual", "undo-success": "Besutan iki kena diwurungaké.\nTiliki bandhingan ngisor iki saperlu mesthèkaké yèn bener iki sing arep kolakoni, nuli simpen owahan ngisor iki kanggo ngiyai yèn besutané diwurungaké.", - "undo-failure": "Suntingan iki ora bisa dibatalakén amerga ana konflik panyuntingan antara.", + "undo-failure": "Besutan iki ora bisa dipulihaké amarga bisa cengkah besutan antara.", "undo-norev": "Besutan iki ora bisa diwurungaké amarga wis ora ana utawa wis dibusak.", "undo-summary": "Mbalèkaké owahan $1 déning [[Special:Contributions/$2|$2]] ([[User talk:$2|rembugan]])", "undo-summary-username-hidden": "Balèkaké owahan $1 déning panganggo sing didhelikaké", @@ -704,32 +703,32 @@ "viewpagelogs": "Deleng cathetaning kaca iki", "nohistory": "Babading besutan kaca iki ora ana.", "currentrev": "Owahan anyaran", - "currentrev-asof": "Owahan wekasan kala $1", - "revisionasof": "Owahan kala $1", + "currentrev-asof": "Révisi wekasan kala $1", + "revisionasof": "Révisi kala $1", "revision-info": "Owahan $1 déning {{GENDER:$6|$2}}$7", - "previousrevision": "← Owahan sadurungé", - "nextrevision": "Owahan sabanjuré →", - "currentrevisionlink": "Owahan wekasan", - "cur": "sai", + "previousrevision": "← Révisi sadurungé", + "nextrevision": "Révisi sabanjuré →", + "currentrevisionlink": "Révisi wekasan", + "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é", "histlast": "anyar dhéwé", "historysize": "($1 {{PLURAL:$1|bét|bét}})", "historyempty": "(suwung)", - "history-feed-title": "Sujarah owahan", - "history-feed-description": "Sujarah owahaning kaca iki ing wiki", + "history-feed-title": "Sajarah owahan", + "history-feed-description": "Sajarah owahaning kaca iki ing wiki", "history-feed-item-nocomment": "$1 ing $2", "history-feed-empty": "Kaca sing disuwun ora ditemokaké. Mbokmenawa wis dibusak saka wiki, utawa diwènèhi jeneng anyar. Coba [[Special:Search|golèka ing wiki]] kanggo kaca anyar sing rélevan.", "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.", @@ -773,7 +772,7 @@ "logdelete-failure": "'''Aturan pandhelikan ora bisa disèt:'''\n$1", "revdel-restore": "Ngowahi visiblitas (pangatonan)", "pagehist": "Babading kaca", - "deletedhist": "Sujarah kabusak", + "deletedhist": "Sajarah kabusak", "revdelete-hide-current": "Gagal ndhelikaké révisi tanggal $2, $1: iki arupa révisi paling anyar.\nRévisi iki ora bisa didhelikaké.", "revdelete-show-no-access": "Gagal nampilaké révisi tanggal $1, jam $2: révisi iki wis ditandhani \"kawates\".\nPanjenengan ora nduwèni aksès menyang révisi iki.", "revdelete-modify-no-access": "Gagal ngowahi révisi tanggal $1, jam $2: révisi iki wis ditandhani \"kawates\".\nPanjenengan ora nduwèni aksès menyang révisi iki.", @@ -788,24 +787,24 @@ "revdelete-offender": "Juru pangriptaning owahan:", "suppressionlog": "Log barang-barang sing didelikaké (''oversight'')", "suppressionlogtext": "Ngisor iki daptar apa-apa waé sing wis dibusak lan diblokir kalebu kontèn sing didhelikaké saka para pangurus.\nDelok [[Special:BlockList|daptar blokiran]] sing isiné daptar apa-apa waé sing lagi dilarang lan diblokir.", - "mergehistory": "Gabung sujarah kaca", + "mergehistory": "Gabung sajarah kaca", "mergehistory-header": "Ing kaca iki panjenengan bisa nggabung révisi-révisi sajarah saka sawijining kaca sumber menyang kaca anyar.\nPastèkna yèn owah-owahan iki bakal netepaké kasinambungan sajarah kaca.", "mergehistory-box": "Gabungna revisi-revisi saka rong kaca:", "mergehistory-from": "Kaca sumber:", "mergehistory-into": "Kaca paran:", - "mergehistory-list": "Sujarah besutan sing bisa digabung", + "mergehistory-list": "Sajarah besutan sing bisa digabung", "mergehistory-merge": "Révisi-révisi sing kapacak ing ngisor iki saka [[:$1]] bisa digabungaké menyang [[:$2]].\nGunakna tombol radio kanggo nggabungaké révisi-révisi sing digawé sadurungé wektu tartamtu. Gatèkna, menawa nganggo pranala navigasi bakal ngesèt ulang kolom iki.", "mergehistory-go": "Tuduhaké besutan sing bisa digabung", "mergehistory-submit": "Gabung owahan", "mergehistory-empty": "Ora ana revisi sing bisa digabung.", - "mergehistory-done": "$3 {{PLURAL:$3|owahan}} $1 {{PLURAL:$3|wis}} digabungaké nyang [[:$2]].", + "mergehistory-done": "$3 {{PLURAL:$3|owahan}} $1 {{PLURAL:$3|wis}} digabungaké menyang [[:$2]].", "mergehistory-fail": "Ora bisa nggabung sajarah, coba dipriksa manèh kacané lan paramèter wektuné.", "mergehistory-fail-invalid-source": "Kaca sumber ora trep.", "mergehistory-fail-invalid-dest": "Kaca paran ora trep.", - "mergehistory-fail-no-change": "Panggabung sujarah ora nggabungaké rèvisi. Mangga priksanen kaca lan paramèter wektuné.", + "mergehistory-fail-no-change": "Panggabung sajarah ora nggabungaké rèvisi. Mangga priksanen kaca lan paramèter wektuné.", "mergehistory-fail-self-merge": "Kaca asal lan kaca paran padha.", "mergehistory-fail-timestamps-overlap": "Rèvisi asal tumpuk-undhung utawa njedhul sawisé révisi paran.", - "mergehistory-fail-toobig": "Ora bisa nggabungaké sujarah amarga {{PLURAL:$1|révisi}} sing arep dilih munjuli $1.", + "mergehistory-fail-toobig": "Ora bisa nggabungaké sajarah amarga {{PLURAL:$1|révisi}} sing arep dilih munjuli $1.", "mergehistory-no-source": "Kaca sumber $1 ora ana.", "mergehistory-no-destination": "Kaca paran $1 ora ana.", "mergehistory-invalid-source": "Kaca sumber kudu asesirah sing sah.", @@ -817,16 +816,16 @@ "mergelog": "Gabung log", "revertmerge": "Wurung gabung", "mergelogpagetext": "Ing ngisor iki kapacak daftar panggabungan sajarah kaca ing kaca liyané.", - "history-title": "Sujarah owahaning \"$1\"", - "difference-title": "Prabéda antara owahan \"$1\"", + "history-title": "Sajarah owahaning \"$1\"", + "difference-title": "Béda antarané révisi \"$1\"", "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)", - "diff-multi-sameuser": "({{PLURAL:$1|$1 owahan antara}} déning panganggo sing padha ora katuduhaké)", + "diff-empty": "(Ora ana béda)", + "diff-multi-sameuser": "({{PLURAL:$1|Sarévisi antara|$1 révisi antara}} déning panganggo sing padha sing ora katuduhaké)", "diff-multi-otherusers": "({{PLURAL:$1|Siji révisi langsung|$1 révisi langsung}} déning {{PLURAL:$2|siji panganggo liyané|$2 panganggo}} ora dituduhaké)", "diff-multi-manyusers": "({{PLURAL:$1Siji rèvisi sedhengan|$1 rèvisi sedhengan}} déning luwih saka $2 {{PLURAL:$2|panganggo|panganggo}} ora dituduhaké)", "difference-missing-revision": "{{PLURAL:$2|Sak pambenahan|$2 pambenahan}} saka prabédan iki ($1) {{PLURAL:$2|ora ditemokaké|ora ditemokaké}}.\n\nIki biasané kasebab pranala prabedan sing wis ora kanggo saka kaca isi wis dibusak.\nRinciané bisa ditemokaké nèng [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log busak].", @@ -844,14 +843,14 @@ "shown-title": "Tuduhaké $1 {{PLURAL:$1|kasil|kasil}} saben kaca", "viewprevnext": "Deleng ($1 {{int:pipe-separator}} $2) ($3)", "searchmenu-exists": "'''Ana kaca kanthi jeneng \"[[$1]]\" ing wiki iki'''", - "searchmenu-new": "Gawéa kaca \"[[:$1]]\" nyang wiki iki! {{PLURAL:$2|0=|Uga delenga kaca sing katemu sarana panggolèking sampéyan.|Uga delenga kasiling panggolèk.}}", + "searchmenu-new": "Gawéa kaca \"[[:$1]]\" ing wiki iki! {{PLURAL:$2|0=|Uga delenga kaca sing panjenengan temu.|Uga delenga kasiling panggolèk.}}", "searchprofile-articles": "Kaca isi", "searchprofile-images": "Multimédhia", "searchprofile-everything": "Kabèh", "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}})", @@ -968,7 +967,7 @@ "gender-unknown": "Nalika nyebut panjenengan, piranti alusé bakal nganggo tembung sing nétral jèndher sabisané", "gender-male": "Lanang", "gender-female": "Wadon", - "prefs-help-gender": "Setèlané pilalan iki sipaté manasuka.\nPiranti alusé nganggo ajiné kanggo ngarani lan nyebut panjenengan nyang liyan sarana tembung jèndher sing patut sacara paramasastra.\nKaterangan iki bakal kanton marang umum.", + "prefs-help-gender": "Setèlané pilalan iki sipaté manasuka.\nPiranti alusé nganggo ajiné saperlu nyeluk lan nyebut panjenengan tumraping liyan sarana tembung gèndher sing patut sacara paramasastra.\nKaterangan iki bakal kanton marang umum.", "email": "Layang-èl", "prefs-help-realname": "Jeneng asli ora kudu diisi.\nYèn diisi, jeneng asliné panjenengan bakal kanggo atribusi awit karyané panjenengan.", "prefs-help-email": "Alamat layang èlèktronik sipaté mung pilihan, nanging dibutuhaké kanggo nyetèl ulang tembung sandhi yèn Sampéyan lali.", @@ -1097,11 +1096,11 @@ "right-noratelimit": "Ora dipengaruhi déning wates cacahing suntingan.", "right-import": "Impor kaca-kaca saka wiki liya", "right-importupload": "Impor kaca saka unggahan barkas", - "right-patrol": "Tandhanana suntingan minangka wis dipatroli", + "right-patrol": "Tandhani besutané wong liya yèn wis kapriksa", "right-autopatrol": "Gawé supaya suntingan-suntingan ditandhani minangka wis dipatroli", "right-patrolmarks": "Ndeleng tandha-tandha patroli owah-owahan anyar", "right-unwatchedpages": "Tuduhna daftar kaca-kaca sing ora diawasi", - "right-mergehistory": "Gabung sujarah kaca", + "right-mergehistory": "Gabung sajarah kaca", "right-userrights": "Besut kabèh hak panganggo", "right-userrights-interwiki": "Besut hak-haking panganggo asal wiki jaba", "right-siteadmin": "Kunci lan buka kunci basis data", @@ -1132,7 +1131,7 @@ "grant-privateinfo": "Ngaksès informasi pribadhi", "grant-protect": "Reksa lan uculi rereksané kaca", "grant-rollback": "Wurungaké owahané kaca", - "grant-sendemail": "Kirim layang-èl nyang panganggo liyané", + "grant-sendemail": "Kirim layang-èl menyang panganggo liyané", "grant-uploadeditmovefile": "Unggah, ganti, lan lih barkas", "grant-uploadfile": "Unggah barkas anyar", "grant-basic": "Hak pokok", @@ -1164,7 +1163,7 @@ "action-delete": "busak kaca iki", "action-deleterevision": "busak révisi", "action-deletelogentry": "busak isian log", - "action-deletedhistory": "deleng sujarah sing dibusak sawijiné kaca", + "action-deletedhistory": "deleng sajarah sing dibusak sawijiné kaca", "action-deletedtext": "deleng tèks révisi sing dibusak", "action-browsearchive": "nggolèki kaca-kaca sing wis dibusak", "action-undelete": "wurung busak kaca", @@ -1190,16 +1189,16 @@ "action-editmyprivateinfo": "besut katerangan prianggané panjenengan", "action-editcontentmodel": "besut modhèl kontèné sawijiné kaca", "action-managechangetags": "gawé lan patèni tag", - "action-applychangetags": "pasang tag nyang owahané panjenengan", + "action-applychangetags": "pasang tenger sing mbarengi owahané panjenengan", "action-changetags": "tambah lan busak tag arbitrèr ing saben révisi lan isian log", "action-deletechangetags": "busak tag saka sasana dhata", "action-purge": "buwang kaca iki", "nchanges": "$1 {{PLURAL:$1|pangowahan|owah-owahan}}", "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|saka keri dhewe mrene}}", - "enhancedrc-history": "sujarah", - "recentchanges": "Owahan pungkasan", - "recentchanges-legend": "Pilihan owah-owahan pungkasan", - "recentchanges-summary": "Runutna owah-owahan pungkasan ing wiki iki ing kaca iki.", + "enhancedrc-history": "sajarah", + "recentchanges": "Owahan-owahan anyar", + "recentchanges-legend": "Opsi owah-owahan anyar", + "recentchanges-summary": "Lacak owah-owahan anyar wiki iki ing kaca iki.", "recentchanges-noresult": "Ora ana pangowahan ing periode sing diwiwiti kriteria iki.", "recentchanges-feed-description": "Urutna owah-owahan anyar ing wiki ing ''feed'' iki.", "recentchanges-label-newpage": "Besutan iki nggawé kaca anyar", @@ -1211,6 +1210,7 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (uga delengen [[Special:NewPages|pratélané kaca-kaca anyar]])", "recentchanges-legend-plusminus": "(''±123'')", "recentchanges-submit": "Tuduhaké", + "rcfilters-legend-heading": "Pratélané cekakan:", "rcfilters-activefilters": "Saringan murub", "rcfilters-quickfilters": "Pranala rikat", "rcfilters-quickfilters-placeholder-title": "Durung ana pranala sing disimpen", @@ -1237,24 +1237,23 @@ "rcfilters-highlightmenu-help": "Pilih werna kanggo nyentrong properti iki", "rcfilters-filterlist-noresults": "Saringan ora katemu", "rcfilters-noresults-conflict": "Ora ana kasil amarga wewatoné kanggo nggolèk ana masalah", - "rcfilters-filtergroup-registration": "Pandhaftaran panganggo", - "rcfilters-filter-registered-label": "Kadhaftar", - "rcfilters-filter-registered-description": "Pambesut sing mlebu log.", - "rcfilters-filter-unregistered-label": "Ora kadhaftar", - "rcfilters-filter-unregistered-description": "Pambesut sing ora mlebu log.", "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)", + "rcfilters-filter-user-experience-level-registered-label": "Kadhaftar", + "rcfilters-filter-user-experience-level-registered-description": "Pambesut sing mlebu log.", + "rcfilters-filter-user-experience-level-unregistered-label": "Ora kadhaftar", + "rcfilters-filter-user-experience-level-unregistered-description": "Pambesut sing ora mlebu log.", "rcfilters-filter-user-experience-level-newcomer-label": "Wong neneka anyar", "rcfilters-filter-user-experience-level-newcomer-description": "Kurang saka 10 besutan lan 4 dina kagiyatan.", "rcfilters-filter-user-experience-level-learner-label": "Wong sinau", "rcfilters-filter-user-experience-level-learner-description": "Luwih akèh pangalamané tinimbang \"Wong neneka anyar\" nanging durung ngèmperi \"Panganggo kawakan\".", "rcfilters-filter-user-experience-level-experienced-label": "Panganggo kawakan", "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)", @@ -1285,12 +1284,12 @@ "rcfilters-filter-categorization-description": "Cathethan ngenani mlebu-metuné kaca saka kategori.", "rcfilters-filter-logactions-label": "Tumindak njeron log", "rcfilters-filter-logactions-description": "Tumindak administratif, gawéan akun, busakan kaca, unggahan....", - "rcfilters-filtergroup-lastRevision": "Owahan pungkasan", - "rcfilters-filter-lastrevision-label": "Owahan pungkasan", - "rcfilters-filter-lastrevision-description": "Owahan paling anyar tumrap kaca.", - "rcfilters-filter-previousrevision-label": "Owahan-owahan dhisik", - "rcfilters-filter-previousrevision-description": "Kabèh owahan sing dudu sing anyar dhéwé tumrap kaca.", - "rcnotefrom": "Ing ngisor iki owah-owahan wiwit $2 (kapacak nganti $1 owah-owahan).", + "rcfilters-filtergroup-lastRevision": "Révisi pungkasan", + "rcfilters-filter-lastrevision-label": "Révisi pungkasan", + "rcfilters-filter-lastrevision-description": "Mung owahan paling anyar marang kacané.", + "rcfilters-filter-previousrevision-label": "Dudu révisi pungkasan", + "rcfilters-filter-previousrevision-description": "Kabèh owahan sing dudu \"révisi pungkasan\".", + "rcnotefrom": "Ing ngisor iki {{PLURAL:$5|owah-owahan}} kawit $3, $4 (sing kapacak nganti $1 owah-owahan).", "rclistfrom": "Tuduhaké owah-owahan anyar kawit $2, $3", "rcshowhideminor": "$1 besutan cilik", "rcshowhideminor-show": "Tuduhaké", @@ -1322,28 +1321,28 @@ "newpageletter": "A", "boteditletter": "b", "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|cacahé sing ngawasi|cacahé sing ngawasi}}]", - "rc_categories": "Watesana nganti kategori (dipisah karo \"|\")", - "rc_categories_any": "Apa waé", - "rc-change-size-new": "$1 {{PLURAL:$1|bét|bét}} sawisé diowah", + "rc_categories": "Watesi tekan kategori (dipisah nganggo \"|\")", + "rc_categories_any": "Apa waé sing dipilih", + "rc-change-size-new": "$1 {{PLURAL:$1|bét|bét}} sawisé diowahi", "newsectionsummary": "/* $1 */ pérangan anyar", "rc-enhanced-expand": "Tuduhaké princèn", "rc-enhanced-hide": "Dhelikaké princèn", "rc-old-title": "kawitané digawé minangka \"$1\"", "recentchangeslinked": "Owahan magepokan", - "recentchangeslinked-feed": "Pangowahan sing terkait", + "recentchangeslinked-feed": "Owah-owahan sing gegayutan", "recentchangeslinked-toolbox": "Owahan magepokan", "recentchangeslinked-title": "Owah-owahan sing magepokan \"$1\"", - "recentchangeslinked-summary": "Iki pratélan owah-owahan anyar kaca-kaca sing nggayut kaca tinamtu (utawa péranganing kategori tinamtu).\nKaca-kaca sing ana ing [[Special:Watchlist|pawawanganing sampéyan]] ya iku sing kandhel.", + "recentchangeslinked-summary": "Iki pratélaning owah-owahan sing mentas digawé tumrap ing kaca-kaca sing nggayut sawijining kaca (utawa kaca-kaca anggotaning sawijining kategori).\nKaca ing [[Special:Watchlist|pawawangané panjenegan]] dikandeli.", "recentchangeslinked-page": "Jeneng kaca:", "recentchangeslinked-to": "Nuduhaké owah-owahan menyang kaca sing disambung menyang kaca-kaca iki", - "recentchanges-page-added-to-category": "[[:$1]] ditambahaké nyang kategori", - "recentchanges-page-added-to-category-bundled": "[[:$1]] ditambahaké nyang kategori, [[Special:WhatLinksHere/$1|kaca iki kalebu ing njeroné kaca liyané]]", + "recentchanges-page-added-to-category": "[[:$1]] ditambahaké ing kategori", + "recentchanges-page-added-to-category-bundled": "[[:$1]] ditambahaké ing kategori, [[Special:WhatLinksHere/$1|kaca iki kalebu ing njeroné kaca liyané]]", "recentchanges-page-removed-from-category": "[[:$1]] dibusak saka kategori", "recentchanges-page-removed-from-category-bundled": "[[:$1]] dibusak saka kategori, [[Special:WhatLinksHere/$1|kaca iki kalebu ing njeroné kaca liyané]]", "autochange-username": "Salin otomatis MediaWiki", "upload": "Unggah barkas", "uploadbtn": "Unggah barkas", - "reuploaddesc": "Wurung ngunggah lan bali nyang formulir unggahan", + "reuploaddesc": "Wurung ngunggah lan bali menyang formulir unggahan", "upload-tryagain": "Kirim déskripsi berkas sing wis diowah", "uploadnologin": "Durung mlebu log", "uploadnologintext": "Mangga $1 saperlu ngunggah barkas.", @@ -1524,7 +1523,7 @@ "listfiles_search_for": "Golèk jeneng gambar:", "listfiles-userdoesnotexist": "Akun panganggo \"$1\" ora kadhaftar.", "imgfile": "barkas", - "listfiles": "Daftar gambar", + "listfiles": "Pratélaning barkas", "listfiles_thumb": "Gambar mini", "listfiles_date": "Tanggal", "listfiles_name": "Jeneng", @@ -1537,11 +1536,11 @@ "listfiles-latestversion-yes": "Iya", "listfiles-latestversion-no": "Ora", "file-anchor-link": "Barkas", - "filehist": "Sujarah barkas", + "filehist": "Sajarahing barkas", "filehist-help": "Klik ing tanggal/wektuné saprelu ndeleng rupané barkasé nalika tanggal iku.", "filehist-deleteall": "busaken kabèh", "filehist-deleteone": "busaken iki", - "filehist-revert": "balèkna", + "filehist-revert": "pulihaké", "filehist-current": "saiki", "filehist-datetime": "Tanggal/Wektu", "filehist-thumb": "Gambar cilik", @@ -1551,7 +1550,7 @@ "filehist-dimensions": "Alang ujur", "filehist-filesize": "Gedhené barkas", "filehist-comment": "Tanggepan", - "imagelinks": "Panggunané barkas", + "imagelinks": "Panggunaning barkas", "linkstoimage": "{{PLURAL:$1|Kaca|$1 kaca}} ngisor iki nggayut barkas iki:", "linkstoimage-more": "Luwih saka $1 {{PLURAL:$1|kaca|kaca-kaca}} nduwèni pranala menyang berkas iki.\nDhaftar ing ngisor nuduhaké {{PLURAL:$1|kaca pisanan kanthi pranala langsung|$1 kaca kanthi pranala langsung}} menyang berkas iki.\n[[Special:WhatLinksHere/$2|dhaftar pepak]] uga ana.", "nolinkstoimage": "Ora ana kaca sing nggayut menyang barkas iki.", @@ -1568,7 +1567,7 @@ "uploadnewversion-linktext": "Unggah vèrsi anyar saka barkas iki", "shared-repo-from": "saka $1", "shared-repo": "sawijining panyimpenan kanggo bebarengan", - "upload-disallowed-here": "Sampéyan ora kena ngeblegi barkas iki.", + "upload-disallowed-here": "Panjenengan ora kena ngeblegi barkas iki.", "filerevert": "Balèkna $1", "filerevert-legend": "Pulihaké barkas", "filerevert-intro": "Panjenengan mbalèkaké '''[[Media:$1|$1]]''' menyang [vèrsi $4 ing $3, $2].", @@ -1603,7 +1602,7 @@ "unusedtemplates": "Cithakan sing ora kanggo", "unusedtemplatestext": "Kaca iki ngamot kabèh kaca ing bilik jeneng {{ns:template}} sing ora dianggo ing kaca ngendi waé.\nPriksanen dhisik pranala-pranala menyang cithakan iki sadurungé mbusak.", "unusedtemplateswlh": "pranala liya-liyané", - "randompage": "Sembarang kaca", + "randompage": "Kaca sembarang", "randompage-nopages": "Ora ana kaca ing {{PLURAL:$2||}}bilik jeneng iki:$1.", "randomincategory": "Sembarang kaca ing kategori", "randomincategory-invalidcategory": "\"$1\" dudu jeneng kategori sing apik.", @@ -1623,7 +1622,7 @@ "statistics-pages-desc": "Kabèh kaca ing wiki iki, kalebu kaca parembugan, alihan, lsp.", "statistics-files": "Barkas unggahan", "statistics-edits": "Gunggung suntingan wiwit {{SITENAME}} diwiwiti", - "statistics-edits-average": "Rata-rata suntingan saben kaca", + "statistics-edits-average": "Besutan rata-rata saben kaca", "statistics-users": "[[Special:ListUsers|Panganggo]] kadhaftar", "statistics-users-active": "Para panganggo aktif", "statistics-users-active-desc": "Panganggo sing ngayahi aktivitas jroning {{PLURAL:$1|dia|$1 dina}} pungkasan", @@ -1704,8 +1703,8 @@ "protectedtitles": "Sesirah sing direksa", "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": "Pratélaning panganggo", + "listusers-editsonly": "Mligi tuduhaké panganggo sing duwé pisumbang", "listusers-creationsort": "Urut miturut tanggal digawé", "listusers-desc": "Urutna mudhun", "usereditcount": "$1 {{PLURAL:$1|besutan|besutan}}", @@ -1714,7 +1713,7 @@ "newpages-submit": "Tuduhaké", "newpages-username": "Jeneng panganggo:", "ancientpages": "Kaca sing lawas dhéwé", - "move": "Pindhahen", + "move": "Lih", "movethispage": "Lih kaca iki", "unusedimagestext": "Berkas-berkas sing kapacak iki ana nanging ora dienggo ing kaca apa waé.\nTulung digatèkaké yèn situs wèb liyané mbok-menawa bisa nyambung ing sawijining berkas sacara langsung mawa URL langsung, lan berkas-berkas kaya mengkéné iku mbok-menawa ana ing daftar iki senadyan ora dienggo aktif manèh.", "unusedcategoriestext": "Kategori iki ana senadyan ora ana artikel utawa kategori liyané sing nganggo.", @@ -1812,9 +1811,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:", @@ -1828,7 +1827,7 @@ "listusers-blocked": "(diblokir)", "activeusers": "Pratélan panganggo aktif", "activeusers-intro": "Iki daptar panganggo sing katon lakuné ing $1 {{PLURAL:$1|dina|dina}} kapungkur.", - "activeusers-count": "$1 {{PLURAL:$1|suntingan|suntingan}} ing {{PLURAL:$3|dina|$3 dina}} pungkasan", + "activeusers-count": "$1 {{PLURAL:$1|tumindak|tumindak}} ing {{PLURAL:$3|dina|$3 dina}} pungkasan", "activeusers-from": "Tampilna panganggo wiwit saka:", "activeusers-groups": "Tuduhaké panganggo sing mlebu golongan:", "activeusers-excludegroups": "Aja lebokaké panganggo sing kalebu golongan:", @@ -1840,7 +1839,7 @@ "listgrouprights-group": "Grup", "listgrouprights-rights": "Hak-hak", "listgrouprights-helppage": "Help:Hak-hak grup", - "listgrouprights-members": "(daftar anggota)", + "listgrouprights-members": "(pratélaning anggota)", "listgrouprights-addgroup": "Tambah {{PLURAL:$2|golongan}}: $1", "listgrouprights-removegroup": "Busak {{PLURAL:$2|golongan}}: $1", "listgrouprights-addgroup-all": "Bisa nambahaké kabèh klompok", @@ -1860,12 +1859,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 +1873,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:", @@ -1887,7 +1886,7 @@ "emailuserfooter": "Layang-e iki dikirimaké déning $1 marang $2 migunakaké fungsi \"Layangpanganggo\" ing {{SITENAME}}.", "usermessage-summary": "Tinggalaké layang sistem.", "usermessage-editor": "Pawartaning layang sistem", - "watchlist": "Daptar pangawasan", + "watchlist": "Pawawangan", "mywatchlist": "Pawawangan", "watchlistfor2": "Kanggo $1 $2", "nowatchlist": "Ora ana apa-apa ing pawawanganing sampéyan.", @@ -1899,7 +1898,7 @@ "removedwatchtext": "Kaca \"[[:$1]]\" wis dibusak saka [[Special:Watchlist|daftar pangawasan]].", "watch": "Awasi", "watchthispage": "Periksa kaca iki", - "unwatch": "Ora usah ngawasaké manèh", + "unwatch": "Aja ngawasaké manèh", "unwatchthispage": "Mandheg ngawasi", "notanarticle": "Dudu kaca artikel", "notvisiblerev": "Révisi wis dibusak", @@ -1962,8 +1961,8 @@ "deletereasonotherlist": "Alesan liya", "deletereason-dropdown": "*Alesan pambusakan\n** Spam\n** Vandalisme\n** Nglanggar hak cipta\n** Disuwun sing nulis\n** Pangalihan rusak", "delete-edit-reasonlist": "Besut alesané pambusak", - "delete-toobig": "Kaca iki darbé sujarah besutan sing dawa, punjul $1 {{PLURAL:$1|owahan}}.\nPambusak tumrap kaca sing kaya mangkono wis ora diidinaké nedya njagani murih ora ana karusakan ing {{SITENAME}}.", - "delete-warning-toobig": "Kaca iki duwé sujarah besut sing dawa, punjul $1 {{PLURAL:$1|révisi}}.\nMbusak kaca iki bisa ngrusak lakuné basis dhata ing {{SITENAME}};\nkudu diayahi kanthi ngati-ati.", + "delete-toobig": "Kaca iki darbé sajarah besutan sing dawa, punjul $1 {{PLURAL:$1|owahan}}.\nMbusak kaca sing kaya mangkono wis ora diidinaké kanggo njagani supaya ora ana sing rusak ing {{SITENAME}}.", + "delete-warning-toobig": "Kaca iki duwé sajarah besut sing dawa, punjul $1 {{PLURAL:$1|révisi}}.\nMbusak kaca iki bisa ngrusak lakuné basis dhata ing {{SITENAME}};\nkudu diayahi kanthi ngati-ati.", "deleteprotected": "Panjenengan ora bisa mbusak kaca iki amarga direksa.", "deleting-backlinks-warning": "'''Awas:''' Kaca liyane mungkin ana sing nautake ing kaca sing arep sampeyan busak.", "rollback": "Pulihaké besutan", @@ -1974,8 +1973,8 @@ "cantrollback": "Ora bisa mbalèkaké suntingan; panganggo pungkasan iku siji-sijiné penulis artikel iki.", "alreadyrolled": "Ora bisa mulihaké besutan pungkasan [[:$1]] déning [[User:$2|$2]] ([[User talk:$2|rembug]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); ana wong liya sing wis mbesut utawa mulihaké kaca iki.\n\nBesutan pungkasan kaca iku garapané [[User:$3|$3]] ([[User talk:$3|rembug]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).", "editcomment": "Ringkesan suntingan yaiku: $1.", - "revertpage": "Besutané [[Special:Contributions/$2|$2]] ([[User talk:$2|rembugan]]) sing dibalèkaké nyang révisi pungkasan déning [[User:$1|$1]]", - "revertpage-nouser": "Suntingan déning panganggo sing didhelikake, dibalèkaké nèng benahan pungkasan déning [[User:$1|$1]]", + "revertpage": "Besutané [[Special:Contributions/$2|$2]] ([[User talk:$2|rembugan]]) dipulihaké ing révisi pungkasan déning [[User:$1|$1]]", + "revertpage-nouser": "Besutané panganggo peteng dipulihaké ing révisi pungkasan déning {{GENDER:$1|[[User:$1|$1]]}}", "rollback-success": "Suntingan dibalèkaké déning $1;\ndiowahi bali menyang vèrsi pungkasan déning $2.", "sessionfailure-title": "Sèsi gagal", "sessionfailure": "Katoné ana masalah karo sèsi log panjenengan; log panjenengan wis dibatalaké kanggo nyegah pambajakan. Mangga mencèt tombol \"back\" lan unggahaké manèh kaca sadurungé mlebu log, lan coba manèh.", @@ -1991,7 +1990,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,36 +2084,36 @@ "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.", + "nocontribs": "Ora tinemu Owah-owahan sing cocog karo wewaton mangkono.", "uctop": "(saiki)", "month": "Saka wulan (lan sadurungé):", - "year": "Wiwit taun (lan sadurungé):", - "sp-contributions-newbies": "Tuduhaké mung sumbangané akun-akun anyar waé", + "year": "Saka taun (lan sadurungé):", + "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-toponly": "Tuduhaké besutan mligi révisi anyaran", "sp-contributions-newonly": "Tuduhaké besutan mligi kaca gawéan", "sp-contributions-hideminor": "Dhelikaké besutan cilik", "sp-contributions-submit": "Golèk", "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", @@ -2128,7 +2127,7 @@ "whatlinkshere-hidelinks": "$1 pranala", "whatlinkshere-hideimages": "$1 pranala barkas", "whatlinkshere-filters": "Panyaringan", - "whatlinkshere-submit": "Nyang", + "whatlinkshere-submit": "Menyang", "autoblockid": "Blokir otomatis #$1", "block": "Blokir panganggo", "unblock": "Uculaké blokirané panganggo", @@ -2196,13 +2195,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 +2214,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.", @@ -2258,8 +2257,8 @@ "lockedbyandtime": "(déning {{GENDER:$1|$1}} tanggal $2 wanci $3)", "move-page": "Ngalih $1", "move-page-legend": "Mindhah kaca", - "movepagetext": "Formulir ing ngisor iki bakal ngganti jeneng kaca lan ngalihaké kabèh sujarahé nyang jeneng anyar.\nJeneng lawas bakal dadi kaca alihan marang jeneng anyar.\nPanjenengan bisa ndandani kaca alihan sing otomatis nggayut nyang kaca asliné.\nYèn ora, pesthèkaké yèn panjenengan wis mriksa ana-orané kaca alihan [[Special:DoubleRedirects|dhobel]] utawa [[Special:BrokenRedirects|rusak]].\nPanjenengan kudu tanggon saperlu mesthèkaké yèn pranalané menyang kaca sing samesthiné.\n\nÉling-élingen yèn kacané ora bakal dilih yèn jeneng sing dituju wis ana kacané, kajaba isiné kaca alihan sing ora ana sujarah besutané.\nIki ateges panjenengan bisa ngganti jeneng kaca bali nyang asliné manawa ana salah, lan panjenengan ora bisa ngamblegi kaca sing wis ana.\n\nCathetan:\nTumindak iki bisa dadi owahan sing ora kinira lan gedhé mungguh ing kaca sing misuwur;\nmangga pesthèkaké dhisik yèn panjenengan mudheng temahané sadurungé mbacutaké.", - "movepagetext-noredirectfixer": "Formulir ing ngisor iki bakal ngganti jeneng kaca lan ngalihaké kabèh sujarahé nyang jeneng anyar.\nJeneng lawas bakal dadi kaca alihan marang jeneng anyar.\nPanjenengan kudu yakin yèn wis mriksa ana-orané kaca alihan [[Special:DoubleRedirects|dhobel]] utawa [[Special:BrokenRedirects|rusak]].\nPanjenengan kudu tanggon saperlu mesthèkaké yèn pranalané menyang kaca sing samesthiné.\n\nÉling-élingen yèn kacané ora bakal dilih yèn jeneng sing dituju wis ana kacané, kajaba isiné kaca alihan sing ora ana sujarah besutané.\nIki ateges panjenengan bisa ngganti jeneng kaca bali nyang asliné manawa ana salah, lan panjenengan ora bisa ngamblegi kaca sing wis ana.\n\nCathetan:\nTumindak iki bisa dadi owahan sing ora kinira lan gedhé mungguh ing kaca sing misuwur;\nmangga pesthèkaké dhisik yèn panjenengan mudheng temahané sadurungé mbacutaké.", + "movepagetext": "Formulir ing ngisor iki bakal ngganti jeneng kaca lan ngalihaké kabèh sajarahé nyang jeneng anyar.\nJeneng lawas bakal dadi kaca alihan marang jeneng anyar.\nPanjenengan bisa ndandani kaca alihan sing otomatis nggayut nyang kaca asliné.\nYèn ora, pesthèkaké yèn panjenengan wis mriksa ana-orané kaca alihan [[Special:DoubleRedirects|dhobel]] utawa [[Special:BrokenRedirects|rusak]].\nPanjenengan kudu tanggon saperlu mesthèkaké yèn pranalané menyang kaca sing samesthiné.\n\nÉling-élingen yèn kacané ora bakal dilih yèn jeneng sing dituju wis ana kacané, kajaba isiné kaca alihan sing ora ana sajarah besutané.\nIki ateges panjenengan bisa ngganti jeneng kaca bali nyang asliné manawa ana salah, lan panjenengan ora bisa ngamblegi kaca sing wis ana.\n\nCathetan:\nTumindak iki bisa dadi owahan sing ora kinira lan gedhé mungguh ing kaca sing misuwur;\nmangga pesthèkaké dhisik yèn panjenengan mudheng temahané sadurungé mbacutaké.", + "movepagetext-noredirectfixer": "Formulir ing ngisor iki bakal ngganti jeneng kaca lan ngalihaké kabèh sajarahé nyang jeneng anyar.\nJeneng lawas bakal dadi kaca alihan marang jeneng anyar.\nPanjenengan kudu yakin yèn wis mriksa ana-orané kaca alihan [[Special:DoubleRedirects|dhobel]] utawa [[Special:BrokenRedirects|rusak]].\nPanjenengan kudu tanggon saperlu mesthèkaké yèn pranalané menyang kaca sing samesthiné.\n\nÉling-élingen yèn kacané ora bakal dilih yèn jeneng sing dituju wis ana kacané, kajaba isiné kaca alihan sing ora ana sajarah besutané.\nIki ateges panjenengan bisa ngganti jeneng kaca bali nyang asliné manawa ana salah, lan panjenengan ora bisa ngamblegi kaca sing wis ana.\n\nCathetan:\nTumindak iki bisa dadi owahan sing ora kinira lan gedhé mungguh ing kaca sing misuwur;\nmangga pesthèkaké dhisik yèn panjenengan mudheng temahané sadurungé mbacutaké.", "movepagetalktext": "Menawa sampéyan nyénthang kothak iki, kaca parembugan sing magepokan bakal otomatis dilih nyang sesirah anyar, kajaba kaca parembugané sing dituju wis ana isiné.\n\nYèn mangkéné, sampéyan kudu ngalih utawa nggabung kaca-kaca iku kanthi manual.", "moveuserpage-warning": "Pènget: Panjenengan iki arep ngalih kaca panganggo. Mangga èlingana yèn mung kacané waé sing bakal dilih, déné panganggoné ora bakal ganti jeneng.", "movecategorypage-warning": "Pélik: Panjenengan arep ngalih kaca kategori. Tulung gatèkaké yèn mung kacané thok sing bakal dilih déné samubarang kaca sing ana ing kategori lawas ora bakal mèlu dilih nyang kaca kategori anyar.", @@ -2272,7 +2271,7 @@ "move-watch": "Awasna kaca iki", "movepagebtn": "Ngalih kaca", "pagemovedsub": "Kasil dilih", - "movepage-moved": "\"$1\" wis dilih nyang \"$2\"", + "movepage-moved": "\"$1\" wis dilih menyang \"$2\"", "movepage-moved-redirect": "Kaca alihan wis kagawé.", "movepage-moved-noredirect": "Kanggo gawé pengalihan wis ditahan.", "articleexists": "Kaca mawa jeneng mangkono wis ana utawa jeneng sing kokpilih ora valid.\nMangga pilih jeneng liya.", @@ -2281,7 +2280,7 @@ "move-subpages": "Lih anak kaca (tekan $1)", "move-talk-subpages": "Lih anak kaca saka kaca parembugan (tekan $1)", "movepage-page-exists": "Kaca $1 wis ana lan ora bisa ditindhes sacara otomatis.", - "movepage-page-moved": "Kaca $1 wis dipindhah menyang $2.", + "movepage-page-moved": "Kaca $1 wis dilih menyang $2.", "movepage-page-unmoved": "Kaca $1 ora bisa dialihaké menyang $2.", "movepage-max-pages": "Paling akèh $1 {{PLURAL:$1|kaca|kaca}} wis dialihaké lan ora ana manèh sing bakal dialihaké sacara otomatis.", "movelogpage": "Log alih", @@ -2311,7 +2310,7 @@ "semiprotectedpagemovewarning": "Cathetan: Kaca iki wis direksa saéngga mung panganggo kadhaftar sing bisa ngalihaké.\nÈntri log pungkasan cumepak ing ngisor kanggo rujukan:", "move-over-sharedrepo": "[[:$1]] ana ing panyimpenan barengan. Ngalih barkas mawa sesirah iki bakal ngamblegi barkas barengan iku.", "file-exists-sharedrepo": "Jeneng berkas kapilih wis ana kanggo nèng panyimpenan bebarengan.\nMangga pilih jeneng liya.", - "export": "Ekspor kaca", + "export": "Èspor kaca", "exporttext": "Panjenengan bisa ngèkspor tèks lan sajarah panyuntingan sawijining kaca tartamtu utawa sawijining sèt kaca awujud XML tartamtu. Banjur iki bisa diimpor ing wiki liyané nganggo MediaWiki nganggo fasilitas [[Special:Import|impor kaca]].\n\nKanggo ngèkspor kaca-kaca artikel, lebokna irah-irahan utawa judhul sajroning kothak tèks ing ngisor iki, irah-irahan utawa judhul siji per baris, lan pilihen apa panjenengan péngin ngèkspor jangkep karo vèrsi sadurungé, utawa namung vèrsi saiki mawa cathetan panyuntingan pungkasan.\n\nYèn panjenengan namun péngin ngimpor vèrsi pungkasan, panjenengan uga bisa nganggo pranala kusus, contoné [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] kanggo ngèkspor artikel \"[[{{MediaWiki:Mainpage}}]]\".", "exportall": "Ngèkspor kabèh kaca", "exportcuronly": "Namung èkspor révisi saiki, dudu kabèh vèrsi lawas", @@ -2324,7 +2323,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 +2362,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:", @@ -2395,7 +2394,7 @@ "import-error-interwiki": "Kaca \"$1\" ora diimpor amarga jenengé dicadhangaké kango pranala njaba (interwiki).", "import-error-special": "Kaca \"$1\" ora diimpor amarga darbèké mandala aran mirunggan sing ora nglilakaké anané kaca.", "import-error-invalid": "Kaca \"$1\" ora diimpor amarga jenengé ora trep kanggo wiki iki.", - "import-error-unserialize": "Revisi $2 saka kaca \"$1\" ora bisa diurutaké. Revisi iku dilapuraké murih nganggo gagrag isi $3 sing diurutaké minangka $4.", + "import-error-unserialize": "Révisi $2 saka kaca \"$1\" ora bisa diurutaké. Révisi iku dilapuraké supaya nganggo modhèl kontèn $3 sing diurutaké minangka $4.", "import-options-wrong": "{{PLURAL:$2|Opsi|Opsi}} salah: $1", "import-rootpage-invalid": "Kaca wod iki sesirahé ora sah.", "import-rootpage-nosubpage": "Ruang nama \"$1\" di halaman turunan tidak mengizinkan subhalaman.", @@ -2408,49 +2407,49 @@ "javascripttest-qunit-intro": "Deleng [$1 dhokumèntasi uji-coba] ing mediawiki.org.", "tooltip-pt-userpage": "Kaca {{GENDER:|panganggoné panjenengan}}", "tooltip-pt-anonuserpage": "Kaca panganggo IP panjenengan", - "tooltip-pt-mytalk": "Kaca gegunemaning {{GENDER:|sampéyan}}", + "tooltip-pt-mytalk": "Kaca parembugané {{GENDER:|panjenengan}}", "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-preferences": "Pilalané {{GENDER:|panjenengan}}", + "tooltip-pt-watchlist": "Pratélaning kaca sing panjenengan awasi owah-owahané", + "tooltip-pt-mycontris": "Pratélaning pisumbangé {{GENDER:|panjenengan}}", "tooltip-pt-anoncontribs": "Pratélan besutané alamat IP iki", - "tooltip-pt-login": "Panjenengan prayogané mlebu log, sanadyan ora kudu", + "tooltip-pt-login": "Panjenengan prayogané mlebu log, sanajan ora kudu", "tooltip-pt-login-private": "Panjenengan kudu mlebu log supaya bisa nganggo wiki iki", "tooltip-pt-logout": "Metu log", - "tooltip-pt-createaccount": "Panjenengan prayogané nggawé akun lan mlebu log, sanadyan ora kudu", - "tooltip-ca-talk": "Rembugan ngenani kaca isi", + "tooltip-pt-createaccount": "Panjenengan prayogané nggawé akun lan mlebu log, sanajan ora kudu", + "tooltip-ca-talk": "Rembugan bab kaca kontèn", "tooltip-ca-edit": "Besut kaca iki", "tooltip-ca-addsection": "Miwiti pérangan anyar", - "tooltip-ca-viewsource": "Kaca iki direksa. \nSampéyan bisa ndeleng sumberé", + "tooltip-ca-viewsource": "Kaca iki direksa. \nPanjenengan bisa ndeleng sumberé", "tooltip-ca-history": "Owahan sadurungé saka kaca iki", "tooltip-ca-protect": "Reksa kaca iki", "tooltip-ca-unprotect": "Ganti panjagan kaca iki", "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-unwatch": "Busak kaca iki saka pawawanganing sampéyan", + "tooltip-ca-watch": "Tambahaké kaca iki menyang pawawangané panjenengan", + "tooltip-ca-unwatch": "Busak kaca iki saka pawawanganing panjenengan", "tooltip-search": "Golèk ing {{SITENAME}}", "tooltip-search-go": "Jujug kaca asesirah persis mangkéné yèn ana", - "tooltip-search-fulltext": "Golèk kaca isi tulisan kaya mangkéné", + "tooltip-search-fulltext": "Golèk kaca isi tèks kaya mangkéné", "tooltip-p-logo": "Menyang tepas", "tooltip-n-mainpage": "Menyang tepas", "tooltip-n-mainpage-description": "Menyang tepas", - "tooltip-n-portal": "Ngenani proyèk, apa sing bisa panjenengan garap, lang ing endi saprelu golèk apa-apa", + "tooltip-n-portal": "Bab proyèk, apa sing bisa panjenengan garap, lan ing endi saprelu golèk apa-apa", "tooltip-n-currentevents": "Golèk katerangan latar wuri saka kadadéan saiki", - "tooltip-n-recentchanges": "Pratélaning owah-owahan pungkasan sajeroning wiki.", + "tooltip-n-recentchanges": "Pratélaning owah-owahan anyar sajeroning wiki.", "tooltip-n-randompage": "Mot sembarang kaca", - "tooltip-n-help": "Papan kanggo golèk weruh", + "tooltip-n-help": "Papan kanggo golèk pitulung", "tooltip-t-whatlinkshere": "Pratélané kabèh kaca wiki sing nggayut mréné", "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", "tooltip-t-specialpages": "Pratélaning kabèh kaca mirunggan", - "tooltip-t-print": "Vèrsi cithak kaca iki", + "tooltip-t-print": "Vèrsi céthak kaca iki", "tooltip-t-permalink": "Pranala permanèn saka owahan iki", "tooltip-ca-nstab-main": "Deleng kaca isi", "tooltip-ca-nstab-user": "Deleng kaca panganggo", @@ -2463,17 +2462,17 @@ "tooltip-ca-nstab-help": "Mirsani kaca pitulung", "tooltip-ca-nstab-category": "Deleng kaca kategori", "tooltip-minoredit": "Tandhani iki yèn besutan cilik", - "tooltip-save": "Simpen owah-owahaning sampéyan", + "tooltip-save": "Simpen owah-owahaning panjenengan", "tooltip-publish": "Babar owahané panjenengan", - "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-preview": "Pratuduhana owah-owahaning panjenengan. Tulung ayahana iku sadurungé nyimpen.", + "tooltip-diff": "Tuduhaké owah-owahan endi sing panjenengan 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", "tooltip-upload": "Wiwit ngunggah", - "tooltip-rollback": "Balèkaké besutan-besutan kaca iki déning sing pungkasan nyumbang sarana saklikan.", + "tooltip-rollback": "\"Balèkaké\" bakal murungaké besutané wong sing nyumbang kèri dhéwé tumrap kacané sarana ngeklik pisan", "tooltip-undo": "\"Wurung\" mbalèkaké besutan iki lan mbukak blangko besutan sarana modhe pratuduh. Alesan kena diwuwuhaké ing babagan ringkesan.", "tooltip-preferences-save": "Simpen préperensi", "tooltip-summary": "Isinen ringkesan cekak", @@ -2495,45 +2494,45 @@ "spam_blanking": "Kabèh révisi sing duwé pranala menyang $1, pangosongan", "spam_deleting": "Kabèh benahan sing nduwé pranala nèng $1, dibusaki", "simpleantispam-label": "Pamariksa anti-spam.\nIki aja diisi!", - "pageinfo-title": "Inpormasi kanggo \"$1\"", + "pageinfo-title": "Katerangan bab \"$1\"", "pageinfo-not-current": "Maaf, tidak mungkin memberikan informasi ini ke revisi lama.", - "pageinfo-header-basic": "Informasi dhasar", - "pageinfo-header-edits": "Sujarah besutan", - "pageinfo-header-restrictions": "Perlindungan halaman", + "pageinfo-header-basic": "Katerangan pokok", + "pageinfo-header-edits": "Sajarah besutan", + "pageinfo-header-restrictions": "Rereksaning kaca", "pageinfo-header-properties": "Properti kaca", "pageinfo-display-title": "Sesirah pajangan", "pageinfo-default-sort": "Kunci urut baku", - "pageinfo-length": "Panjang halaman (dalam bita)", + "pageinfo-length": "Dawaning kaca (ing bèt)", "pageinfo-article-id": "ID kaca", "pageinfo-language": "Basaning isining kaca", "pageinfo-language-change": "owah", - "pageinfo-content-model": "Model isi kaca", + "pageinfo-content-model": "Modhel isining kaca", "pageinfo-content-model-change": "owah", - "pageinfo-robot-policy": "Diindeks karo robot", - "pageinfo-robot-index": "Entuk", - "pageinfo-robot-noindex": "Ora entuk", - "pageinfo-watchers": "Cacahé pangawas kaca", + "pageinfo-robot-policy": "Diindhèks déning robot", + "pageinfo-robot-index": "Éntuk", + "pageinfo-robot-noindex": "Ora éntuk", + "pageinfo-watchers": "Cacahing sing ngawasi kaca", "pageinfo-visiting-watchers": "Cacahé pandeleng kaca sing nekani besutan anyar", - "pageinfo-few-watchers": "Kurang seka $1 {{PLURAL:$1|wong tilik|wong tilik}}", - "pageinfo-redirects-name": "Jumlah pangalihan menyang kaca iki", - "pageinfo-subpages-name": "Subhalaman halaman ini", - "pageinfo-subpages-value": "$1 ($2 {{PLURAL:$2|pengalihan|pengalihan}}; $3 {{PLURAL:$3|non-pengalihan|non-pengalihan}})", - "pageinfo-firstuser": "Pembuat halaman", - "pageinfo-firsttime": "Tanggal pembuatan halaman", - "pageinfo-lastuser": "Sing mbesut pungkasan", - "pageinfo-lasttime": "Tanggal besutan pungkasan", - "pageinfo-edits": "Gunggung cacahing besutan", - "pageinfo-authors": "Cacahé kabèh panganggit sing bédha-bédha.", - "pageinfo-recent-edits": "Cacahé suntingan saiki (ing $1 kapungkur)", - "pageinfo-recent-authors": "Cacahé panganggit sing bédha-bédha saiki", + "pageinfo-few-watchers": "{{PLURAL:$1|Sing niliki|Sing niliki}} kurang saka $1", + "pageinfo-redirects-name": "Cacahing alihan menyang kaca iki", + "pageinfo-subpages-name": "Cacahing anak kaca saka kaca iki", + "pageinfo-subpages-value": "$1 ($2 {{PLURAL:$2|alihan|alihan}}; $3 {{PLURAL:$3|non-alihan|non-alihan}})", + "pageinfo-firstuser": "Sing nggawé kaca", + "pageinfo-firsttime": "Tanggal panggawéning kaca", + "pageinfo-lastuser": "Sing mbesut kèri dhéwé", + "pageinfo-lasttime": "Tanggal besutan kèri dhéwé", + "pageinfo-edits": "Gunggunging besutan", + "pageinfo-authors": "Gunggunging sing nganggit", + "pageinfo-recent-edits": "Cacahé besutan saiki (ing dalem $1 pungkasan)", + "pageinfo-recent-authors": "Cacahing sing nganggit dinané iki", "pageinfo-magic-words": "{{PLURAL:$1|Tembung|Tembung}} mujarab ($1)", "pageinfo-hidden-categories": "{{PLURAL:$1|Kategori}} ndhelik ($1)", - "pageinfo-templates": "{{PLURAL:$1|Templat|Templat}} yang ditransklusi ($1)", + "pageinfo-templates": "{{PLURAL:$1|Cithakan|Cithakan}} transklusi ($1)", "pageinfo-transclusions": "{{PLURAL:$1|Kaca|Kaca}} sing ditransklusi ing ($1)", "pageinfo-toolboxlink": "Katerangan kaca", "pageinfo-redirectsto": "Dialihaké dhateng", "pageinfo-redirectsto-info": "info", - "pageinfo-contentpage": "Diétung minangka satunggaling kaca isi", + "pageinfo-contentpage": "Diétung minangka kaca kontèn", "pageinfo-contentpage-yes": "Iya", "pageinfo-protect-cascading": "Proteksi runtun", "pageinfo-protect-cascading-yes": "Iya", @@ -2550,7 +2549,7 @@ "rcpatroldisabledtext": "Fitur patroli owah-owahan pungkasan lagi dipatèni.", "markedaspatrollederror": "Ora bisa awèh tandha wis dipatroli", "markedaspatrollederrortext": "Panjenengan kudu nentokaké sawijining révisi kanggo ditandhani minangka sing dipatroli.", - "markedaspatrollederror-noautopatrol": "Panjenengan ora pareng nandhani suntingan panjenengan dhéwé minangka dipatroli.", + "markedaspatrollederror-noautopatrol": "Panjenengan ora kena nandhani besutané panjenengan dhéwé minangka kapriksa.", "markedaspatrollednotify": "Owahan $1 wis dipatroli.", "markedaspatrollederrornotify": "Penanda patroli gagal dibuat.", "patrol-log-page": "Log patroli", @@ -2630,7 +2629,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 +2700,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 +2962,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 +2974,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,12 +2997,12 @@ "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é →", "imgmultigo": "Golèk!", - "imgmultigoto": "Lungaa menyang kaca $1", + "imgmultigoto": "Menyang kaca $1", "img-lang-default": "(basa gawan)", "img-lang-info": "Olah gambar iki ing $1. $2", "img-lang-go": "Mangkat", @@ -3019,7 +3018,7 @@ "table_pager_empty": "Ora ana", "autosumm-blank": "Ngothongaké kaca", "autosumm-replace": "←Ngganti kaca karo '$1'", - "autoredircomment": "←Ngalihaké menyang [[$1]]", + "autoredircomment": "Ngeneraké kaca menyang [[$1]]", "autosumm-new": "Gawé kaca sing isi '$1'", "autosumm-newblank": "Nggawé kaca barès", "lag-warn-normal": "Owah-owahan pungkasan sing luwih anyar tinimbang $1 {{PLURAL:$1|detik|detik}} mbokmanawa ora metu ing pratélan iki.", @@ -3099,13 +3098,13 @@ "version-libraries-description": "Wedharan", "version-libraries-authors": "Pangarang", "redirect": "Lih-lihan miturut barkas, panganggo, kaca, owahan, utawa cathetan", - "redirect-summary": "Kaca astamiwa iki dialihake menyang gambar (jeneng gambar diwenehi), kaca (ID revisi utama ID kaca diwenehi), utawa kaca panganggo (ID panganggo diwenehi). Cara nganggo: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]].", - "redirect-submit": "Nuju", + "redirect-summary": "Kaca mirunggan iki ngener ing sawijining barkas (jeneng gambar diwenehi), kaca (ID revisi utama ID kaca diwenehi), utawa kaca panganggo (ID panganggo diwenehi). Cara nganggo: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]].", + "redirect-submit": "Menyang", "redirect-lookup": "Golek:", "redirect-value": "Aji:", "redirect-user": "ID panganggo", "redirect-page": "ID kaca", - "redirect-revision": "Revisi kaca", + "redirect-revision": "Révisi kaca", "redirect-file": "Jeneng barkas", "redirect-logid": "ID log", "redirect-not-exists": "Nilai ora ditemokaké", @@ -3119,7 +3118,6 @@ "fileduplicatesearch-noresults": "Ora tinemu barkas kanthi jeneng \"$1\".", "specialpages": "Kaca mirunggan", "specialpages-note-top": "Katrangan", - "specialpages-note": "* Kaca mirunggan sedhengan.\n* Kaca mirunggan winatesan.", "specialpages-group-maintenance": "Lapuran pangopèn", "specialpages-group-other": "Kaca mirunggan liyané", "specialpages-group-login": "Mlebu log / nggawé akun", @@ -3142,7 +3140,7 @@ "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Tenger|Tenger}}]]: $2)", "tag-mw-contentmodelchange": "owahan modhèl isi", "tags-title": "Tag", - "tags-intro": "Kaca iki ndhaptar tag sing bisa ditandhani déning piranti alus tumrap sawijining suntingan lan maknané.", + "tags-intro": "Kaca iki isi pratélan tenger sing dienggo nandhani besutan déning piranti alus, sinartan tegesé.", "tags-tag": "Jeneng tag", "tags-display-header": "Cakrik ing pratélan owahan", "tags-description-header": "Dhèskripsi pepak saka makna", @@ -3217,6 +3215,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)", @@ -3254,7 +3253,7 @@ "restore-count-revisions": "{{PLURAL:$1|1 révisi|$1 révisi}}", "restore-count-files": "{{PLURAL:$1|1 barkas|$1 barkas}}", "logentry-delete-event": "$1 {{GENDER:$2|ngganti}} parupané {{PLURAL:$5|sak prastawa log|$5 prastawa log}} ana ing $3: $4", - "logentry-delete-revision": "$1 {{GENDER:$2|ngganti}} patampilan {{PLURAL:$5|sak pambenahan|$5 pambenahan}} nèng kaca $3: $4", + "logentry-delete-revision": "$1 {{GENDER:$2|ngowahi}} pakatonaning {{PLURAL:$5|révisi siji|révisi $5}} ing kaca $3: $4", "logentry-delete-event-legacy": "$1 {{GENDER:$2|ngganti}} patampilan saka kadadéan log nèng $3", "logentry-delete-revision-legacy": "$1 {{GENDER:$2|ngganti}} patampilan saka pambenahan nèng kaca $3", "logentry-suppress-delete": "$1 {{GENDER:$2|neken}} kaca $3", @@ -3280,10 +3279,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é}}", @@ -3377,7 +3376,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", @@ -3411,12 +3410,12 @@ "mw-widgets-mediasearch-input-placeholder": "Golèk médhia", "mw-widgets-mediasearch-noresults": "Ora ana wohing panggolèk.", "mw-widgets-titleinput-description-new-page": "kaca durung ana", - "mw-widgets-titleinput-description-redirect": "alihan nyang $1", + "mw-widgets-titleinput-description-redirect": "alihan menyang $1", "mw-widgets-categoryselector-add-category-placeholder": "Tambah kategori...", "mw-widgets-usersmultiselect-placeholder": "Tambah liyané...", "date-range-from": "Kawit tanggal:", "date-range-to": "Tumeka tanggal:", - "randomrootpage": "Kaca dhasaran waton", + "randomrootpage": "Kaca wod sembarang", "log-action-filter-block": "Jinis blokiran:", "log-action-filter-contentmodel": "Jinis owahan modhèl isi:", "log-action-filter-delete": "Jinis busakan:", diff --git a/languages/i18n/kab.json b/languages/i18n/kab.json index 17a2ff5cde..7887786d46 100644 --- a/languages/i18n/kab.json +++ b/languages/i18n/kab.json @@ -14,13 +14,19 @@ "SalemB", "Mezgoug", "Macofe", - "Matma Rex" + "Matma Rex", + "Belkacem77", + "Mhenni", + "Slimane AMIRI", + "SlimaneAmiri", + "Sayem AtVkm" ] }, - "tog-underline": "Aderrer n yezdayen:", - "tog-hideminor": "Ffer ibeddlen ifessasen deg yibeddlen imaynuten", - "tog-hidepatrolled": "Ffer ibeddlen iεessan deg yibeddlen imaynuten", - "tog-newpageshidepatrolled": "Ffer isebtaren iɛessan gar umuɣ n isebtaren imaynuten", + "tog-underline": "Aderrer n iseɣwan:", + "tog-hideminor": "Ffer ibeddilen ifessasen deg yibeddilen imaynuten", + "tog-hidepatrolled": "Ffer ibeddilen yettwaɣran deg yibeddilen imaynuten", + "tog-newpageshidepatrolled": "Ffer isebtar yettwaɣran deg tebdart n isebtar imaynten", + "tog-hidecategorization": "Ffer taggayin n isebtar", "tog-extendwatchlist": "Ssemɣer umuɣ n uɛessi iwakken ad muqleɣ akk n wayen zemreɣ ad beddleɣ", "tog-usenewrc": "Ssegrew ibeddlen s usebtar deg ibeddilen imaynuten d umuɣ n uḍfar", "tog-numberheadings": "Izwal ɣur-sen imḍanen mebla ma serseɣ-iten", @@ -31,6 +37,8 @@ "tog-watchdefault": "Rnu isebtar i ttbeddileɣ deg wumuɣ n uɛessi inu", "tog-watchmoves": "Rnu isebtar i smimḍeɣ deg wumuɣ n uɛessi inu", "tog-watchdeletion": "Rnu isebtar i mḥiɣ deg wumuɣ n uɛessi inu", + "tog-watchuploads": "Rnu ifuyla imaynuten i suliɣ ar tebdart-iw n uqreɛ", + "tog-watchrollback": "Rnu ar tebdart-iw n uḍfaṛ n isebtar anida hwiɣ albaɛd", "tog-minordefault": "Rcem akk ibeddlen am ibeddlen ifessasen d ameslugen", "tog-previewontop": "Ssken pre-timeẓriwt uqbel tankult ubeddel", "tog-previewonfirst": "Ssken pre-timeẓriwt akk d ubeddel amezwaru", @@ -39,70 +47,73 @@ "tog-enotifminoredits": "Azen-iyi-d e-mail ma llan ibeddlen ifessasen", "tog-enotifrevealaddr": "Ssken e-mail inu asmi yettwazen email n talɣut", "tog-shownumberswatching": "Ssken geddac yellan n yimseqdacen iɛessasen", - "tog-oldsig": "Azmul yellan :", + "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ḍ", - "underline-always": "Daymen", - "underline-never": "Abaden", + "tog-prefershttps": "Seqdac yal tikelt tuqqna taɣelsant akken ad teqqneḍ", + "underline-always": "Yal tikelt", + "underline-never": "Werǧin", "underline-default": "Azal s lexṣas n iminig neɣ n usentel", "editfont-style": "Aɣanib n tasefsit n taɣzut ubeqqeḍ :", "editfont-default": "Tasefsit n iminig s lexṣas", "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", "thu": "Amh", "fri": "Sem", "sat": "Sed", - "january": "yennayer", - "february": "furar", - "march": "meɣres", - "april": "yebrir", + "january": "Yennayer", + "february": "Fuṛaṛ", + "march": "Meɣres", + "april": "Yebrir", "may_long": "Mayyu", - "june": "yunyu", - "july": "yulyu", - "august": "ɣuct", - "september": "ctamber", - "october": "tuber", + "june": "Yunyu", + "july": "Yulyu", + "august": "Ɣuct", + "september": "Ctamber", + "october": "Tuber", "november": "wamber", - "december": "dujamber", + "december": "Dujamber", "january-gen": "yennayer", - "february-gen": "furar", - "march-gen": "meɣres", - "april-gen": "yebrir", - "may-gen": "mayyu", - "june-gen": "yunyu", - "july-gen": "yulyu", - "august-gen": "ɣuct", - "september-gen": "ctamber", - "october-gen": "tuber", + "february-gen": "Furar", + "march-gen": "Meɣres", + "april-gen": "Yebrir", + "may-gen": "Mayyu", + "june-gen": "Yunyu", + "july-gen": "Yulyu", + "august-gen": "Ɣuct", + "september-gen": "Ctamber", + "october-gen": "Tuber", "november-gen": "wamber", "december-gen": "dujamber", - "jan": "yen", - "feb": "fur", + "jan": "Yen", + "feb": "Fuṛ", "mar": "meɣ", "apr": "yeb", "may": "may", @@ -111,8 +122,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", @@ -125,6 +136,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", @@ -132,34 +145,28 @@ "category-empty": "Taggayt agi ur tesɛa asebtar, adu-taggayt neɣ afaylu agetmedia.", "hidden-categories": "{{PLURAL:$1|Taggayt yeffren|Taggayin yeffren}}", "hidden-category-category": "Taggayin yeffren", - "category-subcat-count": "Taggayt agi tesɛa {{PLURAL:$2|adu-taggayt|$2 adu-taggayin, ɣef ayed {{PLURAL:$1|t-agi|t-igi $1}}}} ddaw agi.", - "category-subcat-count-limited": "Taggayt agi tesɛa {{PLURAL:$1|adu-taggayt agi|tid $1 adu-taggayin agi}} ddaw-agi.", - "category-article-count": "Taggayt agi tesɛa {{PLURAL:$2|asebter agi|$2 isebtaren, ɣef ayed {{PLURAL:$1|t-agi|t-igi $1}} ddaw-agi}}.", + "category-subcat-count": "Taggayt-agi {{PLURAL:$2|0=ur tegbir ula d yiwet n taggayt tasnawt|1=tegber kan taggayt tasnawant ddaw-a|tegber $2 n taggayin tisnawanin, gar-asent {{PLURAL:$1|0=ula d yiwet|1=tin|tigad $1}} ddaw-a}}.", + "category-subcat-count-limited": "Taggayt-agi tegber {{PLURAL:$1|n taggayt tasnawant|$1 n taggayin tisnawanin}} ddaw-a.", + "category-article-count": "Taggayt-agi{{PLURAL:$2|0=ur tegbur ula d yiwen n usebtert|1=tegber kan yiwen n usebterddaw-a|tegber $2 n isebtar, gar-asen {{PLURAL:$1|0=ula d yiwen|1=tin| $1}} n ddaw-a}}.", "category-article-count-limited": "{{PLURAL:$1|Asebter agi yella|$1 isebtar agi llan}} deg taggayt agi.", "category-file-count": "Taggayt agi tesɛa {{PLURAL:$2|afaylu agi|$2 ifuyla, ɣef ayed {{PLURAL:$1|t-agi|t-igi $1}} ddaw-agi}}.", "category-file-count-limited": "{{PLURAL:$1|Afaylu agi yella|$1 ifuyla agi llan}} deg taggayt agi.", "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": "(teldi deg ttaq amaynut)", + "newwindow": "(ad d-yeldi deg usfaylu amaynut)", "cancel": "Eǧǧ-it am yella", "moredotdotdot": "Ugar...", - "morenotlisted": "Umuɣ agi ur yella ara d ummid.", - "mypage": "Asebtar", - "mytalk": "Amyannan", - "anontalk": "Amyannan n IP-yagi", + "morenotlisted": "Tabdart-agi ur temmid ara", + "mypage": "Asebter", + "mytalk": "Asqerdec", + "anontalk": "Asqerdec", "navigation": "Assilel", - "and": " u", - "qbfind": "Af", - "qbbrowse": "Ẓer isebtar", - "qbedit": "Beddel", - "qbpageoptions": "Asebter-agi", - "qbmyoptions": "isebtar inu", - "faq": "Isteqsiyen", - "faqpage": "Project:Isteqsiyen", + "and": " akked", + "faq": "Isteqsiyen FAQ", "actions": "Tigawtin", "namespaces": "Talluntin n isemawen", "variants": "Tineḍwa", @@ -169,76 +176,79 @@ "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": "Amezruy", + "history_short": "Amazray", + "history_small": "amazray", "updatedmarker": "yettubeddel segmi tarzeft taneggarut inu", - "printableversion": "Tasiwelt iwakken ad timprimiḍ", + "printableversion": "Lqem n usiggez", "permalink": "Azday ur yettbeddil ara", "print": "Siggez", - "view": "Ẓeṛ", + "view": "Ɣeṛ", + "view-foreign": "Sken di $1", "edit": "Beddel", + "edit-local": "Rnu aglam adigan", "create": "Snulfu", - "editthispage": "Beddel asebter-agi", - "create-this-page": "Snulfu asebter-agi", + "create-local": "Rnu aglam n adigan", "delete": "Mḥu", - "deletethispage": "Mḥu asebter-agi", - "undeletethispage": "Erred asebter agi", "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}}", "protect": "Ḥrez", "protect_change": "beddel tiḥḥerzi", - "protectthispage": "Ḥrez asebter-agi", "unprotect": "Beddel amesten", - "unprotectthispage": "Beddel amesten n usebter-agi", "newpage": "Asebter amaynut", - "talkpage": "Mmeslay ɣef usebter-agi", "talkpagelinktext": "Mmeslay", "specialpage": "Asebter uslig", "personaltools": "Dduzan inu", - "articlepage": "Ẓer ayen yellan deg usebter", - "talk": "Amyannan", + "talk": "Asqerdec", "views": "Tuẓrin", "toolbox": "Ifecka", - "userpage": "Ẓer asebter n wemseqdac", - "projectpage": "Ẓer asebter n usenfar", + "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", "viewhelppage": "Ẓer asebter n tallalt", "categorypage": "Ẓer asebter n taggayin", - "viewtalkpage": "Ẓer amyannan", + "viewtalkpage": "Wali asqerdec", "otherlanguages": "S tutlayin tiyaḍ", "redirectedfrom": "(Yettusmimeḍ seg $1)", "redirectpagesub": "Asebter usemmimeḍ", - "lastmodifiedat": "Tikkelt taneggarut i yettubeddel asebter-agi $2, $1.", + "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", "jumpto": "Neggez ar:", "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", - "aboutsite": "Awal ɣef {{SITENAME}}", - "aboutpage": "Project:Awal ɣef...", + "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.", "copyrightpage": "{{ns:project}}:Izerfanɣel", "currentevents": "Isallen", "currentevents-url": "Project:Isallen", - "disclaimers": "Iɣtalen", - "disclaimerpage": "Project:Iɣtalen", - "edithelp": "Tallalt deg ubeddel", - "mainpage": "Asebter amenzawi", - "mainpage-description": "Asebter amenzawi", + "disclaimers": "Ilɣa", + "disclaimerpage": "Project:Ilɣa imuta", + "edithelp": "Tallelt ɣef teẓrigt", + "helppage-top-gethelp": "Tallelt", + "mainpage": "Asebter agejdan", + "mainpage-description": "Asebter agejdan", "policy-url": "Project:Ilugan", "portal": "Awwur n timetti", "portal-url": "Project:Awwur n timetti", - "privacy": "Tudert tusligt", - "privacypage": "Project:Tudert tusligt", + "privacy": "Tasertit n tbaḍnit", + "privacypage": "Project:Tasertit n tbaḍnit", "badaccess": "Agul n turagt", "badaccess-group0": "Ur tettalaseḍ ara ad texedmeḍ tigawt i tseqsiḍ.", "badaccess-groups": "Tigawt id steqsiḍ t-uffar kan i iseqdacen n {{PLURAL:$2|ugraw|igrawen}} : $1.", @@ -252,17 +262,20 @@ "newmessageslinkplural": "{{PLURAL:$1|izen amaynut|999=inzan imaynuten}}", "newmessagesdifflinkplural": "{{PLURAL:$1|abeddel aneggaru|999=ibeddilen ineggura}}", "youhavenewmessagesmulti": "Tesɛiḍ iznan imaynuten deg $1", - "editsection": "beddel", + "editsection": "ẓreg", "editold": "beddel", "viewsourceold": "ẓeṛ aɣbalu", "editlink": "beddel", "viewsourcelink": "ẓeṛ aɣbalu", - "editsectionhint": "Beddel amur: $1", + "editsectionhint": "Ẓreg tigezmi: $1", "toc": "Agbur", "showtoc": "Ssken", "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?", "viewdeleted": "Ẓer $1?", "restorelink": "{{PLURAL:$1|Yiwen abeddel yettumḥan|$1 Ibeddlen yettumḥan}}", @@ -279,13 +292,14 @@ "nstab-main": "Amagrad", "nstab-user": "Asebter n wemseqdac", "nstab-media": "Asebter n media", - "nstab-special": "Asebter uslig", + "nstab-special": "Asebter uzzig", "nstab-project": "Awal ɣef...", "nstab-image": "Afaylu", "nstab-mediawiki": "Izen", "nstab-template": "Talɣa", "nstab-help": "Tallalt", "nstab-category": "Taggayt", + "mainpage-nstab": "Asebter agejdan", "nosuchaction": "Tigawt ulac-itt", "nosuchactiontext": "Wiki ur teɛqil ara tigawt-nni n URL", "nosuchspecialpage": "Asebter uslig am wagi ulac-it.", @@ -300,7 +314,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)", @@ -311,6 +325,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", @@ -321,19 +337,24 @@ "no-null-revision": "Ur nezmer ara ad n-snulfu tacaggart tilemnt tamaynut i usebtar « $1 »", "badtitle": "Azwel ur yelhi", "badtitletext": "Asebter i testeqsiḍ fell-as mačči ṣaḥiḥ, d ilem, neɣ yella ugul deg wezday seg wikipedia s tutlayt tayeḍ neɣ deg wezday n wiki nniḍen. Ahat tesɛa asekkil ur yezmir ara ad yettuseqdac deg wezwel.", + "title-invalid-empty": "Azwel n usebter d-tessutreḍ d ilem neɣ yegber kan isem n tallunt n yismawen.", + "title-invalid-utf8": "Azwel n usebter d-tessutreḍ yegber tagzemt UTF-8 taruɣbilt", + "title-invalid-talk-namespace": "Azwel n usebter d-tessutreḍ yettwellih ar usebter n usqerdec ay izemren ulac-it", + "title-invalid-characters": "Azwel n usebter d-tessutreḍ yegber isekkilen iruɣbilen: \"$1\".", "perfcached": "Talɣut deg ukessar seg lkac u waqila mačči d tasiwelt taneggarut. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.", "perfcachedts": "Talɣut deg ukessar seg lkac, tasiwelt taneggarut n wass $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.", "querypage-no-updates": "Ibeddlen n usebter-agi ur ttbanen ara tura. Tilɣa ines qrib a d-banen.", "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.", + "translateinterface": "Akken ad ternuḍ neɣ ad tbeddleḍ tisuqilin i yiwikiyen meṛṛa, seqdec [https://translatewiki.net/ translatewiki.net], asenfaṛ n usideg utlayan n MediaWiki.", + "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.", @@ -343,16 +364,18 @@ "mypreferencesprotected": "Ur tesɛiḍ ara turagt ad beddeleḍ iɣewwaren inek(em).", "ns-specialprotected": "Ur t-zemred ara ad beddeleḍ isebtar usligen", "titleprotected": "Azwel agi yegdel deg usnulfu ɣef [[User:$1|$1]].\nTaɣẓint id yenna : $2", - "filereadonlyerror": "Ulamek an beddel afaylu « $1 » acku akaram n ifuyla « $2 » yella deg taɣuri kan.\n\nAnedbal i tid sekkweṛen yefkad taɣẓint agi : « $3 ».", + "filereadonlyerror": "Ulamek ad nbeddel afaylu \"$1\" acku akaram n ifuyla \"$2\" yella deg uskar n tɣuri kan.\n\nAnedbal n unagraw i t-isekkweṛen, yefka-d asegzi-agi : \"$3\".", "invalidtitle-knownnamespace": "Azwel ur i ɣbel ara s tallunt n isemawen « $2 » dɣa d-uglam « $3 »", "invalidtitle-unknownnamespace": "Azwel ur i ɣbel ara s uṭṭun n tallunt n isemawen $1 dɣa d-uglam « $2 » warisem", "exception-nologin": "Ur tekcimeḍ ara", - "exception-nologin-text": "Ilaq ad [[Special:Userlogin|qqeneḍ]] iwakken ad kecmeḍ ar usebtar neɣ tawuri agi.", + "exception-nologin-text": "Qqen akken ad tizmireḍ ad tkecmeḍ ar usebter-agineɣ tigawt-agi.", "exception-nologin-text-manual": "$1 iwakken ad kecmeḍ ar asebtar neɣ tigawt agi.", "virus-badscanner": "Yir tawila : anafraḍ n infafaden warisem : ''$1''", "virus-scanfailed": "Abrir n unadi (tangalt $1)", "virus-unknownscanner": "amgelanfafad warisem :", "logouttext": "'''Tura tesensereḍ.'''\n\nKra n isebtar zemren ad sskanen belli mazal-ik s yisem n wemseqdac inek armi temḥuḍ tazarkatut.", + "cannotlogoutnow-title": "Ur tezmireḍ ara ad teffɣeḍ tura", + "cannotlogoutnow-text": "Tuffɣa d tawezɣit ticki tseqdaceḍ $1.", "welcomeuser": "Anṣuf, $1 !", "welcomecreation-msg": "Amian inek(em) yesnulfad.\nTzemreḍ ad beddeleḍ {{SITENAME}} [[Special:Preferences|ismenyifen]] inek(em) ma tebɣiḍ.", "yourname": "Isem n wemseqdac", @@ -364,14 +387,21 @@ "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", + "cannotcreateaccount-text": "Timerna srid n imiḍanen n iseqdacen ur termid ara ɣef uwiki-agi.", "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ɣ", @@ -380,6 +410,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", @@ -390,8 +421,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}}", @@ -405,9 +439,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.", @@ -422,45 +456,70 @@ "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.", - "emailauthenticated": "Tansa e-mail inek/inem tesergeg ass n $2 af $3.", + "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-ik(im) imayl tettwasentem di $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.", - "emailconfirmlink": "Sentem tansa e-mail inek", + "emailconfirmlink": "Sentem tansa-ik imayl", "invalidemailaddress": "Tansa e-mail-agi ur telhi, ur tesɛi ara taseddast n lɛali. Ssekcem tansa e-mail s taseddast n lɛali neɣ ur tefkiḍ acemma.", "cannotchangeemail": "Ur t-zemreḍ ara ad beddeleḍ tansa e-mail deg uwiki agi.", "emaildisabled": "Asmel agi ur yezmer ara ad i cegaɛ e-mail.", "accountcreated": "Isem n wemseqdac yettwaxleq", - "accountcreatedtext": "Amiḍan n umseqdac i [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|amyannan]]) yexelqed.", + "accountcreatedtext": "Amiḍan n useqdac i [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|asqerdec]]) yettwarna.", "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", "user-mail-no-addy": "Ɛred ad icegaɛ e-mail war tansa e-mail", "user-mail-no-body": "Arram n uceggaɛ email s tafekka tilemt neɣ d-awezlan aṭas.", "changepassword": "Beddel awal n tbaḍnit", - "resetpass_announce": "Tkecmeḍ s ungal yettwazen-ak s e-mail (ungal-nni qrib yemmut). Iwekken tkemmleḍ, yessefk ad textareḍ awal n tbaḍnit amaynut dagi:", + "resetpass_announce": "Akken ad tfakeḍ ajerred-ik, yessefk ad tmuddeḍ awal uffir amaynut.", "resetpass_text": "", "resetpass_header": "Beddel awal n uɛassi n umiḍan", "oldpassword": "Awal n tbaḍnit aqdim:", "newpassword": "Awal n tbaḍnit amaynut:", "retypenew": "Ɛiwed ssekcem n tbaḍnit amaynut:", "resetpass_submit": "Eg awal n tbaḍnit u kcem", - "changepassword-success": "Awal n uɛaddi yettubeddel s lerbaḥ !", + "changepassword-success": "Awal-ik uffir ibeddel!", "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_forbidden-reason": "Ur tezmireḍ ara ad tẓergeḍ awal uffir : $1", "resetpass-no-info": "Ilaq ad qqeneḍ iwakken ad ẓṛeḍ asebter agi.", "resetpass-submit-loggedin": "Beddel awal n uɛaddi", "resetpass-submit-cancel": "Semmewet", - "resetpass-wrong-oldpass": "Awal n uɛaddi ur i seɣbel ara.\nAhat ilaq ad beddeleḍ awal ik/im n uɛaddi naɣ ad ssutereḍ awal n uɛaddi amaynut.", + "resetpass-wrong-oldpass": "Awal uffir d askudan neɣ amira mačči d ameɣtu.\nAhat tbeddleḍ yakanawal-ik uffir neɣ tsutreḍ-d askudan-nniḍen.", "resetpass-temp-password": "Awal n uɛaddi amakud", "resetpass-abort-generic": "Asiɣzef yesemmewet abeddel n uwal n uɛaddi.", "passwordreset": "Awennez tikkelt nniḍen n awal uɛaddi", @@ -476,7 +535,8 @@ "passwordreset-emailtext-user": "Aseqdac $1 ɣef {{SITENAME}} yessutered awennez n awal n uɛaddi i {{SITENAME}} ($4). {{PLURAL:$3|Amiḍan n useqdac agi yeqqen|imiḍanen n iseqdacen agi qqenen}} s tansa e-mail agi :\n\n$2\n\n{{PLURAL:$3|Awal n uɛaddi uɛḍil agi ad i aff tasewti-s|Awalen n uɛaddi uɛḍilen agi ad affen taseweti nsen}} deg {{PLURAL:$5|yiwen ass|$5 ussan}}. Ilaq tura ad qqeneḍ dɣa ad freneḍ awal n uɛaddi amaynut. Lukan mačči d kečč/kem i xedmen asuter agi, naɣ tecfiḍ tura i awal n uɛaddi inek/inem, tzemreḍ ad eǧǧeḍ izen agi.", "passwordreset-emailelement": "Isem n useqdac : \n$1\n\nAwal n uɛddi akudan : \n$2", "passwordreset-emailsentemail": "Tirawt n uwennez n awal n uɛaddi tetwaceggaɛ.", - "changeemail": "Beddel tansa n e-mail", + "passwordreset-invalidemail": "Tansa imayl d tarameɣtut", + "changeemail": "Beddel neɣ kkes tansa n imayl", "changeemail-header": "Beddel tansa n e-mail n umiḍan", "changeemail-no-info": "Ilaq ad qqeneḍ iwakken ad ẓṛeḍ asebter agi.", "changeemail-oldemail": "Tansa e-mail n tura :", @@ -485,6 +545,7 @@ "changeemail-password": "Awal-ik/im n uɛaddi ɣef {{SITENAME}} :", "changeemail-submit": "Beddel tansa e-mail", "changeemail-throttled": "Tɛerdeḍ ad qqeneḍ aṭas tiqwal.\nIlaq ad rǧuḍ $1 uqbel ad ɛerdeḍ tikkelt nniḍen.", + "changeemail-nochange": "Ttxilek sekcem tansa i imayl nniḍen.", "resettokens": "Wennez tiddas", "resettokens-text": "D-agi tzemreḍ ad twennezeḍ tiddas i ɛemmeden ad kecmeḍ ar isefka usligen i qqenen ar amiḍan inek/inem.\n\nIlaq ad twennezeḍ tiddas ma tferqeḍ-ten s tuccḍa s umseqdac nniḍen neɣ ma amiḍan inek/inem yexṣer.", "resettokens-no-tokens": "Ulac tiddas an wennez.", @@ -512,23 +573,26 @@ "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", - "anoneditwarning": "'''Aɣtal:''' Ur tkecmiḍ ara. Tansa IP inek ad tettusmekti deg umezruy n usebter-agi.", + "anoneditwarning": "Ɣur-k: ur teqqineḍ ara. Tansa-ik IP ad d-ban i yal yiwen ma yella ur teggiḍ ara abeddel. Ma yella [$1 teqqneḍ] neɣ [$2 rnu amiḍan], abeddel-ik ad ittusemmi s yisem-ik, s ufareṣ n tignatin-nniḍen.", "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 \"$1\", 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 sewḥlen.'''\n\nAsewḥel yetwexdem af $1\nTaɣẓint id yenna : ''$2''.\n\n* Tazzwara n usewḥel : $8\n* Taggara n usewḥel : $6\n* Amiḍan i sewḥlen : $7.\n\n\nTzemreḍ ad tmeslayeḍ s $1 neɣ [[{{MediaWiki:Grouppage-sysop}}|anedbal]] nniḍen iwakken ad tsmelayem ɣef uɛekkil-nni.\nLukan ur tefkiḍ ara email saḥih deg [[Special:Preferences|isemyifiyen n wemseqdac]], ur tezmireḍ ara ad tazneḍ email.\nTansa n IP inek n tura d $3, ID n uɛekkil d #$5.\nSmekti-ten u fka-ten i unedbal-nni.", - "autoblockedtext": "Tansa IP inek/inem tesewḥel s-uwurman acku d-aseqdac nniḍen i ttisexdmen. Ladɣa ula d-aseqdac agi, isewḥel-it $1.\n\nTaɣẓint id yenna : ''$2''.\n\n* Tazzwara n usewḥel : $8\n* Taggara n usewḥel : $6\n* Amiḍan i sewḥlen : $7.\n\n\nTzemreḍ ad tmeslayeḍ s $1 neɣ [[{{MediaWiki:Grouppage-sysop}}|anedbal]] nniḍen iwakken ad tsmelayem ɣef uɛekkil-nni.\nLukan ur tefkiḍ ara email saḥih deg [[Special:Preferences|isemyifiyen n wemseqdac]], ur tezmireḍ ara ad tazneḍ email.\nTansa n IP inek n tura d $3, ID n uɛekkil d #$5.\nSmekti-ten u fka-ten i unedbal-nni.", + "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ḍ.", "blockednoreason": "Ulac taɣẓint", "whitelistedittext": "Yessefk ad $1 iwakken ad tbeddleḍ isebtar.", "confirmedittext": "Yessefk ad tsentmeḍ tansa e-mail inek uqbel abeddel. Xtar tansa e-mail di [[Special:Preferences|isemyifiyen n wemseqdac]].", @@ -541,14 +605,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.''", - "noarticletext": "Ulac aḍris deg usebter-agi, tzemreḍ ad [[Special:Search/{{PAGENAME}}|tnadiḍ ɣef wezwel n usebter-agi]] deg isebtar wiyaḍ neɣ [{{fullurl:{{FULLPAGENAME}}|action=edit}} tettbeddileḍ asebter-agi].", + "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!'''", @@ -573,7 +637,6 @@ "explainconflict": "Amdan nniḍen ibeddel asebter-agi asmi telliḍ tettbeddileḍ.\nAḍris deg usawen yesɛa asebter am yella tura.\nIbeddlen inek ahaten deg ukessar.\nYesfek ad txelṭeḍ ibeddlen inek akk d usebter i yellan.\n'''Ala''' aḍris deg usawen i yettusmekta asmi twekkiḍ \"$1\".", "yourtext": "Aḍris inek", "storedversion": "Tasiwelt yettusmketen", - "nonunicodebrowser": "'''AƔTAL: Browser/Explorateur inek ur yebil ara unicode. Nexdem akken ad tzemreḍ ad tbeddleḍ mebla amihi: isekkilin i mačči ASCII ttbanen deg tankult ubeddel s ungilen hexadecimal.'''", "editingold": "'''AƔTAL: Aqlak tettbeddileḍ tasiwelt taqdimt n usebter-agi.\nMa ara t-tesmektiḍ, akk ibeddlen i yexdmen seg tasiwelt-agi ruḥen.'''", "yourdiff": "Imgerraden", "copyrightwarning": "Ssen belli akk tikkin deg {{SITENAME}} hatent ttwaznen seddaw $2 (Ẓer $1 akken ad tessneḍ kter). Lukan ur tebɣiḍ ara aru inek yettubeddel neɣ yettwazen u yettwaru deg imkanen nniḍen, ihi ur t-tazneḍ ara dagi.
    \nAqlak teggaleḍ belli tureḍ wagi d kečč, neɣ teddmiḍ-t seg taɣult azayez neɣ iɣbula tilelliyin.\n'''UR TEFKIḌ ARA AXDAM S COPYRIGHT MEBLA TURAGT!'''", @@ -599,25 +662,33 @@ "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.", "edit-conflict": "Amgirred n ubeddel.", "edit-no-change": "Abeddel inek/inem ur yetwexdam ara acku ur di ban ara abeddel deg uḍris.", + "postedit-confirmation-created": "Asebter ittwarna.", + "postedit-confirmation-restored": "Asebter yuɣal-d.", "postedit-confirmation-saved": "Abeddel inek/inem yetwakles.", "edit-already-exists": "Asebter amaynut ur d yesnufu ara.\nYella yakan.", "defaultmessagetext": "Izen s lexṣas", "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.", @@ -646,7 +717,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", @@ -656,7 +727,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", @@ -695,7 +766,7 @@ "revdelete-legend": "Sbebd akref n tamuɣli", "revdelete-hide-text": "Aḍris n tacaggart", "revdelete-hide-image": "Ffer ayen yellan deg ufaylu", - "revdelete-hide-name": "Ffer tigawt d nnican", + "revdelete-hide-name": "Ffer iberdan d iɣewwaṛen", "revdelete-hide-comment": "Beddel agzul", "revdelete-hide-user": "Isem n umseqdac/Tansa IP n umaẓrag", "revdelete-hide-restricted": "Mḥu isefka agi i inedbalen d yimdanen wiyaḍ", @@ -739,6 +810,7 @@ "mergehistory-empty": "Ulac lqem i nezmer an zdi.", "mergehistory-done": "$3 {{PLURAL:$3|lqem|ileqman}} n $1 {{PLURAL:$3|yezdukel|zdukelen}} deg [[:$2]].", "mergehistory-fail": "Ulamek an zdukel imezruyen. Fru tikkelt nniḍen asebter d iɣewwaren is n uzmez.", + "mergehistory-fail-invalid-source": "Asebter aɣbalu d arameɣtu.", "mergehistory-no-source": "Azar n usebter $1 ulac-it.", "mergehistory-no-destination": "Aserken n usebter $1 ulac-it", "mergehistory-invalid-source": "Azar n usebter ilaq ad i sɛu azwel i ɣbelen.", @@ -759,6 +831,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", @@ -768,12 +842,14 @@ "notextmatches": "ulac ayen yecban azwel n usebter", "prevn": "{{PLURAL:$1|$1}} ssabeq", "nextn": "{{PLURAL:$1|$1}} ameḍfir", + "prev-page": "Asebter yezrin", + "next-page": "Asebter d-iteddun", "prevn-title": "$1 {{PLURAL:$1|agmud n uqbel|igmad n uqbel}}", "nextn-title": "$1 {{PLURAL:$1|agmud n sakin|igmad n sakin}}", "shown-title": "Beqqeḍ $1 {{PLURAL:$1|agmud|igmad}} s usebter", "viewprevnext": "Ẓer ($1 {{int:pipe-separator}} $2) ($3).", "searchmenu-exists": "'''Yella asebter s isem \"[[:$1]]\" deg wiki agi.'''", - "searchmenu-new": "'''Snulfud asebter « [[:$1|$1]] » deg wiki agi !'''", + "searchmenu-new": "Rnu asebter \"[[:$1]]\" ɣef uwiki-agi! {{PLURAL:$2|0=|Wali daɣen asebter yettwafen s unadi-ik.|Wali daɣen igmaḍ n unadi yettwafen.}}", "searchprofile-articles": "Isebtar n ugbur", "searchprofile-images": "Agetmedia", "searchprofile-everything": "Akk", @@ -784,30 +860,36 @@ "searchprofile-advanced-tooltip": "Fren ideggen n isemawen i unadi", "search-result-size": "$1 ({{PLURAL:$2|1 awal|$2 awalen}})", "search-result-category-size": "$1 {{PLURAL:$1|amseqdac|imseqdacen}} $2 ({{PLURAL:$2|adu-taggayt|adu-tiggayin}}, $3 {{PLURAL:$3|afaylu|ifuyla}})", - "search-redirect": "(asemmimeḍ $1)", + "search-redirect": "(awelleh seg $1)", "search-section": "(tigezmi $1)", + "search-category": "(taggayt $1)", "search-file-match": "(yzega i ugbur n ufaylu)", "search-suggest": "D awal $1 i tnadiḍ ?", - "search-interwiki-caption": "Isenfaren atmaten", - "search-interwiki-default": "Igemmaḍ ɣef $1 :", + "search-rewritten": "Igmaḍ yettwaseknen i $1. Anadi n $2 deg umḍiq-is.", + "search-interwiki-caption": "Igmaḍ n isenfaṛen atmaten", + "search-interwiki-default": "Igmaḍ si $1:", "search-interwiki-more": "(ugar)", + "search-interwiki-more-results": "ugar n igmaḍ", "search-relatedarticle": "Amassaɣ", "searchrelated": "ineqqes", "searchall": "akk", "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", "powersearch-togglelabel": "Ɛellem :", "powersearch-toggleall": "Akkw", "powersearch-togglenone": "Ulac", + "powersearch-remember": "Cfu ɣef ufran n yinadiyen d-iteddun", "search-external": "Anadi yeffɣen", "searchdisabled": "Anadi deg {{SITENAME}} yettwakkes. Tzemreḍ ad tnadiḍ s Google. Meɛna ur tettuḍ ara, tasmult n google taqdimt.", "search-error": "Tella tuccḍa deg unadi n : $1", - "preferences": "Isemyifiyen", - "mypreferences": "Isemyifiyen", + "search-warning": "Alɣu yettwammel degu unadi n: $1", + "preferences": "Ismenyifen", + "mypreferences": "Ismenyifen", "prefs-edits": "Amḍan n ibeddlilen :", - "prefsnologintext2": "Ilaq ad $1 iwakken ad sbaduḍ ismenyifen inek/inem.", + "prefsnologintext2": "Ttxilek(m) qqen aken ad snifleḍ ismenyifen inek(m).", "prefs-skin": "Aglim", "skin-preview": "Pre-timeẓriwt", "datedefault": "Ur sɛiɣ ara asemyifi", @@ -815,15 +897,20 @@ "prefs-user-pages": "Isebtar n useqdac", "prefs-personal": "Profile n wemseqdac", "prefs-rc": "Ibeddilen imaynuten", - "prefs-watchlist": "Umuɣ n uɛessi", + "prefs-watchlist": "Tabdart n uḍfaṛ", + "prefs-editwatchlist": "Ẓreg tabdart n uḍfaṛ", + "prefs-editwatchlist-label": "Ẓreg inekcam ɣef tedbart n uḍfaṛ:", + "prefs-editwatchlist-edit": "Wali sakin kkes izwal n tebdart-ik n uḍfaṛ", + "prefs-editwatchlist-raw": "Ẓreg tabdart n uḍfaṛ deg uskar arewway", + "prefs-editwatchlist-clear": "Sfeḍ tabdart-ik n uḍfaṛ", "prefs-watchlist-days": "Amḍan n ussan i ubeqqeḍ deg umuɣ n uɛassi :", "prefs-watchlist-days-max": "Afellay $1 {{PLURAL:$1|ass|ussan}}", - "prefs-watchlist-edits": "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": "Isemyifiyen wiyaḍ", + "prefs-misc": "Ismenyifien-nniḍen", "prefs-resetpass": "Beddel awal n uɛaddi", - "prefs-changeemail": "Beddel tansa n e-mail", + "prefs-changeemail": "Beddel neɣ kkes tansan n yimayl", "prefs-setemail": "Sbadu yiwet tansa e-mail", "prefs-email": "Tixtiṛiyin n tira", "prefs-rendering": "Tummant", @@ -831,14 +918,16 @@ "restoreprefs": "Err akkw iɣewwaren s lexṣas (deg akkw tigezmiwin)", "prefs-editing": "Abedddil", "searchresultshead": "Anadi", - "stub-threshold": "Talast timinegt i izdayen ɣer ibegzan (itamḍanen) :", + "stub-threshold": "Talast i umasal n iseɣwan n isumar ($1) :", + "stub-threshold-sample-link": "amedya", "stub-threshold-disabled": "Yensa", "recentchangesdays": "Amḍan n ussan an beqqeḍ deg ibeddilen ineggura.", "recentchangesdays-max": "Afellay $1 {{PLURAL:$1|ass|ussan}}", "recentchangescount": "Amḍan n ibeddilen i ubeqqeḍ s lexṣas :", "prefs-help-recentchangescount": "Wagi yesɛa deg-es ibeddilen ineggura, isebtar n umezruy d iɣmisen.", "prefs-help-watchlist-token2": "Hattan tasarut tufurt n usuddem Web n umuɣ inek/inem n uḍfar.\nAkkw amḍan yesɛan tasarut agi, ad yezmer ad i ɣer umuɣ inek/inem n uḍfar, ur d-sselɣu ara tasarut agi ihi.\n[[Special:ResetTokens|Nqer d-agi ma tebɣiḍ ad wennezeḍ tasarut agi]].", - "savedprefs": "Isemyifiyen inek yettusmektan.", + "savedprefs": "Ismenyifen-ik ttwaskelsen.", + "savedrights": "Izerfan n useqdac n {{GENDER:$1|$1}} ttwaskelsen.", "timezonelegend": "Iẓḍi n ukud :", "localtime": "Asrag adigan :", "timezoneuseserverdefault": "Seqdec azal s lexṣas n wiki ($1)", @@ -868,6 +957,7 @@ "youremail": "E-mail *:", "username": "{{GENDER:$1|Isem n umseqdac|Isem n tamseqdact}} :", "prefs-memberingroups": "{{GENDER:$2|Aεeggal|Taɛggalt}} n {{PLURAL:$1|ugraw|igrawen}} :", + "group-membership-link-with-expiry": "$1 (arams d $2)", "prefs-registration": "Azmez n tiggezt :", "yourrealname": "Isem n ṣṣeḥ *:", "yourlanguage": "Tutlayt:", @@ -883,7 +973,7 @@ "gender-female": "Tebeddel isebtar n wiki", "prefs-help-gender": "Sbadu asmenyif agi d-afrayan.\nAseɣẓan agi yetseqdac azal-is iwakken ad yemeslay s kečč/kem dɣa ad yefk isem-ik/im i wiyaḍ nniḍen s useqdac n tawsit tajeṛṛumant.\nTalɣut agi attili d-tazayezt.", "email": "E-mail", - "prefs-help-realname": "* Isem n ṣṣeḥ (am tebɣiḍ): ma textareḍ a t-tefkeḍ, ad yettuseqdac iwakken ad snen medden anwa yura tikkin inek.", + "prefs-help-realname": "Isem n tidet d anufran.\nma tefkeḍ-t-id, ad yettuseqdac iwaken ad ak(m)-d ttwanefkent tebzirin inek(m).", "prefs-help-email": "* E-mail (am tebɣiḍ): Teǧǧi imseqdacen wiyaḍ a k-aznen email mebla ma ẓren tansa email inek.", "prefs-help-email-others": "Zemreḍ ad eǧǧeḍ wiyeḍ nniḍen ak(akem) cceqɛen izen deg usebter-ik (im) n umyannan war ad effekeḍ tamagit-ik (im).", "prefs-help-email-required": "Tansa e-mail tesḍulli.", @@ -905,13 +995,15 @@ "prefs-diffs": "Timeẓliwin", "prefs-help-prefershttps": "Asmenyif agi, ad yelḥu ar tuqqna ay d-yetteddun.", "prefs-tabs-navigation-hint": "Taxbalut : Tzemreḍ ad seqdeceḍ tineccabin n uzelmaḍ d uyeffus iwakken ad ssileleḍ gar iccaren.", - "userrights": "Laɛej iserfan n wemseqdac", - "userrights-lookup-user": "Laɛej iderman n yimseqdacen", + "userrights": "Izerfan n useqdac", + "userrights-lookup-user": "Fren aseqdac", "userrights-user-editname": "Ssekcem isem n wemseqdac:", - "editusergroup": "Beddel iderman n yimseqdacen", - "editinguser": "Abeddel n izerfan n {{GENDER:$1|useqdac|taseqdact}} '''[[User:$1|$1]]''' $2", - "userrights-editusergroup": "Beddel iderman n wemseqdac", - "saveusergroups": "Smekti iderman n yimseqdacen", + "editusergroup": "Sali-d igrawen n iseqdacen", + "editinguser": "Abeddel n izerfan n {{GENDER:$1|useqdac|tseqdact}} [[User:$1|$1]] $2", + "viewinguserrights": "Askan n izefan iseqdacen n {{GENDER:$1|useqdac|tseqdact}} [[User:$1|$1]] $2", + "userrights-editusergroup": "Snifel izerfan n {{GENDER:$1|useqdsac|tseqdact}}", + "userrights-viewusergroup": "Sken igrawen n {{GENDER:$1|useqdac|tseqdact}}", + "saveusergroups": "Sekles igrawen n {{GENDER:$1|useqdac|tseqdact}}", "userrights-groupsmember": "Amaslad deg:", "userrights-groupsmember-auto": "Aεeggal udrig n :", "userrights-groups-help": "Tzemreḍ ad beddeleḍ igrawen anda yella aseqdac agi :\n* Taxxamt i tekkin : aseqdac yella deg ugraw agi.\n* Taxxamt ur tekkin ara : aseqdac ur yella ara deg ugraw agi\n* Titrit (*) : ur tzemreḍ ara ad ekkeseḍ agraw agi sakin i tid ernuḍ, naɣ bis-bersa.", @@ -920,6 +1012,14 @@ "userrights-nodatabase": "Taffa n isefka « $1 » ulac itt naɣ mačči d tadigant.", "userrights-changeable-col": "Igrawen i tzemreḍ ad beddeleḍ", "userrights-unchangeable-col": "Igrawen ur tzemreḍ ara ad beddeleḍ", + "userrights-expiry-current": "Ad ifat di $1", + "userrights-expiry-none": "Ur yettfat ara", + "userrights-expiry": "Ad ifat di:", + "userrights-expiry-existing": "Azemz n ufati yellan: $3, $2", + "userrights-expiry-othertime": "Akud-nniḍen:", + "userrights-expiry-options": "1 ass:1 day,1 amalas:1 week,1 aggur:1 month,3 agguren:3 montghs,6 agguren:6 month,1 aseggas:1 year", + "userrights-invalid-expiry": "Azemz n tagara i ugraw \"$1\" mačči d ameɣtu.", + "userrights-expiry-in-past": "Azemz n tagara i ugraw \"$1\" yezri.", "userrights-conflict": "Ccwal n ubeddel n izerfan n umseqdac ! Ilaq ad ɛzemeḍ tikelt nniḍen dɣa ad sergegeḍ ibeddilen.", "group": "Adrum:", "group-user": "Iseqdacen", @@ -940,16 +1040,18 @@ "grouppage-bot": "{{ns:project}}:Iṛubuten", "grouppage-sysop": "{{ns:project}}:Inedbalen", "grouppage-bureaucrat": "{{ns:project}}:Imsfelluran", - "grouppage-suppress": "{{ns:project}}:Inemdayen", + "grouppage-suppress": "{{ns:project}}:Suppress", "right-read": "Ɣeṛ isebtar", "right-edit": "Beddel isebtar", "right-createpage": "Snulfud isebtar (mačči d-isebtar n umeslay)", "right-createtalk": "Snulfud isebtar n umeslay", "right-createaccount": "Snulfud imiḍanen n iseqdacen", + "right-autocreateaccount": "Tuqqna tawurmant s umiḍan n useqdac azɣaray", "right-minoredit": "Ffer ibeddilen yellan d-imectuḥen", "right-move": "Beddel isem n isebtar", "right-move-subpages": "Beddel isem n isebtar d adu-isebtar nsen", "right-move-rootuserpages": "Beddel isem n usebtar amenzawi n useqdac", + "right-move-categorypages": "Ugar n isebtar n taggayin", "right-movefile": "Beddel isem n ifuyla", "right-suppressredirect": "Ur snulfu ara asemmimeḍ seg azwel amezwaru s ubeddel n isem usebter", "right-upload": "Azen ifuyla", @@ -971,7 +1073,7 @@ "right-deletedtext": "Ẓeṛ aḍris yemḥan d timeẓliwin gar ileqman yemḥan", "right-browsearchive": "Nadi ɣef isebtar yettumḥan", "right-undelete": "Erred asebter yemḥan", - "right-suppressrevision": "Ssekyed dɣa erred ileqman yefren i inedbalen", + "right-suppressrevision": "Sken, ffer, werri iceggiren n isebtar n yal aseqdac", "right-suppressionlog": "Ẓeṛ iɣmisen usligen", "right-block": "Kyef deg tira iseqdacen nniḍen", "right-blockemail": "Sḍiqqef aceggaɛ n tira (e-mail) i yiwen useqdac", @@ -1006,19 +1108,47 @@ "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-group-private-information": "Adef ɣer isefka inek usligen", + "grant-blockusers": "Sewḥel diɣ selwi iseqdacen", + "grant-createaccount": "Seɣnew imiḍanen", + "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", @@ -1026,11 +1156,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", @@ -1045,10 +1177,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", @@ -1065,16 +1204,93 @@ "recentchanges-legend-heading": "Aglam :", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (zeṛ daɣen [[Special:NewPages|umuɣ n isebtar imaynuten]]).", "recentchanges-legend-plusminus": "(''± 123'')", - "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-filterlist-feedbacklink": "Ini-yaɣ-d tiktiwin-ik ɣef ifecka n uzizdeg (imaynuten)", + "rcfilters-highlightbutton-title": "Sebṛureq igmaḍ", + "rcfilters-highlightmenu-title": "Fren ini", + "rcfilters-highlightmenu-help": "Fren ini n usebṛuṛeq n tmeẓlit-agi", + "rcfilters-filterlist-noresults": "Ukac imzizdigen yettwafen", + "rcfilters-filter-editsbyself-label": "Asnifel-ik", + "rcfilters-filter-editsbyself-description": "Ittekkiyen-ik", + "rcfilters-filter-editsbyother-label": "Asnifel n wiyaḍ", + "rcfilters-filter-editsbyother-description": "Akk ibeddilen slid wid iynek(m).", + "rcfilters-filtergroup-userExpLevel": "Asekles n iseqdacen aked tarmit", + "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-newcomer-description": "Imaẓragen uqqinen s udun n 10 ibeddilen aked 4 n ussan n urmud.", + "rcfilters-filter-user-experience-level-learner-label": "Inelmaden", + "rcfilters-filter-user-experience-level-learner-description": "Imaẓragen uqqinen idegi tarmit tezga-d ger \"Iseqdacen imaynuten\" aked \"Iseqdacen imazzayen\".", + "rcfilters-filter-user-experience-level-experienced-label": "Iseqdacen s tirmitin", + "rcfilters-filter-user-experience-level-experienced-description": "Imaẓragen uqqinen s ugar n 500 ibeddilen aked 30 n ussan n urmud.", + "rcfilters-filtergroup-automated": "Ittekkiyen iwurmanen", + "rcfilters-filter-bots-label": "Aṛubut", + "rcfilters-filter-bots-description": "Ibeddilen yettwagan s ifecka iwurmanen.", + "rcfilters-filter-humans-label": "Amdan (mačči d aṛubut)", + "rcfilters-filter-humans-description": "Ibeddilen yettwagan s imaẓragen inalsen.", + "rcfilters-filtergroup-significance": "Anamek", + "rcfilters-filter-watchlistactivity-seen-label": "Wali ibeddilen", + "rcfilters-filtergroup-changetype": "Anaw ubeddil", + "rcfilters-filter-pageedits-label": "Ibeddilen n usebter", + "rcfilters-filter-categorization-label": "Ibeddilen n taggayt", + "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": "amgirred", + "diff": "Amgired", "hist": "Amezruy", "hide": "Ffer", "show": "Ssken", @@ -1083,8 +1299,8 @@ "boteditletter": "b", "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|aɛessas|iɛessasen}}]", "rc_categories": "Ḥedded i taggayin (ferreq s \"|\")", - "rc_categories_any": "Ulayɣer", - "rc-change-size-new": "$1 {{PLURAL:$1|atamḍan|itamḍanen}} sakin abeddel", + "rc_categories_any": "Yiwet seg tid yettwafernen", + "rc-change-size-new": "$1 {{PLURAL:$1|atamḍan|itamḍanen}} seld abeddel", "newsectionsummary": "/* $1 */ tigezmi tamaynut", "rc-enhanced-expand": "Ẓeṛ ttfaṣil", "rc-enhanced-hide": "Ffer tilɣa", @@ -1107,9 +1323,9 @@ "uploaderror": "Agul deg usekcam", "upload-recreate-warning": "'''Ɣur-wet : Afaylu s isem agi yetwekkes naɣ yetembiwel.'''\nAɣmis n tukksiwin d win n ittembiwilen n usebter agi beqqeḍen d-agi i tilɣa :", "uploadtext": "Sseqdec tiferkit agi iwakken ad ktereḍ ifuyla ɣef uqeddac.\nIwakken ad ẓṛeḍ naɣ ad nadiḍ tugniwin i ktren uqbel, ẓeṛ [[Special:FileList|umuɣ n tugniwin]]. Taktert tella daɣen deg [[Special:Log/upload|aɣmis n taktert n ifuyla]], dɣa inuzal deg [[Special:Log/delete|aɣmis n inuzal]].\n\nAkken ad tessekcmeḍ afaylu deg usebter, seqdec azay am wagi\n* '''[[{{ns:file}}:afaylu.jpg]]''', iwakken ad beqqeḍeḍ afaylu deg tabadut tačurant (lukan d-tugna) ;\n* '''[[{{ns:file}}:afaylu.png|200px|thumb|left|aḍris n uglam]]''' i useqdac n uqmamaḍ n 200px s tehri deg tanaka af uzelmeḍ s « aḍris n uglam » am aglam ;\n* '''[[{{ns:media}}:afaylu.ogg]]''' iwakken ad qqeneḍ ɣer ufaylu war ubeqqeḍ.", - "upload-permitted": "Amasal n ifuyla i siregen : $1.", - "upload-preferred": "Amasal n ifuyla i smenyifen : $1.", - "upload-prohibited": "Amasal n ifuyla igdelen : $1.", + "upload-permitted": "{{PLURAL:$2|Amasal|Imasalen}} n ifuyla {{PLURAL:$2|yettwasireg|ttwasirgen}} : $1.", + "upload-preferred": "{{PLURAL:$2|Amasal|Imasalen}} n ifuyla {{PLURAL:$2|anurif|inurifen}} : $1.", + "upload-prohibited": "‎{{PLURAL:$2|Amasal|Imasalen}} n ifuyla {{PLURAL:$2|ugdil|ugdilen}} : $1.", "uploadlogpage": "Amezruy n usekcam", "uploadlogpagetext": "Hat-an umuɣ n ifuyla ineggura i kteren ɣef uqeddac.\nẒeṛ [[Special:NewFiles|tihawt n tugniwin timaynutin]].", "filename": "Isem n ufaylu", @@ -1185,6 +1401,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.", @@ -1245,7 +1476,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ṛ.", @@ -1277,7 +1508,7 @@ "listfiles-latestversion-yes": "Ih", "listfiles-latestversion-no": "Ala", "file-anchor-link": "Afaylu", - "filehist": "Amazray n tugna", + "filehist": "Amazray n ufaylu", "filehist-help": "Senned ɣef yiwen azmez d usrag iwakken ad ẓṛeḍ afaylu aken yella deg imir nni.", "filehist-deleteall": "ekkes akkw", "filehist-deleteone": "ekkes", @@ -1291,7 +1522,7 @@ "filehist-dimensions": "Iseggiwen", "filehist-filesize": "Tiddi n ufaylu", "filehist-comment": "Awennit", - "imagelinks": "Izdayen", + "imagelinks": "Aseqdec n ufaylu", "linkstoimage": "{{PLURAL:$1|Asebter agi teseqdac|$1 isebtaren agi teseqdacen}} afaylu agi :", "linkstoimage-more": "Ugar n {{PLURAL:$1|yiwen asebter|$1 isebtar}} tseqdacen afaylu agi.\nUmuɣ agi yebeqqeḍ ala {{PLURAL:$1|asebter amezwaru|$1 isebtar imezwura}} i seqdacen afaylu agi.\nYella [[Special:WhatLinksHere/$2|umuɣ ummid]].", "nolinkstoimage": "Ulaḥedd seg isebtar sɛan azday ar afaylu-agi.", @@ -1349,11 +1580,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...", @@ -1418,6 +1649,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", @@ -1428,8 +1660,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", @@ -1437,6 +1677,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ḍ", @@ -1449,20 +1690,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)", @@ -1515,8 +1772,9 @@ "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 [[Special:UserLogin|tkecmeḍ]] u tesɛiḍ tansa e-mail ṭaṣhiḥt deg [[Special:Preferences|isemyifiyen]] inek\niwakken ad tazneḍ email i imseqdacen wiyaḍ.", + "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", "emailuser-title-target": "Ceggaɛ tirawt i {{GENDER:$1|aseqdac agi|taseqdact agi}}", "emailuser-title-notarget": "Ceggaɛ tirawt i useqdac", @@ -1541,31 +1799,37 @@ "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": "Umuɣ n uɛessi", - "mywatchlist": "Umuɣ n uɛessi", + "watchlist": "Tabdart n uḍfaṛ", + "mywatchlist": "Tabdart n uḍfaṛ", "watchlistfor2": "I $1 $2", - "nowatchlist": "Umuɣ n uɛessi inek d ilem.", - "watchlistanontext": "G leɛnaya-k $1 iwakken ad twalaḍ neɣ tbeddleḍ iferdas deg wumuɣ n uɛessi inek.", + "nowatchlist": "Ulac iferdisen di tebdart-ik n uḍfaṛ.", + "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ṛ (akked 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", - "watchlist-options": "Tifranin n umuɣ n uɛessi", + "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", + "wlshowhideliu": "Iseqdacen yettwajerden", + "wlshowhideanons": "Iseqdacen udrigen", + "watchlist-options": "Iɣewwaṛen n tebdart n uḍfaṛ", "watching": "Ad iɛass...", "unwatching": "Ad ifukk aɛessi...", "watcherrortext": "Yella anezri imi tebeddeleḍ iɣewwaren n umuɣ inek/inem n uɛassi i « $1 ».", @@ -1590,11 +1854,12 @@ "deletepage": "Mḥu asebter", "confirm": "Sentem", "excontent": "Ayen yella: '$1'", - "excontentauthor": "Ayen yella: '$1' ('[[Special:Contributions/$2|$2]]' kan i yekken deg-s)", + "excontentauthor": "yegber : \"$1\", udiɣ immttekki-ines d \"[[Special:Ittekkiyen/$2|$2]]\" ([[User talk:$2|asqerdec]])", "exbeforeblank": "Ayen yella uqbal ma yettumḥa: '$1'", "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", @@ -1624,6 +1889,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", @@ -1719,11 +1986,13 @@ "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)", + "contributions-userdoesnotexist": "Amiḍan n useqdac \"$1\" ur yettwasekles ara.", "nocontribs": "Ur yufi ara abddel i tebɣiḍ.", "uctop": "(amiran)", "month": "Seg uggur (d wid uqbel) :", @@ -1732,16 +2001,18 @@ "sp-contributions-newbies-sub": "I yisem yimseqdacen imaynuten", "sp-contributions-newbies-title": "Ittekkiyen n imseqdacen gar imiḍanen imaynuten", "sp-contributions-blocklog": "Aɣmis n uɛeṭṭil", - "sp-contributions-deleted": "isekcam yemḥan", + "sp-contributions-suppresslog": "Attekki n {{GENDER:$1|useqdac|taseqdact}} yettwakkes", + "sp-contributions-deleted": "Attekki n {{GENDER:$1|useqdac|taseqdact}} yettwakkes", "sp-contributions-uploads": "izdamen", "sp-contributions-logs": "iɣmisen", "sp-contributions-talk": "Mmeslay", - "sp-contributions-userrights": "Laɛej iserfan n umseqdac", + "sp-contributions-userrights": "sefrek izerfan n {{GENDER:$1|useqdac}}", "sp-contributions-blocked-notice": "Aseqdac agi yekyef.\nAsekcem aneggaru n useklas n ikyafen yella ddaw agi :", "sp-contributions-blocked-notice-anon": "Tansa IP agi tekyef.\nAsekcem aneggaru n useklas n ikyafen yella ddaw agi :", "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 »", @@ -1755,15 +2026,15 @@ "whatlinkshere-prev": "{{PLURAL:$1|ssabeq|$1 ssabeq}}", "whatlinkshere-next": "{{PLURAL:$1|ameḍfir|$1 imeḍfiren}}", "whatlinkshere-links": "← izdayen", - "whatlinkshere-hideredirs": "$1 aceggeε ɣer", - "whatlinkshere-hidetrans": "$1 aseddu", - "whatlinkshere-hidelinks": "$1 izdayen", - "whatlinkshere-hideimages": "$1 ifuyla iqqenen", + "whatlinkshere-hideredirs": "$1 iwellihen", + "whatlinkshere-hidetrans": "$1 tiguriyin", + "whatlinkshere-hidelinks": "$1 iseɣwan", + "whatlinkshere-hideimages": "$1 iseɣwan ar ufaylu", "whatlinkshere-filters": "Tistaytin", "autoblockid": "Asewḥel awurman #$1", "block": "Ɛekkel aseqdac", "unblock": "Aksasewḥel n umseqdac", - "blockip": "Ɛekkel aseqdac", + "blockip": "Sewḥel {{GENDER:$1|aseqdac|taseqdact}}", "blockip-legend": "Ɛekkel aseqdac", "blockiptext": "Seqdec tiferkit ddaw-agi iwakken ad sewḥeleḍ ineɛruḍen n ubeddel seg yiwet tansa IP tulmist neɣ n yiwen isem umseqdac.\nAsket am wagi, ur ilaq ad yetwexddem kan iwakken ad yeεeggen axeṣṣar dɣa ilaq ad yemtawi s [[{{MediaWiki:Policy-url}}|ilugan igensanen]].\nEfked ddaw-agi taɣẓint tusdidt (amedya : efked isebtar yetwaxeṣṣren).", "ipaddressorusername": "Tansa IP neɣ isem n wemseqdac", @@ -1827,9 +2098,9 @@ "blocklink": "ɛekkel", "unblocklink": "ekkes asewḥel", "change-blocklink": "beddel asewḥel", - "contribslink": "tikkin", + "contribslink": "attekki", "emaillink": "Ceggaɛ e-mail", - "autoblocker": "Tetsewḥeleḍ s uwurman acku tansa IP inek/inem yeseqdac-itt « [[User:$1|$1]] ». Taɣzint id efkan i usewḥel agi d : « $2 ».", + "autoblocker": "Tweḥleḍ s wudem awurman acku tansa-ik IP yeseqdac-itt \"[[User:$1|$1]]\"\nTaɣzint i d-ittunefken i usewḥel n $1 d \"$2\"", "blocklogpage": "Aɣmis n isewḥelen", "blocklog-showlog": "Amseqdac agi, yetseweḥel uqbel. Ad affeḍ aɣmis n isewḥal ddaw-agi :", "blocklog-showsuppresslog": "Amseqdac agi, yetseweḥel dɣa yeweffer uqbel. Ad affeḍ aɣmis n tukksiwin ddaw-agi :", @@ -1891,7 +2162,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", @@ -1902,7 +2173,7 @@ "cantmove-titleprotected": "Ur tzemreḍ ara ad ssiweḍeḍ asebtar ɣer amkan agi acku asnulfu n usebtar s uzwel agi amaynut yetweḥrez", "movetalk": "Smimeḍ asebter n umyannan (n umagrad-nni)", "move-subpages": "Beddel isem n adu-isebtar (alma d $1 {{PLURAL:$1|asebtar|isebtar}})", - "move-talk-subpages": "Beddel adu-isebtar n usebtar n amyannan (alma d $1 isebtar)", + "move-talk-subpages": "Beddel isebtar isnawanen n usebter n usqerdec (arama d $1 isebtar)", "movepage-page-exists": "Asebtar $1 yella yakan dɣa ur nezmer ara at n-mzey s uwurman.", "movepage-page-moved": "Asebtar $1 yetwabeddel isem-is ar $2.", "movepage-page-unmoved": "Asebtar $1 ur nezmer ara an beddel isem-is ar $2.", @@ -1977,7 +2248,7 @@ "thumbnail_gd-library": "Tawila tagermazt n tamkarḍit GD : ulac tasɣent $1", "thumbnail_image-missing": "Afaylu agi ulac-it : $1", "import": "Ssekcem isebtar", - "importinterwiki": "Assekcem n transwiki", + "importinterwiki": "kter seg uwiki-nniḍen", "import-interwiki-text": "Fren yiwen wiki d yiwen azwel n usebtar ad ketreḍ.\nIzemzen n ileqman d isemawen n ittekkiyen ad qqimen.\nAkkw tigawin n taktert ager-wiki ad illint deg [[Special:Log/import|umezruy n tiketrin]].", "import-interwiki-history": "Xdem alsaru n akk tisiwal umezruy n usebter-agi", "import-interwiki-templates": "Sekcem akkw talɣiwin", @@ -2018,22 +2289,23 @@ "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 umseqdac inu", + "tooltip-pt-userpage": "Asebter n {{GENDER:|useqdac-ik|tseqdact-im}}", "tooltip-pt-anonuserpage": "Asebter n wemseqdac n IP wukud tekkiḍ", - "tooltip-pt-mytalk": "Asebter n umyannan inu", - "tooltip-pt-anontalk": "Amyannan ɣef yibeddlen n tansa ip-yagi", - "tooltip-pt-preferences": "Isemyifiyen inu", + "tooltip-pt-mytalk": "Asebter-{{GENDER:|ik|im}} n usqerdec", + "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-ca-talk": "Amyannan ɣef wayen yella deg usebter", - "tooltip-ca-edit": "Tzemreḍ ad tbeddleḍ asebter-agi. Sseqdec pre-timeẓriwt qbel.", - "tooltip-ca-addsection": "Rnu awennit i amyannan-agi.", + "tooltip-pt-createaccount": "Yelha limer ad ternuḍ amiḍan sakin ad teqqneḍ; maca, ur issefk ara", + "tooltip-ca-talk": "Aseqerdec ɣef usebter-agi n ugbur", + "tooltip-ca-edit": "Ẓreg asebter-agi", + "tooltip-ca-addsection": "Senker tigezmi tamaynut", "tooltip-ca-viewsource": "Asebter-agi yettwaḥrez. Tzemreḍ ad twaliḍ aɣbalu-ines.", "tooltip-ca-history": "Tisiwal ssabeq n usebter-agi.", "tooltip-ca-protect": "Ḥrez asebter-agi", @@ -2041,14 +2313,14 @@ "tooltip-ca-delete": "Mḥu asebter-agi", "tooltip-ca-undelete": "Err akk ibeddlen n usebter-agi i yellan uqbel ad yettwamḥu usebter", "tooltip-ca-move": "Smimeḍ asebter-agi", - "tooltip-ca-watch": "Rnu asebter-agi i wumuɣ n uɛessi inek", + "tooltip-ca-watch": "Rnu asebter-agi ar tebdart-ik n uḍfaṛ", "tooltip-ca-unwatch": "Kkes asebter-agi seg wumuɣ n uɛessi inek", "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-n-mainpage": "Ẓer asebter amenzawi", - "tooltip-n-mainpage-description": "Rzu asebter amenzawi", + "tooltip-p-logo": "Rzu ar usebter agejdan", + "tooltip-n-mainpage": "Rzu ar usebter agejdan", + "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.", @@ -2058,8 +2330,8 @@ "tooltip-t-recentchangeslinked": "Ibeddlen imaynuten deg isebtar myezdin seg usebter-agi", "tooltip-feed-rss": "RSS feed n usebter-agi", "tooltip-feed-atom": "Atom feed n usebter-agi", - "tooltip-t-contributions": "Ẓer umuɣ n tikkin n wemseqdac-agi", - "tooltip-t-emailuser": "Azen e-mail i wemseqdac-agi", + "tooltip-t-contributions": "Ẓer tabdart n ittekkiyen n tikkin n {{GENDER:$1|useqdac-agi|taseqdact-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", @@ -2067,7 +2339,7 @@ "tooltip-ca-nstab-main": "Ẓer ayen yellan deg usebter", "tooltip-ca-nstab-user": "Ẓer asebter n wemseqdac", "tooltip-ca-nstab-media": "Ẓer asebter n media", - "tooltip-ca-nstab-special": "Wagi d asebter uslig, ur tezmireḍ ara a t-tbeddleḍ", + "tooltip-ca-nstab-special": "Wagi d asebter uzzig, ur tezmireḍ ara ad t-tbeddleḍ", "tooltip-ca-nstab-project": "Ẓer asebter n usenfar", "tooltip-ca-nstab-image": "Ẓer asebter n tugna", "tooltip-ca-nstab-mediawiki": "Ẓer izen n system", @@ -2086,16 +2358,16 @@ "tooltip-upload": "Beddu taktert", "tooltip-rollback": "« Semmet » yesemmet s-yiwen asenned akk d-acu amseqdac aneggaru yebeddel deg usebter", "tooltip-undo": "« Ssefsu » yesemmet abeddel agi dɣa i ldi asfaylu n ubeddel deg uskar n azaraskan. I ɛemmed an uɣal ar lqem n uqbel dɣa an rnu taɣẓint deg tanaka n ugzul.", - "tooltip-preferences-save": "Ḥrez isemyifiyen", + "tooltip-preferences-save": "Sekles ismenyifen", "tooltip-summary": "Sekcem agzul awezzlan", "interlanguage-link-title": "$1 — $2", "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.", @@ -2106,7 +2378,7 @@ "spam_reverting": "Asuɣal i tasiwel taneggarut i ur tesɛi ara izdayen ɣer $1", "spam_blanking": "Akk tisiwal sɛan izdayen ɣer $1, ad yemḥu", "spam_deleting": "Akkw ileqman yesɛan izdayen ɣer $1, tukksa", - "simpleantispam-label": "Assefqed mgal e-mail yerkan.\nUr-d t-aru '''ACEMMA''' d-agi !", + "simpleantispam-label": "Asenqed mgal aspam.\nUr ttaru kra dagi!", "pageinfo-title": "Tilɣa i « $1 »", "pageinfo-not-current": "Ssurfet-aɣ, ulamek ad n-efk talɣut i ileqman iqdimen.", "pageinfo-header-basic": "Tilɣa n udasil", @@ -2151,6 +2423,7 @@ "pageinfo-category-pages": "Amḍan n isebtar", "pageinfo-category-subcats": "Amḍan n adutaggayin", "pageinfo-category-files": "Amḍan n ifuyla", + "pageinfo-user-id": "Asulay n useqdac", "markaspatrolleddiff": "Rcem \"yettwassenqden\"", "markaspatrolledtext": "Rcem amagrad-agi \"yettwassenqden\"", "markedaspatrolled": "Rcem belli yettwasenqed", @@ -2201,6 +2474,8 @@ "newimages-summary": "Asebtar agi uslig yebeqqeḍ ifuyla ineggura i kteren.", "newimages-legend": "Tastayt", "newimages-label": "Isem n ufaylu (naɣ aḥric ines) :", + "newimages-user": "Tansa IP neɣ isem n useqdac", + "newimages-newbies": "Sken kan ittekkiyen n imiḍanen imaynuten", "noimages": "Tugna ulac-itt.", "ilsubmit": "Nadi", "bydate": "s uzemz", @@ -2571,15 +2846,15 @@ "exif-urgency-other": "Lḥir id yefka amseqdac ($1)", "namespacesall": "akk", "monthsall": "akk", - "confirmemail": "Sentem tansa n e-mail", - "confirmemail_noemail": "Ur tesɛiḍ ara tansa n email ṣaḥiḥ deg [[Special:Preferences|isemyifiyen n wemseqdac]] inek.", + "confirmemail": "Sentem tans-ik imayl", + "confirmemail_noemail": "Ur tesɛiḍ ara tansa n yitameɣtut deg [[Special:Preferences|ismenyifen n useqdac]]-ik.", "confirmemail_text": "{{SITENAME}} yeḥweǧ aseɣbel n tansa e-mail inek/inem uqbel ad sexdemeḍ tanfa n tirawt.\nSeqdec taqeffalt ddaw-agi iwakken ad cegɛeḍ e-mail n uragag ar tansa e-mail inek/inem.\nTirawt at sɛu azday deg-es tangalt. Tzemreḍ at seqdeceḍ tikkelt kan deg talast n ukud ;\nllid azday agi deg iminig iwakken ad sergegeḍ tansa e-mail inek/inem.", "confirmemail_pending": "Yettwazen-ak yagi ungal n usentem; lukan txelqeḍ isem wemseqdac tura kan,\nahat yessefk ad tegguniḍ cwiṭ qbel ad tɛreḍeḍ ad testeqsiḍ ɣef ungal amaynut.", - "confirmemail_send": "Azen-iyi-d angal n usentem s e-mail iwakken ad snetmeɣ.", + "confirmemail_send": "Azen tangalt n usentem", "confirmemail_sent": "E-mail yettwazen iwakken ad tsentmeḍ.", - "confirmemail_oncreate": "Angal n usentem yettwazen ar tansa n e-mail inek.\nYessefk ad tesseqdceḍ angal-agi iwakken ad tkecmeḍ, meɛna yessefk a t-tefkeḍ\niwakken ad xedmen yiḍaɣaren n email deg wiki-yagi.", + "confirmemail_oncreate": "Tangalt n usentem tettwazen ar tansa n yimay inek.\nTangalt-agi ur mačči d ayen ilaqen akken ad tkecmeḍ ar uwiki-agi, acu kan yessefk ad tt-id-muddeḍ akken ad tremdeḍ yal tawuri icudden ar tira n yiznan.", "confirmemail_sendfailed": "{{SITENAME}} ur yezmir ara ad yazen asentem n email.\nSsenqed tansa n email inek.\n\nAhil n uzzun n e-mail yuɣal-d s-izen agi : $1", - "confirmemail_invalid": "Angal n usentem mačči ṣaḥiḥ. Waqila yemmut.", + "confirmemail_invalid": "Tangalt n usentem mačči d tameɣtut.\nAhat yezri wakud-is.", "confirmemail_needlogin": "Yessefk $1 iwakken tesnetmeḍ tansa n email inek.", "confirmemail_success": "Tansa e-mail inek/inem tergeg.\nTura tzemreḍ ad [[Special:UserLogin|qqeneḍ]].", "confirmemail_loggedin": "Asentem n tansa n email inek yekfa tura.", @@ -2594,8 +2869,8 @@ "scarytranscludefailed-httpstatus": "[Abrir n tiririt n talɣa i $1 : HTTP $2]", "scarytranscludetoolong": "[URL agi uffay aṭas]", "deletedwhileediting": "Aɣtal: Asebter-agi yettumḥa qbel ad tebdiḍ a t-tbeddleḍ!", - "confirmrecreate": "Amseqdac [[User:$1|$1]] ([[User talk:$1|Meslay]]) yemḥu asebter-agi beɛd ad tebdiḍ abeddel axaṭer:\n: ''$2''\nG leɛnaya-k sentem belli ṣaḥḥ tebɣiḍ ad tɛiwedeḍ axlaq n usebter-agi.", - "confirmrecreate-noreason": "Amseqdac [[User:$1|$1]] ([[User talk:$1|Meslay]]) yemḥu asebter-agi wannag tebedduḍ att beddeleḍ. Ilaq ad sergegeḍ tebɣiḍ ad snulfuḍ tikkelt nniḍen asebtar agi.", + "confirmrecreate": "Aseqdac [[User:$1|$1]] ([[User talk:$1|Asqerdec]]) yekkes asebter-agi makken tebdiḍ abeddel deg-s, ɣef sebba n :\n: $2\nMa ulac aɣilif, sentem d akken tebɣiḍ ad talseḍ timerna n usebter-agi.", + "confirmrecreate-noreason": "{{GENDER:$1|Aseqdac|Taseqdact}} [[User:$1|$1]] ([[User talk:$1|Asqerdec]]) {{GENDER:$1|yekkes|tekkes}} asebter-agi, makken tebdiḍ tettbeddileḍ-t. Sentem ma ulac aɣilif me tebɣiḍ ad talsseḍ timerna n usebter-agi.", "recreate": "Ɛiwed xleq", "confirm_purge_button": "Seɣbel", "confirm-purge-top": "Mḥu lkac n usebter-agi?", @@ -2644,14 +2919,15 @@ "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)", - "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|amyannan]])", + "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|asqerdec]])", "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", @@ -2686,8 +2962,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 :", @@ -2706,7 +2982,6 @@ "fileduplicatesearch-noresults": "Ulac afaylu s isem « $1 ».", "specialpages": "isebtar usligen", "specialpages-note-top": "Aglam", - "specialpages-note": "* Isebtar usligen imugna.\n* Isebtar usligen ukrifen.", "specialpages-group-maintenance": "Iṛabulen n ibeddi", "specialpages-group-other": "Isebtar usligen nniḍen", "specialpages-group-login": "Asulu / assiggez", @@ -2735,8 +3010,12 @@ "tags-hitcount-header": "Ibeddilen yesɛan ticraḍ", "tags-active-yes": "Ih", "tags-active-no": "Ala", + "tags-source-manual": "Yettwasnes s ufus sɣur iseqdacen akked iṛubuten", "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", @@ -2748,8 +3027,8 @@ "compare-revision-not-exists": "Lqem id efkiḍ ulac-it.", "dberr-problems": "Ssurfet-aɣ ! Asmel agi yemliled ilɣiten itikniten.", "dberr-again": "Ɛreḍ ad arǧuḍ kra n tisdidin dɣa sismeḍ.", - "dberr-info": "(Ulamek an qqen ar uqeddac n taffa n isefka : $1)", - "dberr-info-hidden": "(Ulamek an qqen ar uqeddac n taffa n isefka)", + "dberr-info": "(Ur izmir ara ad yeqqen ar taffa n isefka: $1)", + "dberr-info-hidden": "(Ur izmir ara ad yeqqen ara taffa n isefka)", "dberr-usegoogle": "Tzemreḍ ad ɛreḍeḍ anadi s Google deg ukud agi.", "dberr-outofdate": "Ani i imataren nsen n ugbur nneɣ zemren ad yetwagaren", "dberr-cachederror": "Wagi d anɣel yeffren n usebtar i tebɣiḍ, yezmer ad yetwagar.", @@ -2767,7 +3046,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", @@ -2796,9 +3075,11 @@ "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...", "feedback-bugcheck": "D ayen igerrzen ! Senqed kan ma mačči d yiwen n [$1 inezriyen i n-sen yakan].", @@ -2811,9 +3092,9 @@ "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", + "searchsuggest-search": "Nadi {{SITENAME}}", "searchsuggest-containing": "yesɛan...", "api-error-badtoken": "Tuccḍa tagensit : yir « tiddest ».", "api-error-emptypage": "Asnulfu n isebtar ilemawen ur yareg ara.", @@ -2856,5 +3137,28 @@ "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", + "authmanager-username-help": "Isem n useqdac i usesteb", + "authmanager-realname-help": "Isem ilaw n useqdac", + "authprovider-confirmlink-ok-help": "Kemmel deffir n uskan n yiznan n usdukkel ur yeddin ara.", + "userjsispublic": "Ma ulac aɣilif, wali: isebtar isnawanen, JavaScript ur issefk ara ad gebren isefka ibaḍniyen acku ttwalin-ten iseqdacen-nniḍen." } diff --git a/languages/i18n/khw.json b/languages/i18n/khw.json index 5674812901..1e371dbd70 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": "بولڈ ٹیکسٹ", @@ -492,7 +481,7 @@ "creating": "زیر تخلیق $1", "editingsection": "$1 قطعو تدوین", "editingcomment": "زیرترمیم $1 (تبصرہ)", - "editconflict": "تنازعہ ترمیم:$1", + "editconflict": "تنازع ترمیم:$1", "yourtext": "تہ تحریر", "storedversion": "ذخیرہ شدہ نظرثانی", "yourdiff": "تضادات", @@ -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 9522e032d5..6c0ddb098d 100644 --- a/languages/i18n/km.json +++ b/languages/i18n/km.json @@ -208,7 +208,7 @@ "redirectedfrom": "(ត្រូវបានបញ្ជូនបន្តពី $1)", "redirectpagesub": "ទំព័របញ្ជូនបន្ត", "redirectto": "បញ្ជូនបន្តទៅ៖", - "lastmodifiedat": "ទំព័រនេះត្រូវបានកែចុងក្រោយនៅ$2 $1", + "lastmodifiedat": "ទំព័រនេះត្រូវបានកែចុងក្រោយនៅ$2 $1។", "viewcount": "ទំព័រនេះ​ត្រូវបានចូលមើល​ចំនួន'''{{PLURAL:$1|ម្ដង|$1ដង}}'''", "protectedpage": "ទំព័រដែលត្រូវបានការពារ", "jumpto": "លោតទៅ៖", @@ -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\"មិនទាន់បានចុះឈ្មោះទេ។", @@ -789,6 +789,7 @@ "searchrelated": "ទាក់ទិន", "searchall": "ទាំងអស់", "showingresults": "ខាងក្រោមកំពុងបង្ហាញរហូតដល់ {{PLURAL:$1|'''១''' លទ្ឋផល|'''$1''' លទ្ឋផល}} ចាប់ផ្ដើមពីលេខ #'''$2'''។", + "search-showingresults": "{{PLURAL:$4|លទ្ធផល $1 របស់ $3|លទ្ធផល $1 - $2 របស់ $3}}", "search-nonefound": "មិនមានលទ្ធផលណាមួយ​ត្រូវគ្នានឹងសំណើសុំនេះទេ", "powersearch-legend": "ស្វែងរកថ្នាក់ខ្ពស់", "powersearch-ns": "ស្វែងរកក្នុងលំហឈ្មោះ៖", @@ -1089,7 +1090,7 @@ "rcshowhidemine-hide": "លាក់", "rcshowhidecategorization-show": "បង្ហាញ​", "rcshowhidecategorization-hide": "លាក់", - "rclinks": "បង្ហាញបន្លាស់ប្ដូរ$1ចុងក្រោយធ្វើឡើងក្នុងរយៈពេល$2ថ្ងៃចុងក្រោយ", + "rclinks": "បង្ហាញបន្លាស់ប្ដូរ$1ចុងក្រោយ ដែលធ្វើឡើងក្នុងរយៈពេល$2ថ្ងៃចុងក្រោយ", "diff": "ប្រៀបធៀប", "hist": "ប្រវត្តិ", "hide": "លាក់", @@ -1718,6 +1719,7 @@ "contributions": "ការរួមចំណែក​របស់{{GENDER:$1|អ្នកប្រើប្រាស់}}", "contributions-title": "ការរួមចំណែករបស់អ្នកប្រើប្រាស់ $1", "mycontris": "ការរួមចំណែក", + "anoncontribs": "ការរួមចំណែក", "contribsub2": "សម្រាប់{{GENDER:$3|$1}} ($2)", "contributions-userdoesnotexist": "គណនីអ្នកប្រើប្រាស់ដែលមានឈ្មោះ \"$1\"មិនទាន់បានចុះឈ្មោះទេ។", "nocontribs": "គ្មានការផ្លាស់ប្តូរត្រូវបានឃើញដូចនឹងលក្ខណៈវិនិច្ឆ័យទាំងនេះ។", @@ -1981,11 +1983,11 @@ "import-logentry-upload-detail": "$1 {{PLURAL:$1|កំណែ}}", "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|កំណែ}} ពី $2", "tooltip-pt-userpage": "ទំព័រ​{{GENDER:|អ្នកប្រើប្រាស់​របស់អ្នក}}", - "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-createaccount": "អ្នកត្រូវបានលើកទឹកចិត្តបង្កើតគណនីនិងកត់ឈ្មោះចូល។ ប៉ុន្តែនេះមិនមែនជាការបង្ខំទេ។", @@ -2016,8 +2018,8 @@ "tooltip-t-recentchangeslinked": "បន្លាស់ប្ដូរថ្មីៗ ក្នុងទំព័រដែលត្រូវបានភ្ជាប់មក ទំព័រនេះ", "tooltip-feed-rss": "បម្រែបម្រួល RSS ចំពោះទំព័រនេះ", "tooltip-feed-atom": "បម្រែបម្រួល Atom ចំពោះទំព័រនេះ", - "tooltip-t-contributions": "បង្ហាញបញ្ជីរួមចំណែករបស់អ្នកប្រើប្រាស់នេះ", - "tooltip-t-emailuser": "ផ្ញើអ៊ីមែលទៅកាន់អ្នកប្រើប្រាស់នេះ", + "tooltip-t-contributions": "បញ្ជីនៃការរួមចំណែករបស់{{GENDER:$1|អ្នកប្រើប្រាស់នេះ}}", + "tooltip-t-emailuser": "ផ្ញើអ៊ីមែលទៅកាន់{{GENDER:$1|អ្នកប្រើប្រាស់នេះ}}", "tooltip-t-info": "ព័ត៌មានបន្ថែមអំពីទំព័រនេះ", "tooltip-t-upload": "ឯកសារផ្ទុកឡើង", "tooltip-t-specialpages": "បញ្ជីទំព័រពិសេសៗទាំងមូល", @@ -2509,6 +2511,7 @@ "version-software-version": "កំណែ", "version-entrypoints-header-url": "URL", "redirect-submit": "ទៅ", + "redirect-lookup": "បើកមើល៖", "redirect-value": "តម្លៃ៖", "redirect-user": "អត្តលេខអ្នកប្រើប្រាស់", "redirect-page": "អត្តលេខទំព័រ", @@ -2523,7 +2526,6 @@ "fileduplicatesearch-noresults": "រកមិនឃើញឯកសារដែលមានឈ្មោះ \"$1\" ទេ។", "specialpages": "ទំព័រ​ពិសេស​ៗ", "specialpages-note-top": "កំណត់សម្គាល់", - "specialpages-note": "* ទំព័រពិសេសៗធម្មតា។\n* ទំព័រពិសេសៗដែលមានការដាក់កំហិត។", "specialpages-group-maintenance": "របាយការណ៍នានាអំពីតំហែទាំ", "specialpages-group-other": "ទំព័រពិសេសៗផ្សេងៗទៀត", "specialpages-group-login": "កត់ឈ្មោះចូល / បង្កើតគណនី", @@ -2567,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 74b9d41fe2..1cbe10a4c5 100644 --- a/languages/i18n/ko.json +++ b/languages/i18n/ko.json @@ -67,7 +67,8 @@ "Jerrykim306", "Sukjong0406", "Garam", - "렌즈" + "렌즈", + "CYAN" ] }, "tog-underline": "링크에 밑줄:", @@ -97,13 +98,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": "페이지 분류 숨기기", @@ -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": "여기에 위키 문법을 사용하지 않을 글을 적어 주세요", @@ -723,8 +725,8 @@ "explainconflict": "문서를 편집하는 도중에 누군가 이 문서를 고쳤습니다.\n위쪽의 문서가 지금 바뀐 문서이고, 아래쪽의 문서가 당신이 편집한 문서입니다.\n아래쪽의 내용을 위쪽에 적절히 합쳐 주시기 바랍니다.\n\"$1\"을 누르면 위쪽의 편집 내역만 저장됩니다.", "yourtext": "당신의 편집", "storedversion": "현재 문서", - "nonunicodebrowser": "경고: 브라우저가 유니코드를 지원하지 않습니다.\n문서를 안전하게 편집할 수 있도록 다음의 우회 방안이 제공됩니다: 편집 상자에서 아스키가 아닌 문자가 16진수 코드로 나타납니다.", "editingold": "경고: 이 문서의 오래된 판을 편집하고 있습니다.\n이것을 저장하면, 이 판 이후로 바뀐 모든 편집이 사라집니다.", + "unicode-support-fail": "브라우저가 유니코드를 지원하지 않는 것으로 보입니다. 이는 문서 편집에 필요하기 때문에 편집은 저장되지 않았습니다.", "yourdiff": "차이", "copyrightwarning": "{{SITENAME}}에서의 모든 기여는 $2 라이선스로 배포된다는 점을 유의해 주세요 (자세한 내용에 대해서는 $1 문서를 읽어주세요).\n만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.
    \n또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다.\n저작권이 있는 내용을 허가 없이 저장하지 마세요!", "copyrightwarning2": "{{SITENAME}}에서의 모든 기여는 다른 기여자가 편집, 수정, 삭제할 수 있다는 점을 유의해 주세요.\n만약 여기에 동의하지 않는다면, 문서를 저장하지 말아 주세요.
    \n또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다 (자세한 사항은 $1 문서를 보세요).\n저작권이 있는 내용을 허가 없이 저장하지 마세요!", @@ -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문서가 삭제된 것 같습니다.", @@ -791,6 +793,7 @@ "parser-template-loop-warning": "재귀적인 틀이 발견되었습니다: [[$1]]", "template-loop-category": "틀 루프가 있는 문서", "template-loop-category-desc": "이 문서에 틀 루프가 있습니다. (예: 자기 자신을 반복하여 호출하는 틀)", + "template-loop-warning": "경고: 이 문서는 틀 루프를 일으키는 [[:$1]] 틀을 호출합니다. (무한 재귀 호출)", "parser-template-recursion-depth-warning": "틀 반복 깊이 제한을 초과함 ($1)", "language-converter-depth-warning": "언어 변환기 실행 제한 초과($1)", "node-count-exceeded-category": "노드 횟수를 초과한 문서", @@ -1020,7 +1023,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": "기타", @@ -1060,6 +1063,7 @@ "timezoneregion-indian": "인도양", "timezoneregion-pacific": "태평양", "allowemail": "다른 사용자가 보낸 이메일을 받음", + "email-blacklist-label": "이 사용자들이 내게 이메일을 보내는 것을 금지합니다:", "prefs-searchoptions": "검색", "prefs-namespaces": "이름공간", "default": "기본값", @@ -1336,8 +1340,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개의 변경사항}} 표시", + "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": "필터 설정을 저장하고 나중에 다시 사용하려면 아래의 사용 중인 필터 영역의 북마크 아이콘을 클릭하십시오.", @@ -1349,37 +1365,35 @@ "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-search-placeholder": "필터 최근 바뀜 (찾아보거나 입력을 시작하십시오)", + "rcfilters-show-new-changes": "최신 변경사항 보기", + "rcfilters-search-placeholder": "필터 최근 바뀜 (찾아보거나 입력을 시작하세요)", "rcfilters-invalid-filter": "유효하지 않은 필터", "rcfilters-empty-filter": "활성화된 필터가 없습니다. 모든 기여가 표시됩니다.", "rcfilters-filterlist-title": "필터", - "rcfilters-filterlist-whatsthis": "이게 뭐죠?", - "rcfilters-filterlist-feedbacklink": "새로운 (베타) 필터에 대한 의견을 주세요", + "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-registration": "사용자 등록", - "rcfilters-filter-registered-label": "등록됨", - "rcfilters-filter-registered-description": "로그인된 편집자.", - "rcfilters-filter-unregistered-label": "등록 안 됨", - "rcfilters-filter-unregistered-description": "로그인하지 않은 편집자.", - "rcfilters-filter-unregistered-conflicts-user-experience-level": "이 필터는 등록된 사용자만을 {{PLURAL:$2|찾는}} 다음의 경험 {{PLURAL:$2|필터}}와 충돌합니다: $1", - "rcfilters-filtergroup-authorship": "원작자 기여", + "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-user-experience-level-conflicts-unregistered": "경험 필터는 등록된 사용자만을 검색하기 때문에 이 필터는 \"등록 안 됨\" 필터와 충돌합니다.", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "\"등록 안 됨\" 필터는 하나 이상의 경험 필터와 충돌합니다. 경험 필터는 등록된 사용자만 찾습니다. 충돌되는 필터는 위의 활성화된 필터 목록에 표시됩니다.", + "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": "학습자", @@ -1408,6 +1422,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": "위키 내용, 토론, 분류 설명에 대한 편집....", @@ -1420,18 +1439,28 @@ "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-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": "모든 변경사항을 본 것으로 표시", + "rcfilters-watchlist-edit-watchlist-button": "내 주시문서 목록 편집", + "rcfilters-watchlist-showupdated": "변경이 발생한 이후로 방문한 적이 없는 문서의 변경사항은 굵게 표시됩니다.", + "rcfilters-preference-label": "개선된 버전의 최근 바뀜 숨기기", + "rcfilters-preference-help": "2017년 인터페이스 재설계 부분과 ê·¸ 당시와 ê·¸ 이후에 추가된 모든 도구를 되돌립니다.", "rcnotefrom": "아래는 $3, $4부터 시작하는 {{PLURAL:$5|바뀜이 있습니다}}. (최대 $1개가 표시됨)", "rclistfromreset": "날짜 선택 초기화", "rclistfrom": "$3 $2부터 시작하는 새로 바뀐 문서 보기", @@ -1472,13 +1501,13 @@ "rc-enhanced-expand": "자세한 내용 보기", "rc-enhanced-hide": "자세한 기록 숨기기", "rc-old-title": "처음에 \"$1\"라는 제목으로 만들어졌습니다", - "recentchangeslinked": "가리키는 글의 바뀜", - "recentchangeslinked-feed": "가리키는 글의 바뀜", - "recentchangeslinked-toolbox": "가리키는 글의 바뀜", + "recentchangeslinked": "가리키는 글의 최근 바뀜", + "recentchangeslinked-feed": "가리키는 글의 최근 바뀜", + "recentchangeslinked-toolbox": "가리키는 글의 최근 바뀜", "recentchangeslinked-title": "\"$1\" 문서에 관련된 문서 바뀜", "recentchangeslinked-summary": "지정된 문서를 가리키는 문서(또는 지정된 분류에 들어 있는 문서)에 대한 최근에 바뀐 목록입니다.\n[[Special:Watchlist|주시문서 목록]]에 있는 문서는 굵게 나타납니다.", "recentchangeslinked-page": "문서 이름:", - "recentchangeslinked-to": "해당 문서를 가리키는 문서의 바뀜 보기", + "recentchangeslinked-to": "해당 문서를 가리키는 문서의 최근 바뀜 보기", "recentchanges-page-added-to-category": "[[:$1]]이(가) 분류에 추가되었습니다", "recentchanges-page-added-to-category-bundled": "[[:$1]] 문서가 분류에 추가되었습니다. [[Special:WhatLinksHere/$1|이 문서는 다른 문서들에 포함되어 있습니다]]", "recentchanges-page-removed-from-category": "[[:$1]]이(가) 분류에서 제거되었습니다", @@ -1488,6 +1517,7 @@ "uploadbtn": "파일 올리기", "reuploaddesc": "올리기를 취소하고 올리기 양식으로 돌아가기", "upload-tryagain": "수정된 파일 설명을 저장", + "upload-tryagain-nostash": "다시 업로드된 파일과 수정된 내용 제출", "uploadnologin": "로그인하지 않음", "uploadnologintext": "파일을 올리려면 $1해야 합니다.", "upload_directory_missing": "파일 올리기용 디렉터리($1)가 없고 웹 서버가 만들지 못했습니다.", @@ -1547,6 +1577,7 @@ "file-deleted-duplicate-notitle": "이 파일과 같은 파일이 이전에 삭제된 적이 있으며, 제목은 숨겨져 있습니다.\n다시 올리기 전에 상확은 검토하기 위해 숨겨진 파일 데이터를 ë³¼ 수 있는 누군가에게 물어봐야 합니다.", "uploadwarning": "올리기 경고", "uploadwarning-text": "아래의 파일 설명을 수정하고 다시 시도해 주세요.", + "uploadwarning-text-nostash": "파일을 다시 올리고 아래의 내용을 수정한 다음 다시 시도해 주십시오.", "savefile": "파일 저장", "uploaddisabled": "올리기 비활성화됨", "copyuploaddisabled": "URL로 파일 올리기가 비활성화되어 있습니다.", @@ -1709,7 +1740,7 @@ "listfiles_size": "크기", "listfiles_description": "설명", "listfiles_count": "버전", - "listfiles-show-all": "그림의 과거 판 포함", + "listfiles-show-all": "파일의 과거 판 포함", "listfiles-latestversion": "현재 판", "listfiles-latestversion-yes": "예", "listfiles-latestversion-no": "아니오", @@ -1813,6 +1844,8 @@ "pageswithprop-legend": "문서 속성이 있는 문서", "pageswithprop-text": "이 문서는 특정 문서 속성을 사용한 문서를 나타냅니다.", "pageswithprop-prop": "속성 이름:", + "pageswithprop-reverse": "역순으로 정렬", + "pageswithprop-sortbyvalue": "속성 값으로 정렬", "pageswithprop-submit": "찾기", "pageswithprop-prophidden-long": "숨겨진 긴 텍스트 속성 값 ($1)", "pageswithprop-prophidden-binary": "숨겨진 이진 속성 값 ($1)", @@ -1945,6 +1978,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:", @@ -2008,7 +2042,7 @@ "deletedcontributions": "삭제된 사용자 기여", "deletedcontributions-title": "삭제된 사용자 기여", "sp-deletedcontributions-contribs": "기여", - "linksearch": "바깥 링크 검색", + "linksearch": "외부 링크 검색", "linksearch-pat": "검색 패턴:", "linksearch-ns": "이름공간:", "linksearch-ok": "검색", @@ -2115,7 +2149,7 @@ "unwatchthispage": "주시 해제하기", "notanarticle": "문서가 아님", "notvisiblerev": "이 판은 삭제되었습니다.", - "watchlist-details": "토론 문서의 수는 제외하고, 주시문서 목록에 {{PLURAL:$1|문서 $1개}}가 있습니다.", + "watchlist-details": "{{PLURAL:$1|문서 $1개}}가 주시문서 목록에 있습니다. (토론 문서 포함)", "wlheader-enotif": "이메일 알림 기능이 활성화되었습니다.", "wlheader-showupdated": "마지막으로 방문한 이후에 바뀐 문서는 '''굵은 글씨'''로 보입니다.", "wlnote": "$3 $4 기준으로, 아래에 최근 {{PLURAL:$2|한 시간|$2시간}} 동안 {{PLURAL:$1|마지막 바뀜이|마지막 바뀜 $1개가}} 있습니다.", @@ -2150,6 +2184,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": "문서 삭제", @@ -2178,6 +2213,7 @@ "delete-warning-toobig": "이 문서에는 {{PLURAL:$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회 되돌리기", @@ -2344,6 +2380,7 @@ "sp-contributions-hideminor": "사소한 편집 숨기기", "sp-contributions-submit": "검색", "sp-contributions-explain": "", + "sp-contributions-outofrange": "결과를 표시할 수 없습니다. 요청된 IP 대역은 CIDR /$1 한도보다 더 큽니다.", "whatlinkshere": "여기를 가리키는 문서", "whatlinkshere-title": "\"$1\" 문서를 가리키는 문서 목록", "whatlinkshere-page": "문서:", @@ -2632,11 +2669,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 형식으로 일렬화되도록 판을 보고했습니다.", @@ -3417,7 +3454,7 @@ "fileduplicatesearch-noresults": "\"$1\"이라는 이름을 가진 파일이 없습니다.", "specialpages": "특수 문서 목록", "specialpages-note-top": "범례", - "specialpages-note": "* 일반 특수 문서입니다.\n* 제한된 특수 문서입니다.", + "specialpages-note-restricted": "* 일반 특수문서.\n* 제한된 특수문서.", "specialpages-group-maintenance": "관리용 목록", "specialpages-group-other": "다른 특수 문서", "specialpages-group-login": "로그인 / 계정 만들기", @@ -3439,7 +3476,7 @@ "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 콘텐츠\n 모델을 변경하는] 편집", + "tag-mw-contentmodelchange-description": "페이지의 [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:ChangeContentModel 콘텐츠 모델을 변경하는] 편집", "tags-title": "태그", "tags-intro": "이 문서는 소프트웨어에서 편집에 대해 표시하는 태그와 ê·¸ 의미를 설명하는 목록입니다.", "tags-tag": "태그 이름", @@ -3536,6 +3573,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)", @@ -3785,7 +3829,7 @@ "special-characters-group-sinhala": "싱할라 문자", "special-characters-group-gujarati": "구자라트 문자", "special-characters-group-devanagari": "데바나가리어", - "special-characters-group-thai": "타이어", + "special-characters-group-thai": "태국어", "special-characters-group-lao": "라오어", "special-characters-group-khmer": "크메르어", "special-characters-group-canadianaboriginal": "캐나다 원주민 언어", diff --git a/languages/i18n/krc.json b/languages/i18n/krc.json index 6a2191c31a..28867f5210 100644 --- a/languages/i18n/krc.json +++ b/languages/i18n/krc.json @@ -15,7 +15,7 @@ }, "tog-underline": "Джибериулени черт:", "tog-hideminor": "Джангы тюрлениулени тизмесинде гитче тюрлениулени кёргюзме", - "tog-hidepatrolled": "Джангы тюрлениулени тизмесинде тинтилген тюрлениулени кёргюзме", + "tog-hidepatrolled": "Джангы тюрлениулени тизмесинден тинтилген тюрлениулени джашыр", "tog-newpageshidepatrolled": "Джангы бетлени тизмесинде тинтилген бетлени кёргюзме", "tog-extendwatchlist": "Кёзде тургъан тизмени, къуру ахыр тюл, бютеу тюрлениулени кёрюр ючюн кенгерт", "tog-usenewrc": "Ахыр тюрлениуледе эм кёздеги тизмеде бетлени тюрлениулерин къауумлашдыр", @@ -150,13 +150,7 @@ "anontalk": "Бу IP-адресге сюзюу бет", "navigation": "Навигация", "and": " эм", - "qbfind": "Излеу", - "qbbrowse": "Къарау", - "qbedit": "Тюрлендир", - "qbpageoptions": "Бу бет", - "qbmyoptions": "Бетлерим", "faq": "FAQ", - "faqpage": "Project:FAQ", "actions": "Этиуле", "namespaces": "Атланы аламы", "variants": "Вариантла", @@ -181,29 +175,21 @@ "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": "Проектни бетине къара", + "tool-link-userrights": "{{GENDER:$1|Къошулуучуну}} группаларын тюрлендир", + "tool-link-emailuser": "Бу {{GENDER:$1|къошулуучугъа}} email джибер", "imagepage": "Файлны бетине къара", "mediawikipage": "Билдириуню бетине къара", "templatepage": "Шаблонну бетине къара", @@ -295,6 +281,7 @@ "nstab-template": "Шаблон", "nstab-help": "Болушлукъ бет", "nstab-category": "Категория", + "mainpage-nstab": "Баш бет", "nosuchaction": "Быллай амал джокъду", "nosuchactiontext": "URL-да белгиленнген амал терсди.\nСиз URL-ну терс джазгъан болурсуз, неда терс джибериу бла кёчгенсиз.\nБу {{SITENAME}} проектде да хатаны кёргюзюрге боллукъду.", "nosuchspecialpage": "Быллай къуллукъ бет джокъду", @@ -1007,8 +994,8 @@ "rightslogtext": "Бу къошулуучуну хакъларыны тюрлениуюню журналыды", "action-read": "бу бетни окъуу", "action-edit": "бу бетни тюрлендириу", - "action-createpage": "бетни къурау", - "action-createtalk": "сюзюу бетни къурау", + "action-createpage": "бу бетни къура", + "action-createtalk": "бу сюзюу бетни къурау", "action-createaccount": "бу тергеу джазыуну (аккаунтну) къурау", "action-minoredit": "бу тюрлениуню гитче кибик белгилеу", "action-move": "бу бетни атын тюрлендириу", @@ -1022,17 +1009,17 @@ "action-upload_by_url": "URL адресден бу файлны джюклеу", "action-writeapi": "API хайырландырыу тюрлендириулеге", "action-delete": "бу бетни кетериу", - "action-deleterevision": "бетни бу версиясын кетериу", - "action-deletedhistory": "бу бетни кетерилген тарихине къарау", + "action-deleterevision": "бетни версияларын кетериу", + "action-deletedhistory": "бетни кетерилген тарихине къарау", "action-browsearchive": "кетерилген бетлени излеу", - "action-undelete": "бу бетни ызына салыу", - "action-suppressrevision": "бу джашырылгъан версиясына бетни къарау эм ызына салыу", + "action-undelete": "бетни ызына салыу", + "action-suppressrevision": "бетни джашырылгъан версияларына къарау эм ызына салыу", "action-suppressionlog": "бу энчи журналгъа къарау", "action-block": "Къошулуучуну блок этиу, тюрлендириуле этерге къоймау", "action-protect": "бу бетни джакълау дараджасын тюрлендириу", "action-rollback": "бетни ахыр тюрлендирген къошулуучуну тюрлендириулерин дженгил ызына алыу", - "action-import": "бу бетни башха викиден импорт этиу", - "action-importupload": "бу бетни джюкленнген файлдан импорт этиу", + "action-import": "бетлени башха викиден импорт этиу", + "action-importupload": "бетлени джюкленнген файлдан импорт этиу", "action-patrol": "башхаланы тюрлендириулерин патруль этилиннгенлеча белгилеу", "action-autopatrol": "кесими тюрлендириулерими патруль этилиннгенлеча белгилеу", "action-unwatchedpages": "киши кёзюнде тутмагъан бетлени тизмесине къарау", @@ -1043,7 +1030,7 @@ "action-sendemail": "E-mail джибериу", "action-editmywatchlist": "кёзде тургъан тизменги тюрлендириу", "action-viewmywatchlist": "кёзде тургъан тизменги кёрюу", - "nchanges": "$1 {{PLURAL:$1|тюрлениу|тюрлениу}}", + "nchanges": "$1 {{PLURAL:$1|тюрлениу}}", "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|ахыр кере киргенден бери}}", "enhancedrc-history": "тарих", "recentchanges": "Ахыр тюрлениуле", @@ -1058,7 +1045,12 @@ "recentchanges-legend-heading": "Легенда: ", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (къарагъыз: [[Special:NewPages|джангы бетлени тизмеси]])", "recentchanges-legend-plusminus": "(''±123'')", - "rcnotefrom": "Тюбюрекде $2 башлаб ($1 дери) тюрлендириуле кёрюнедиле", + "rcfilters-other-review-tools": "Башха тинтиу адырла", + "rcfilters-activefilters": "Актив фильтрле", + "rcfilters-limit-shownum": "Ахыр {{PLURAL:$1|тюрлениуню}} кёргюзт", + "rcfilters-quickfilters-placeholder-title": "Сакъланнган джибериуле алкъын джокъдула", + "rcfilters-savedqueries-defaultlabel": "Сакъланнган фильтрле", + "rcnotefrom": "Тюбюрекде $3, $4 башлаб ($1 дери) {{PLURAL:$5|тюрлендириу}} кёрюнедиле", "rclistfrom": "$3 $2 башлаб джангы тюрлениулени кёргюз", "rcshowhideminor": "гитче тюрлениулени $1", "rcshowhideminor-show": "кёргюз", @@ -1087,8 +1079,8 @@ "newpageletter": "Дж", "boteditletter": "б", "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|кёзюнде тутуучу къошулуучу}}]", - "rc_categories": "Категориялагъа юлеш («|» бла айыр)", - "rc_categories_any": "Къайсы да", + "rc_categories": "Къуру бу категорияладан («|» бла айыр):", + "rc_categories_any": "Сайланнгандан къайсысы да", "rc-change-size": "$1", "rc-change-size-new": "Тюрлениуден сора ёлчеми: $1 {{PLURAL:$1|байт}}", "newsectionsummary": "/* $1 */ Джангы бёлюм", @@ -1107,15 +1099,15 @@ "reuploaddesc": "Джюклеу формасына ызына къайт", "upload-tryagain": "Тюрлетилген файл ангылатыуну джибер", "uploadnologin": "Сиситемагъа кирмегенсиз", - "uploadnologintext": "Файлла джюклер ючюн [[Special:UserLogin|системагъа кирирге]] керексиз.", + "uploadnologintext": "Файлла джюклер ючюн $1 керекди.", "upload_directory_missing": "Джюклеу директория ($1) табылмайды эмда веб-сервер бла къуралалмайды.", "upload_directory_read_only": "Веб-сервер файл джюкленнегн ($1) папкагъа джазыу эркинлиги джокъду.", "uploaderror": "Джюклеуню хатасы", "upload-recreate-warning": "'''Эс бёлюгюз. Быллай аты бла файл кетерилген этгенди неда аты тюрленилиннгенди.'''\n\nБу бетге кетериуле бла ат тюрлендириулени журналы тюбюрекде бериледи:", "uploadtext": "Файл джюклер ючюн тюбюндеги форманы хайырлан.\nАлландан джюкленнген файлланы кёрюр неда излер ючюн [[Special:FileList|джюкленнген файлланы тизмесине]] къарагъыз, (джангыдан) джюкленнгенле [[Special:Log/upload|джюклеу журналында]], кетерилгенле [[Special:Log/delete|кетериу журналында]] тутуладыла.\n\nБетге файл салыр ючюн байлмыгъызда тюбюндеги формаларыны бирин хайырланыгъыз;\n* Файлны бютеу ёлчемини салыр ючюн: '''[[{{ns:file}}:File.jpg]]'''\n* Сол къыйрда бир тёртгюл ичинде, тюбюндеда ангылатыуу бла, 200 пиксел ёлчеми бла хайырландырыргъа излей эсегиз: '''[[{{ns:file}}:File.png|200px|thumb|left|тюбюнде ангылатыу]]'''\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Дагъыда [[Special:NewFiles|dosyalджангы файлланы галереясына]] къара, анда джангы джюклеулени юсюнден билгиле толу кёрюгюзюлгендиле.", "filename": "Файлны аты", @@ -1133,8 +1125,8 @@ "filetype-mime-mismatch": "«.$1» файл MIME-типге ($2) келишмейди.", "filetype-badmime": "«$1» MIME типли файлланы джюклениуюне эркинлик берлимейди.", "filetype-bad-ie-mime": "Internet Explorer, буну эркинлик берилмеген эмда потенциал заран берлик «$1» файл тип кибик таныгъаны ючюн бу файл джюклениллик тюлдю.", - "filetype-unwanted-type": "'''\".$1\"''' изленмеген файл типиди.\nИзленнген {{PLURAL:$3|1=файл тип|файл типле}} $2.", - "filetype-banned-type": "'''«.$1»''' — {{PLURAL:$4|1=джасакъланнган файл типди|джасакъланнган файл типледиле}}.\nЭркинлик берилген {{PLURAL:$3|1=файл тип|файл типле}}: $2.", + "filetype-unwanted-type": "'''«.$1»''' — изленмеген файл типди.\nИзленнген {{PLURAL:$3|1=файл тип|файл типле}} — $2.", + "filetype-banned-type": "'''«.$1»''' — {{PLURAL:$4|1=джасакъланнган файл типди|джасакъланнган файл типледиле}}.\nЭркинлик берилген {{PLURAL:$3|1=файл тип|файл типле}} — $2.", "filetype-missing": "Файлны кенглешиуу джокъду (сёз ючюн, «.jpg» кибик)", "empty-file": "Сиз ийген файл бошду.", "file-too-large": "Сиз ийген файл асыры уллуду.", @@ -1431,6 +1423,10 @@ "alllogstext": "{{SITENAME}} ючюн бютеу бар болгъан журналланы бирлешген тизмеси.\nЖурнал типини, къошулуучу атны (уллу-гитче харифге кёре) неда тийилген бетни (ол да уллу-гитче харифге кёре) элерге боллукъсуз.", "logempty": "Журналлагъа келишген билги джокъду.", "log-title-wildcard": "Бу символладан башланнган башлыкъланы изле", + "checkbox-select": "Сайлау: $1", + "checkbox-all": "Барын да", + "checkbox-none": "Бирин да", + "checkbox-invert": "Инвертле", "allpages": "Бютеу бетле", "nextpage": "Эндиги бет ($1)", "prevpage": "Алдагъы бет ($1)", @@ -1979,7 +1975,7 @@ "tooltip-search": "Бу сёзню изле", "tooltip-search-go": "Тамам быллай аты болгъан бетге кёч", "tooltip-search-fulltext": "Бу текст болгъан бетлени таб", - "tooltip-p-logo": "Баш бет", + "tooltip-p-logo": "Баш бетге кёчюу", "tooltip-n-mainpage": "Баш бетге кёчюу", "tooltip-n-mainpage-description": "Баш бетге кёчюу", "tooltip-n-portal": "Проектни юсюнден, сизни не этерге боллугъугъузню юсюнден, хар не къайда болгъаныны юсюнден", @@ -2498,8 +2494,9 @@ "confirmrecreate-noreason": "Сиз тюрлендириуле этген заманда [[User:$1|$1]] ([[User talk:$1|сюзюу]]) къошулуучу бу бетни кетергенди. Бетни кертиси бла ызына салыргъа излегенигизни бегитигиз.", "recreate": "Джанландыр", "unit-pixel": "пикс.", + "confirm-purge-title": "Бу бетни кэшы ариула", "confirm_purge_button": "OK", - "confirm-purge-top": "Бу бетни кеши кетерилсинми?", + "confirm-purge-top": "Бу бетни кэшы ариулансынмы?", "confirm-purge-bottom": "Бетни кеши кетерилгенден сора, андан сора келген версиясы кёргюзюллюкдю.", "confirm-watch-button": "ОК", "confirm-unwatch-button": "ОК", @@ -2644,7 +2641,6 @@ "fileduplicatesearch-result-n": "«$1» файлны {{PLURAL:$2|1 келишген дубликаты|$2 келишген дубликаты}} барды.", "fileduplicatesearch-noresults": "«$1» деген файл табылмады.", "specialpages": "Къуллукъ бетле", - "specialpages-note": "* Тюз къуллукъ бетле.\n* Кирирге эркинлик чекленнген къуллукъ бетле.", "specialpages-group-maintenance": "Техника баджарыуну отчетлары", "specialpages-group-other": "Башха къуллукъ бетле", "specialpages-group-login": "Системагъа кириу / Аккаунт къурау", @@ -2682,6 +2678,7 @@ "compare-rev2": "Экинчи версия", "compare-submit": "Тенглешдир", "compare-title-not-exists": "Белгиленнген башлыкъ джокъду.", + "diff-form": "'''форма'''", "dberr-problems": "Кечериксиз! Бу сайтда техника джаны бла проблемала чыкъгъандыла.", "dberr-again": "Талай минутну сакълаб, джангыдан кириб кёрюгюз.", "dberr-info": "(билги базаны сервери бла байлам къурулалмайды: $1)", diff --git a/languages/i18n/ku-latn.json b/languages/i18n/ku-latn.json index dab6deda62..b596b8dcf8 100644 --- a/languages/i18n/ku-latn.json +++ b/languages/i18n/ku-latn.json @@ -19,7 +19,8 @@ "MikaelF", "Macofe", "Matma Rex", - "Stryn" + "Stryn", + "Cûndûllah el-Kurdî" ] }, "tog-underline": "Xetekê di bin girêdanê de çêke:", @@ -64,6 +65,8 @@ "underline-never": "Qet", "underline-default": "Tercîhên lêgerokê", "editfont-default": "Tercîhên lêgerokê", + "editfont-sansserif": "Fonta Sans-serif'ê", + "editfont-serif": "Fonta Serif'ê", "sunday": "yekşem", "monday": "duşem", "tuesday": "sêşem", @@ -106,10 +109,10 @@ "feb": "reş", "mar": "adr", "apr": "avr", - "may": "gulan", + "may": "gln", "jun": "pûş", "jul": "tîr", - "aug": "teb", + "aug": "Glw", "sep": "rez", "oct": "kew", "nov": "ser", @@ -126,6 +129,8 @@ "october-date": "Kewçêr $1", "november-date": "Sermawez $1", "december-date": "Berfanbar $1", + "period-am": "Berî Nîvro", + "period-pm": "PN", "pagecategories": "{{PLURAL:$1|Kategorî|Kategorî}}", "category_header": "Gotarên di kategoriya \"$1\" de", "subcategories": "Binkategorî", @@ -169,6 +174,7 @@ "searcharticle": "Here", "history": "Dîroka rûpelê", "history_short": "Dîrok", + "history_small": "dîrok", "updatedmarker": "ji serdana min a dawî ve hate rojanekirin", "printableversion": "Guhertoya çapkirinê", "permalink": "Girêdana daîmî", @@ -218,7 +224,7 @@ "currentevents": "Bûyerên rojane", "currentevents-url": "Project:Bûyerên rojane", "disclaimers": "Ferexetname", - "disclaimerpage": "Project:Ferexetname", + "disclaimerpage": "Project:Ferexetnameya giştî", "edithelp": "Alîkariya guherandinê", "helppage-top-gethelp": "Alîkarî", "mainpage": "Destpêk", @@ -227,7 +233,7 @@ "portal": "Portala komê", "portal-url": "Project:Portala komê", "privacy": "Siyaseta veşarîtiyê", - "privacypage": "Project:Parastina daneyan", + "privacypage": "Project:Siyaseta veşarîtiyê", "badaccess": "Çewtiya destûrê", "badaccess-group0": "Tu nikarî vî tiştî bikî.", "badaccess-groups": "Ev tişta tu dixwazî bikî tenê ji bikarhênerên {{PLURAL:$2|van koman|vê komê}} re {{PLURAL:$2|ne|ye}}: $1.", @@ -270,7 +276,7 @@ "nstab-media": "Medya", "nstab-special": "Rûpela taybet", "nstab-project": "Rûpela projeyê", - "nstab-image": "Wêne", + "nstab-image": "Dosye", "nstab-mediawiki": "Peyam", "nstab-template": "Şablon", "nstab-help": "Alîkarî", @@ -544,7 +550,7 @@ "templatesused": "{{PLURAL:$1|Şablona|Şablonên}} ku li ser vê rûpelê {{PLURAL:$1|tê|tên}} bikaranîn:", "templatesusedpreview": "{{PLURAL:$1|Şablona|Şablonên}} di vê pêşdîtinê de {{PLURAL:$1|tê|tên}} bikaranîn:", "templatesusedsection": "{{PLURAL:$1|Şablona ku di vê beşê de tê bikaranîn|Şablonên ku di vê beşê de tên bikaranîn}}:", - "template-protected": "(tê parastin)", + "template-protected": "()", "template-semiprotected": "(nîv-parastî)", "hiddencategories": "Ev rûpel endamê {{PLURAL:$1|1 kategoriya veşartî|$1 kategoriyên veşartî}} ye:", "nocreate-loggedin": "Destûra te tune ye ku tu rûpelên nu biafirînî.", @@ -661,7 +667,7 @@ "searchprofile-everything": "Her tişt", "searchprofile-advanced": "Pêşketî", "searchprofile-articles-tooltip": "Di $1 da lêbigere", - "searchprofile-images-tooltip": "Li pelan bigere", + "searchprofile-images-tooltip": "Li nav dosyeyan bigere", "searchprofile-everything-tooltip": "Di hemû naverokada bigere (tevî gotûbêja)", "search-result-size": "$1 ({{PLURAL:$2|peyvek|$2 peyv}})", "search-redirect": "(beralîkirina ji $1)", @@ -849,7 +855,7 @@ "recentchanges-legend": "Vebijarkên guherandinên dawî", "recentchanges-summary": "Guhertinên herî dawî yên wîkiyê li ser vê rûpelê bişopîne.", "recentchanges-label-newpage": "Rûpeleke nû hate çêkirin", - "recentchanges-label-minor": "Ev guherîneke biçûk e", + "recentchanges-label-minor": "Ev guhertineke Biçûk e", "recentchanges-label-bot": "Ev guherîn ji aliyê botekê ve hate çêkirin", "recentchanges-label-unpatrolled": "Ev gotar hêjî nehatiye sererastkirin", "recentchanges-label-plusminus": "Qebareya vê rûpelê bi ev qas biteyan hate guherandin", @@ -934,7 +940,7 @@ "filetype-banned": "Dosyeyên bi vê cureye hatîye qedexekirin.", "verification-error": "Ev dosye, rastandina dosyeye derbas nekir.", "unknown-error": "Çewtiyeke nenas pêk hat.", - "large-file": "Mezinbûna pelê bila ji $1 ne mezintir be; ev pel $2 e.", + "large-file": "Mezinbûna dosyeyê divê ji $1 ne mezintir be; ev dosye $2 e.", "emptyfile": "Data'ya barkirî vala ye. Sedemê valabûnê belkî şaşnivîsek di navê data'yê da ye. Xêra xwe seke, ku tu rast dixazê vê data'yê barbikê.", "fileexists": "Datayek bi vê navê berê heye.\nEger tu niha li „Tomarbike“ xê, ew wêneyê kevin ê here û wêneyê te ê were barkirin di bin wê navê.\nDi bin [[:$1]] du dikarî sekê, ku di dixwazê wê wêneyê biguherînê.\nEger tu naxazê, xêra xwe li „Betal“ xe.\n[[$1|thumb]]", "fileexists-extension": "Datayek wek vê navê berê heye: [[$2|thumb]]\n* Navî datayê yê tê barkirin: [[:$1]]\n* Navî datayê yê berê heyê: [[:$2]]\nXêra xwe navekî din bibîne.", @@ -1014,12 +1020,12 @@ "filehist-user": "Bikarhêner", "filehist-dimensions": "Mezinahî", "filehist-filesize": "Mezinahiya pelê", - "filehist-comment": "Şîrove", + "filehist-comment": "Şirove", "imagelinks": "Bikaranîna pelê", "linkstoimage": "Di van rûpelan de {{PLURAL:$1|page links|$1 lînkek}} ji vî dosyeye re heye:", "nolinkstoimage": "Rûpelekî ku ji vî wêneyî re girêdankê çêdike nîne.", "linkstoimage-redirect": "$1 (beralîkirina pelê) $2", - "sharedupload-desc-here": "Ev pel ji $1 û dibe ku ji aliyê projeyên din ve jî hatibe bikaranîn.\nAgahdariya li ser [$2 rûpela danasîna pelê] li jêr tê nîşandan.", + "sharedupload-desc-here": "Ev dosye ji $1 û dibe ku ji aliyê projeyên din ve jî hatibe bikaranîn.\nAgahdariya li ser [$2 rûpela danasîna dosyeyê] li jêr tê nîşandan.", "filepage-nofile-link": "Dosyeyek bi vî navî tune ye, lê tu dikarî wê [$1 bar bikî].", "uploadnewversion-linktext": "Versiyoneke nû ya vê daneyê barbike", "shared-repo-from": "ji $1", @@ -1209,7 +1215,7 @@ "unwatch": "Êdî neşopîne", "unwatchthispage": "Êdî neşopîne", "notanarticle": "Ne gotar e", - "watchlist-details": "{{PLURAL:$1|Rûpeleka|$1 rûpel}} li ser lîsteya te ya şopandinê, rûpelên gotûbêjê nayên jimartin.", + "watchlist-details": "{{PLURAL:$1|Rûpelekî|$1 rûpel}} li ser lîsteya te ya şopandinê ye (xeynî rûpelên gotûbêjê).", "wlheader-enotif": "Agahdariya e-nameyan hate çalakkirin", "wlheader-showupdated": "Ev rûpela hatî guhertin dema te lê meyzand bi '''nivîsa stûr''' tê xuyakirin.", "wlnote": "Niha {{PLURAL:$1|xeyrandinê|'''$1''' xeyrandinên}} dawî yê {{PLURAL:$2|seetê|'''$2''' seetên}} dawî {{PLURAL:$1|tê|tên}} dîtin.", @@ -1772,10 +1778,12 @@ "version-libraries-license": "Destûr", "version-libraries-description": "Danasîn", "version-libraries-authors": "Xwedî", + "redirect-submit": "Here", + "redirect-user": "ID'ya Bikarhêner", + "redirect-page": "ID'ya Rûpelê", "fileduplicatesearch-filename": "Navê dosyeyê:", "fileduplicatesearch-submit": "Lê bigere", "specialpages": "Rûpelên taybet", - "specialpages-note": "* Rûpelên taybetî ji her kesan ra\n* Rûpelên taybetî ji bikarhêneran bi mafên zêdetir ra", "specialpages-group-other": "Rûpelên taybetî yên din", "specialpages-group-login": "Têkeve / hesabekî nû çêke", "specialpages-group-changes": "Guherandinên dawî û têketin", diff --git a/languages/i18n/lb.json b/languages/i18n/lb.json index 0c550ee02f..f3609b4c51 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", @@ -666,7 +666,6 @@ "explainconflict": "En anere Benotzer huet un dëser Säit geschafft, während Dir am Gaang waart, se z'änneren.\nDat iewescht Textfeld weist Iech den aktuellen Text.\nÄr Ännerunge gesitt Dir am ënneschten Textfeld.\nDir musst Är Ännerungen an dat iewescht Textfeld androen.\n'''Nëmmen''' den Text aus dem ieweschten Textfeld gëtt gehale wann Dir op \"$1\" klickt.", "yourtext": "Ären Text", "storedversion": "Gespäichert Versioun", - "nonunicodebrowser": "'''OPGEPASST: Äre Browser ass net Unicode kompatibel.'''\nE 'workaround' gëtt agesat deen et erlaabt Säite sécher z'änneren: Net-ASCII Zeeche ginn an der Ännerungskëscht als hexadezimal-Code gewisen.", "editingold": "'''OPGEPASST: Dir ännert eng al Versioun vun dëser Säit. Wann Dir späichert, sinn all rezent Versioune vun dëser Säit verluer.'''", "yourdiff": "Ënnerscheeder", "copyrightwarning": "W.e.g. notéiert datt all Kontributiounen op {{SITENAME}} automatesch ënner der $2 (kuckt $1 fir méi Informatiounen) verëffentlecht sinn.\nWann Dir net wëllt datt är Texter vun anere Mataarbechter verännert, geläscht a weiderverdeelt kënne ginn, da setzt näischt heihinner.
    \nDir verspriecht ausserdeem datt Dir dësen Text selwer verfaasst hutt, oder aus dem Domaine public oder ähnleche Ressource kopéiert hutt.\n'''DROT KEE COPYRECHTLECH GESCHÜTZTE CONTENU OUNI ERLAABNES AN!'''", @@ -694,8 +693,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 +730,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 +931,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 +951,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", @@ -1031,6 +1032,7 @@ "prefs-editor": "Editeur", "prefs-preview": "Kucken ouni ofzespäicheren", "prefs-advancedrc": "Méi Optiounen", + "prefs-opt-out": "Verbesserungen net méi benotzen", "prefs-advancedrendering": "Méi Optiounen", "prefs-advancedsearchoptions": "Méi Optiounen", "prefs-advancedwatchlist": "Méi Optiounen", @@ -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,9 +1253,20 @@ "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-other-review-tools": "Aner Méiglechkeete fir z'iwwerliesen", + "rcfilters-group-results-by-page": "Resultater no de Säite gruppéieren", + "rcfilters-grouping-title": "Gruppéieren", "rcfilters-activefilters": "Aktiv Filteren", "rcfilters-advancedfilters": "Erweidert Filteren", + "rcfilters-limit-title": "Ännerunge fir ze 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.", @@ -1262,28 +1276,31 @@ "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-search-placeholder": "Rezent Ännerunge filteren (duerchsichen oder ufänke mat tippen)", + "rcfilters-show-new-changes": "Rezentst Ännerunge weisen", + "rcfilters-search-placeholder": "Rezent Ännerunge filteren (navigéieren oder ufänke mat tippen)", "rcfilters-invalid-filter": "Net valabele Filter", "rcfilters-empty-filter": "Keen aktive Filter. All Kontributioune gi gewisen.", "rcfilters-filterlist-title": "Filteren", - "rcfilters-filterlist-whatsthis": "Wat ass dat?", + "rcfilters-filterlist-whatsthis": "Wéi geet dat?", + "rcfilters-filterlist-feedbacklink": "Sot eis wat Dir vun dësen (neien) Filterméiglechkeeten haalt", "rcfilters-highlightbutton-title": "Resultater ervirhiewen", "rcfilters-highlightmenu-title": "Eng Faarf eraussichen", "rcfilters-filterlist-noresults": "Keng Filtere fonnt", "rcfilters-noresults-conflict": "Näischt fonnt well d'Sichcritère sech widderspriechen", - "rcfilters-filter-registered-label": "Ugemellt", - "rcfilters-filter-unregistered-label": "Net-ugemellt", - "rcfilters-filter-unregistered-description": "Auteuren déi net ageloggt sinn.", "rcfilters-filter-editsbyself-label": "Ännerunge vun Iech", "rcfilters-filter-editsbyself-description": "Är eegen Ännerungen.", "rcfilters-filter-editsbyother-label": "Ännerunge vun Aneren", "rcfilters-filter-editsbyother-description": "All Ännerunge ausser Ären eegenen.", - "rcfilters-filtergroup-userExpLevel": "Niveau vun der Erfahrung (just fir registréiert Benotzer)", + "rcfilters-filtergroup-userExpLevel": "Umeldung an Erfarung vu Benotzer", + "rcfilters-filter-user-experience-level-registered-label": "Ugemellt", + "rcfilters-filter-user-experience-level-unregistered-label": "Net-ugemellt", + "rcfilters-filter-user-experience-level-unregistered-description": "Auteuren déi net ageloggt sinn.", "rcfilters-filter-user-experience-level-newcomer-label": "Neier", "rcfilters-filter-user-experience-level-newcomer-description": "Manner wéi 10 Ännerungen a manner wéi 4 Deeg Aktivitéit.", "rcfilters-filter-user-experience-level-learner-label": "Ufänger", @@ -1293,20 +1310,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", @@ -1315,16 +1342,26 @@ "rcfilters-filter-logactions-label": "Protokolléiert Aktiounen", "rcfilters-filter-logactions-description": "Administrativ Aktiounen, Uleeë vu Benotzerkonten, Läsche vu Säiten, Eropgeluede Fichieren, ...", "rcfilters-hideminor-conflicts-typeofchange": "Verschidden Type vu Ännerunge kënnen net als \"kleng\" markéiert ginn, dofir ass dëse Filter a Konflikt mat dësem Typ vun Ännerungsfilteren: $1", - "rcfilters-filtergroup-lastRevision": "Lescht Versioun", + "rcfilters-filtergroup-lastRevision": "Lescht Versiounen", "rcfilters-filter-lastrevision-label": "Lescht Versioun", - "rcfilters-filter-lastrevision-description": "Déi lescht Ännerung op enger Säit", - "rcfilters-filter-previousrevision-label": "Méi fréi Versiounen", - "rcfilters-filter-previousrevision-description": "All Ännerungen, déi net déi rezenst Ännerung vun enger Säit sinn.", + "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 'rezentst Versioun' vun enger Säit sinn.", "rcfilters-filter-excluded": "Ausgeschloss", "rcfilters-tag-prefix-namespace-inverted": ":net $1", + "rcfilters-exclude-button-off": "Déi Ausgewielt ausschléissen", + "rcfilters-exclude-button-on": "Déi Ausgewielt ausschléissen", + "rcfilters-view-advanced-filters-label": "Erweidert Filteren", "rcfilters-view-tags": "Markéiert Ännerungen", "rcfilters-view-namespaces-tooltip": "Resultater no Nummraum filteren", + "rcfilters-view-return-to-default-tooltip": "Zréck op den Haaptmenü vum Filteren", "rcfilters-liveupdates-button": "Live-Aktualiséierungen", + "rcfilters-liveupdates-button-title-on": "Live-Aktualiséierungen ausschalten", + "rcfilters-liveupdates-button-title-off": "Nei Ännerunge weisen esoubal wéi se gemaach ginn", + "rcfilters-watchlist-markseen-button": "All Ännerungen als gesi markéieren", + "rcfilters-watchlist-edit-watchlist-button": "Ännert Är Lëscht vun iwwerwaachte säiten", + "rcfilters-watchlist-showupdated": "Ännerungen op Säiten déi Dir net besicht hutt zanter d'Ännerunge gemaach goufen si fett geschriwwen.", + "rcfilters-preference-label": "Déi verbessert Versioun vun de rezenten Ännerunge verstoppen", "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", @@ -1440,6 +1477,7 @@ "file-deleted-duplicate-notitle": "En identesche Fichier gouf scho geläscht an den Titel gouf suppriméiert. Dir sollt e froen dee suppriméiert Date vu Fichiere kucken däerf fir d'Situatioun ze klären ier Dir de Fichier nach eng Kéier eroplued.", "uploadwarning": "Opgepasst", "uploadwarning-text": "Ännert d'Beschreiwung hei ënnedrënner w.e.g. a versicht et nach eng Kéier.", + "uploadwarning-text-nostash": "Lued de Fichier w.e.g. nach emol erop, ännert d'Beschreiwung hei drënner a probéiert nach eng Kéier", "savefile": "Fichier späicheren", "uploaddisabled": "Pardon, d'Eropluede vu Fichieren ass ausgeschalt.", "copyuploaddisabled": "D'Eroplueden iwwer URL ass desaktivéiert.", @@ -1581,7 +1619,7 @@ "listfiles_size": "Gréisst", "listfiles_description": "Beschreiwung", "listfiles_count": "Versiounen", - "listfiles-show-all": "Al Versioune vu Biller aschléissen", + "listfiles-show-all": "Al Versioune vu Fichieren aschléissen", "listfiles-latestversion": "Aktuell Versioun", "listfiles-latestversion-yes": "Jo", "listfiles-latestversion-no": "Neen", @@ -1964,7 +2002,7 @@ "unwatchthispage": "Net méi iwwerwaachen", "notanarticle": "Keng Säit", "notvisiblerev": "Versioun gouf geläscht", - "watchlist-details": "{{PLURAL:$1|1 Säit|$1 Säite}} sinn op Ärer Iwwerwaachungslëscht, d'Diskussiounssäiten net matgezielt.", + "watchlist-details": "{{PLURAL:$1|1 Säit|$1 Säite}} sinn op Ärer Iwwerwaachungslëscht, (plus Diskussiounssäiten).", "wlheader-enotif": "E-Mail-Notifikatioun ass ageschalt.", "wlheader-showupdated": "Säiten déi zanter Ärer leschter Visite geännert goufen, si '''fett''' geschriwwen", "wlnote": "Hei {{PLURAL:$1|ass déi lescht Ännerung|sinn déi lescht $1 Ännerunge}} vun {{PLURAL:$2|der leschter Stonn|de leschte(n) $2 Stonnen}}, Stand: $3 ëm $4 Auer.", @@ -1999,6 +2037,7 @@ "enotif_lastdiff": "Fir dës Ännerung ze gesinn, kuckt $1", "enotif_anon_editor": "Anonyme Benotzer $1", "enotif_body": "Léiwe $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nResumé vum Mataarbechter: $PAGESUMMARY $PAGEMINOREDIT\n\nDen Editeur kontaktéieren:\nE-Mail: $PAGEEDITOR_EMAIL\nWiki: $PAGEEDITOR_WIKI\n\nEt gi soulaang keng weider Maile geschéckt, bis Dir d'Säit nees emol besicht hutt wärend deem Dir ageloggt sidd.\nOp Ärer Iwwerwaachungslëscht kënnt Dir all Noriichtemarkeren zesummen zrécksetzen.\n\n\nÄre frëndleche(n) {{SITENAME}} Noriichtessystem\n\n--\n\nFir d'Astellungen op Ären E-Mailnoriichten z'änneren, besicht w.e.g.\n{{canonicalurl:{{#special:Preferences}}}}\n\n\nFir d'Astellunge vun Ärer Iwwerwaachungslëscht z'änneren, besicht w.e.g.\n{{canonicalurl:Special:Watchlist/edit}}\n\nFeedback a weider Hëllef:\n$HELPPAGE", + "enotif_minoredit": "Dëst ass eng kleng Ännerung", "created": "gemaach", "changed": "geännert", "deletepage": "Säit läschen", @@ -2470,7 +2509,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.", @@ -3208,7 +3247,6 @@ "fileduplicatesearch-noresults": "Et gouf kee Fichier mam Numm \"$1\" fonnt.", "specialpages": "Spezialsäiten", "specialpages-note-top": "Erklärung", - "specialpages-note": "* Normal Spezialsäiten.\n* Spezialsäite fir Benotzer mat méi Rechter.", "specialpages-group-maintenance": "Maintenance-Rapporten", "specialpages-group-other": "Aner Spezialsäiten", "specialpages-group-login": "Aloggen / Benotzerkont uleeën", @@ -3303,6 +3341,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/lfn.json b/languages/i18n/lfn.json index 446a37249a..4e94bef001 100644 --- a/languages/i18n/lfn.json +++ b/languages/i18n/lfn.json @@ -12,57 +12,58 @@ "Angel Blaise" ] }, - "tog-underline": "Sulinia lias:", - "tog-hideminor": "Asconda editas minor en cambias resente", + "tog-underline": "Sulini de lias:", + "tog-hideminor": "Asconde editas minor en cambias resente", "tog-hidepatrolled": "Asconde editas patruliada de cambias resente", - "tog-newpageshidepatrolled": "Asconde pajes patruliada de lista de pajes nova", - "tog-hidecategorization": "Asconde categori de pajes", - "tog-extendwatchlist": "Grandi la lista oservada per mostra tota cambias aplicable", - "tog-usenewrc": "Aumenta cambias resente (JavaScript)", - "tog-numberheadings": "Dona automatica numeros a titula", - "tog-showtoolbar": "Mostra la bara de utiles per edita (JavaScript)", - "tog-editondblclick": "Edita pajes a du clicas (JavaScript)", - "tog-editsectiononrightclick": "Engrana la edita de sesion par clica a la destra a titulos de sesion (JavaScript)", - "tog-watchcreations": "Junta la pajes cual me ia crea e fixes cual me ia carga a mea lista de pajes oservada", - "tog-watchdefault": "Junta pajes e imajes cual me ia edita a mea lista de pajes oservada", - "tog-watchmoves": "Junta pajes e fixes cual me ia moveda a mea lista de pajes oservada", - "tog-watchdeletion": "Junta pajes cual me ia sutrae a mea lista de pajes oservada", - "tog-watchuploads": "Ajunta fixes nova cual me ia carga a mea lista de pajes oservada", - "tog-watchrollback": "Ajunta pajes a cual me ia reversa a mea lista de pajes oservada", - "tog-minordefault": "Marca costumal tota editas como minor", - "tog-previewontop": "Mostra la previde ante la caxa de editas", + "tog-newpageshidepatrolled": "Asconde pajes patruliada de la lista de pajes nova", + "tog-hidecategorization": "Asconde la categori de pajes", + "tog-extendwatchlist": "Aumenta la lista monitorida per mostra tota cambias, no sola la plu resentes", + "tog-usenewrc": "Grupi cambias par paje en cambias resente e lista monitorida", + "tog-numberheadings": "Numeri automata titulos", + "tog-showtoolbar": "Mostra la utiles de edita", + "tog-editondblclick": "Edita pajes par clica duple", + "tog-editsectiononrightclick": "Edita un parte par clica destra un titulo de parte", + "tog-watchcreations": "Ajunta a mea lista monitorida la pajes cual me crea e la fixes cual me carga", + "tog-watchdefault": "Ajunta a mea lista monitorida la pajes e fixes cual me edita", + "tog-watchmoves": "Ajunta a mea lista monitorida la pajes e fixes cual me move", + "tog-watchdeletion": "Ajunta a mea lista monitorida la pajes cual me sutrae", + "tog-watchuploads": "Ajunta a mea lista monitorida la fixes nova cual me carga", + "tog-watchrollback": "Ajunta a mea lista monitorida la pajes con editas cual me reversa", + "tog-minordefault": "Marca inisial tota editas como minor", + "tog-previewontop": "Mostra la previde ante la caxa de edita", "tog-previewonfirst": "Mostra la previde a la edita prima", - "tog-enotifwatchlistpages": "Envia un eposta a me cuando un paje o fix cual me oserva es cambiada", - "tog-enotifusertalkpages": "Envia me un eposta cuando me paje de discutes es cambiada", - "tog-enotifminoredits": "Ance envia un eposta a me con editas minor de pajes e fixes", - "tog-enotifrevealaddr": "Descovre la me adirije de eposta en postas de nota", - "tog-shownumberswatching": "Mostra la numero de usores oservante", - "tog-oldsig": "Tua suscrive presente", - "tog-fancysig": "Trata la suscrive como vicitesto (sin lia automatica)", - "tog-uselivepreview": "Usa un previde direta", - "tog-forceeditsummary": "Recorda me cuando entera un resoma vacua de edita", - "tog-watchlisthideown": "Asconde me editas de la lista de pajes oservada", - "tog-watchlisthidebots": "Asconde editas par bot de la lista de pajes oservada", - "tog-watchlisthideminor": "Asconde editas minor de la lista de pajes oservada", - "tog-watchlisthideliu": "Asconde editas par usores identifiada de la lista de pajes oservada", - "tog-watchlistreloadautomatically": "Recarga automata la lista de pajes oservada cuando un filtre es cambiada (JavaScript nesesada)", - "tog-watchlisthideanons": "Asconde editas par usores anonim de la lista de pajes oservada", - "tog-watchlisthidepatrolled": "Asconde editas patruliada de la lista de pajes oservada", + "tog-enotifwatchlistpages": "Envia un eposta a me cuando on cambia un paje o fix cual me monitori", + "tog-enotifusertalkpages": "Envia un eposta a me on cambia mea paje de discute", + "tog-enotifminoredits": "Envia un eposta a me ance pos editas minor de pajes e fixes", + "tog-enotifrevealaddr": "Revela mea adirije de eposta en epostas avisante", + "tog-shownumberswatching": "Mostra la cuantia de usores monitorinte", + "tog-oldsig": "Tua suscrive presente:", + "tog-fancysig": "Trata la suscrive como vicitesto (sin lia automata)", + "tog-uselivepreview": "Mostra prevides sin recarga la paje", + "tog-forceeditsummary": "Avisa me cuando me no pleni un resoma de edita", + "tog-watchlisthideown": "Asconde mea editas en la lista monitorida", + "tog-watchlisthidebots": "Asconde editas par bot en la lista monitorida", + "tog-watchlisthideminor": "Asconde editas minor en la lista monitorida", + "tog-watchlisthideliu": "Asconde editas par usores autenticida en la lista monitorida", + "tog-watchlistreloadautomatically": "Recarga automata la lista monitorida cuando on cambia un filtro (JavaScript es usada)", + "tog-watchlistunwatchlinks": "Ajunta lias direta per monitori/desmonitori a pajes monitorida (JavaScript es usada per alterna entre la du)", + "tog-watchlisthideanons": "Asconde editas par usores anonim en la lista monitorida", + "tog-watchlisthidepatrolled": "Asconde editas patruliada en la lista monitorida", "tog-watchlisthidecategorization": "Asconde la categori de pajes", - "tog-ccmeonemails": "Envia copias de la epostas ce me envia a otras a me ance", - "tog-diffonly": "No mostra la conteni de paje su diffes", + "tog-ccmeonemails": "Envia a me copias de epostas cual me envia a otra usores", + "tog-diffonly": "No mostra contenidas de pajes su diferes", "tog-showhiddencats": "Mostra categorias ascondeda", - "tog-norollbackdiff": "No mostra diff pos un reversa", - "tog-useeditwarning": "Avisa me cuando me sorti un paje de edita con cambias nonsalvada", - "tog-prefershttps": "Sempre usa un lia secur cuando identifiada", - "underline-always": "A tota tempo", - "underline-never": "A no tempo", - "underline-default": "Inisial de pel o surfador", - "editfont-style": "Edita area de stilo de leteras", - "editfont-default": "Inisial de surfador", + "tog-norollbackdiff": "No mostra diferes pos un reversa", + "tog-useeditwarning": "Avisa me cuando me parti de un paje de edita con cambias nonfisada", + "tog-prefershttps": "Usa sempre un lia secur cuando me es autenticida", + "underline-always": "Sempre", + "underline-never": "Nunca", + "underline-default": "Implicada par pel o surfador", + "editfont-style": "Stilo de leteras en la caxa de edita", + "editfont-default": "Implicada par surfador", "editfont-monospace": "Leteras monospasida", - "editfont-sansserif": "Leteras sin serifes", - "editfont-serif": "Leteras con serifes", + "editfont-sansserif": "Leteras sin serif", + "editfont-serif": "Leteras con serif", "sunday": "soldi", "monday": "lundi", "tuesday": "martedi", @@ -70,7 +71,7 @@ "thursday": "jovedi", "friday": "venerdi", "saturday": "saturdi", - "sun": "Sol", + "sun": "sol", "mon": "lun", "tue": "mar", "wed": "mer", @@ -94,8 +95,8 @@ "march-gen": "marto", "april-gen": "april", "may-gen": "maio", - "june-gen": "Junio", - "july-gen": "Julio", + "june-gen": "junio", + "july-gen": "julio", "august-gen": "agosto", "september-gen": "setembre", "october-gen": "otobre", @@ -130,28 +131,28 @@ "pagecategories": "{{PLURAL:$1|Categoria|Categorias}}", "category_header": "Pajes en categoria \"$1\"", "subcategories": "Sucategorias", - "category-media-header": "Medias en catagoria \"$1\"", + "category-media-header": "Medias en categoria \"$1\"", "category-empty": "Esta categoria conteni no pajes e no medias.", "hidden-categories": "{{PLURAL:$1|Categoria|Categorias}} ascondeda", "hidden-category-category": "Categorias ascondeda", "category-subcat-count": "{{PLURAL:$2|Esta categoria ave sola la sucategoria seguente.|Esta categoria ave la {{PLURAL:$1|sucategoria|$1 sucategorias}} seguente, de un cuantia intera de $2.}}", - "category-subcat-count-limited": "Esta categoria ave la {{PLURAL:$1|sucategoria|$1sucategorias}} seguente.", + "category-subcat-count-limited": "Esta categoria ave la {{PLURAL:$1|sucategoria|$1 sucategorias}} seguente.", "category-article-count": "{{PLURAL:$2|Esta categoria conteni sola la paje seguente.|La {{PLURAL:$1|paje|$1 pajes}} seguente es en esta categoria, de un cuantia intera de $2.}}", - "category-article-count-limited": "La {{PLURAL:$1|paje|$1pajes}} seguente es en la categoria presente.", + "category-article-count-limited": "La {{PLURAL:$1|paje|$1pajes }} seguente es en la categoria presente.", "category-file-count": "{{PLURAL:$2|Esta categoria conteni sola la fix seguente.|La {{PLURAL:$1|fix|$1 fixes}} seguente es en esta categoria, de un cuantia intera de $2.}}", "category-file-count-limited": "The {{PLURAL:$1|fix|$1 fixes}} seguente es en la categoria presente.", "listingcontinuesabbrev": "cont.", - "index-category": "Pajes indiseda", + "index-category": "Pajes catalogida", "noindex-category": "Pajes noncatalogida", - "broken-file-category": "Pajes con lias rompeda de fixes", + "broken-file-category": "Pajes con lias de fix rompeda", "about": "Sur", - "article": "Paje de contenis", + "article": "Paje de contenida", "newwindow": "(abri en fenetra nova)", "cancel": "Cansela", "moredotdotdot": "Plu...", - "morenotlisted": "Esta lista es posible noncompleta.", + "morenotlisted": "Esta lista es cisa noncompleta.", "mypage": "Paje", - "mytalk": "Discutes", + "mytalk": "Discute", "anontalk": "Discute", "navigation": "Naviga", "and": " e", @@ -165,26 +166,26 @@ "tagline": "De {{SITENAME}}", "help": "Aida", "search": "Xerca", - "search-ignored-headings": " #
    \n# Titulos cual va es iniorada par xerca.\n# Cambias a esta va aveni pronto cuando la paje con la titulo es indiseda.\n# Tu pote forsa la reindise de un paje par fa un edita vacua.\n# La sintax es como la seguente:\n#   * Tota de la sinia \"#\" a la fini de la linia es un comenta.\n#   * Tota linia nonvacua es la titulo esata per iniora, incluinte caso etc.\nReferes\nLias esterna\nVide ance\n #
    ", + "search-ignored-headings": " #
    \n# Titulos cual xercas iniora.\n# Cambias a estas aveni direta cuando on catalogi la paje con la titulo.\n# On pote forsa la recatalogi de un paje par fa un edita vacua.\n# La sintatica es la seguente:\n#   * Tota testo de un sinia \"#\" asta la fini de la linia es un comenta.\n#   * Cada linia nonvacua es la titulo esata cual va es iniorada, con cualce leteras major, etc.\nReferes\nLias esterna\nVide ance\n #
    ", "searchbutton": "Xerca", "go": "Vade", "searcharticle": "Vade", "history": "Istoria de paje", "history_short": "Istoria", "history_small": "istoria", - "updatedmarker": "renovida de me visita presedente", + "updatedmarker": "cambiada pos mea visita la plu resente", "printableversion": "Varia primable", "permalink": "Lia permanente", "print": "Primi", "view": "Leje", "view-foreign": "Mostra en $1", "edit": "Edita", - "edit-local": "Edita descrive local", + "edit-local": "Edita la descrive local", "create": "Crea", "create-local": "Ajunta un descrive local", "delete": "Sutrae", - "undelete_short": "Desutrae {{PLURAL:$1|edita|editas}}", - "viewdeleted_short": "Vide {{PLURAL:$1|un edit desutraeda|$1 editas desutraeda}}", + "undelete_short": "Desutrae {{PLURAL:$1|edita|$1 editas}}", + "viewdeleted_short": "Vide {{PLURAL:$1|un edita sutraeda|$1 editas sutraeda}}", "protect": "Proteje", "protect_change": "cambia", "unprotect": "Cambia la proteje", @@ -192,15 +193,15 @@ "talkpagelinktext": "discute", "specialpage": "Paje spesial", "personaltools": "Utiles personal", - "talk": "Discutes", + "talk": "Discute", "views": "Aspetas", "toolbox": "Utiles", "tool-link-userrights": "Cambia grupos de {{GENDER:$1|usor}}", "tool-link-userrights-readonly": "Vide grupos de {{GENDER:$1|usor}}", - "tool-link-emailuser": "E-posta esta {{GENDER:$1|usor}}", - "imagepage": "Vide paje de fix", + "tool-link-emailuser": "Envia un eposta a esta {{GENDER:$1|usor}}", + "imagepage": "Vide la paje de fix", "mediawikipage": "Vide la paje de mesaje", - "templatepage": "Vide la paje de model", + "templatepage": "Vide la paje de stensil", "viewhelppage": "vide la paje de aida", "categorypage": "Vide la paje de categoria", "viewtalkpage": "Vide la discute", @@ -209,13 +210,18 @@ "redirectpagesub": "Paje redirijente", "redirectto": "Redirije a:", "lastmodifiedat": "La edita la plu resente de esta paje ia es a $1, a $2", - "viewcount": "Esta paje es asesada a $1 {{PLURAL:$1|ves|veses}}.", + "viewcount": "On ia asede esta paje a $1 {{PLURAL:$1|ves|$1 veses}}.", "protectedpage": "Paje protejeda", "jumpto": "Salta a:", "jumptonavigation": "naviga", "jumptosearch": "xerca", - "view-pool-error": "Pardona, la servadores es tro cargada a esta ora.\nTro multe usores es atenta vide esta paje.\nPer favore espeta ante cuanto tu atenta vide esta paje denova.\n\n$1", - "generic-pool-error": "Pardona, la servadores es tro cargada a esta ora.\nTro multe usores es atentante vide esta recurso.\nPer favore espeta ante cuando tu atenta vide esta recurso denova.", + "view-pool-error": "Pardona, la servadores es aora supracargada.\nTro multe usores atenta regarda esta paje.\nPer favore, pausa per un tempo ante atenta asede esta paje denova.\n\n$1", + "generic-pool-error": "Pardona, la servadores es aora supracargada.\nTro multe usores atenta regarda esta recurso.\nPer favore, pausa per un tempo ante atenta asede esta recurso denova.", + "pool-timeout": "Semafor nonotenable: atenta abandonada", + "pool-queuefull": "Filo de servadores es plen", + "pool-errorunknown": "Era nonconoseda", + "pool-servererror": "La manejador de servadores no es disponable ($1)", + "poolcounter-usage-error": "Era de usa: $1", "aboutsite": "Sur {{SITENAME}}", "aboutpage": "Project:Sur", "copyright": "La contenida es disponeda su $1, estra diferes notada.", @@ -233,19 +239,25 @@ "portal-url": "Project:Porton de comunia", "privacy": "Promete de privatia", "privacypage": "Project:Promete de privatia", - "ok": "Oce", + "badaccess": "Era de permete", + "badaccess-group0": "Tu no es permeteda a fa la ata cual tu ia solisita.", + "badaccess-groups": "La ata cual tu ia solisita es limitada a usores en {{PLURAL:$2|la grupo|un de la grupos}}: $1.", + "versionrequired": "Revisa $1 de MediaWiki es nesesada", + "versionrequiredtext": "Revisa $1 de MediaWiki es nesesada per usa esta paje.\nVide la [[Special:Version|paje de varias]].", + "ok": "Bon", "retrievedfrom": "Retraeda de \"$1\"", "youhavenewmessages": "{{PLURAL:$3|Tu ave}} $1 ($2).", "youhavenewmessagesfromusers": "{{PLURAL:$4|Tu ave}} $1 de {{PLURAL:$3|un otra usor|$3 usores}} ($2).", + "youhavenewmessagesmanyusers": "Tu ave $1 de multe usores ($2).", "newmessageslinkplural": "{{PLURAL:$1|un mesaje nova|999=mesajes nova}}", "newmessagesdifflinkplural": "{{PLURAL:$1|cambia|cambias}} resente", "youhavenewmessagesmulti": "Tu ave mesajes nova en $1", "editsection": "edita", "editold": "edita", - "viewsourceold": "fonte", + "viewsourceold": "regarda vicitesto", "editlink": "edita", - "viewsourcelink": "fonte", - "editsectionhint": "Edita de parte: $1", + "viewsourcelink": "regarda vicitesto", + "editsectionhint": "Edita la parte: $1", "toc": "Contenida", "showtoc": "mostra", "hidetoc": "asconde", @@ -254,16 +266,22 @@ "confirmable-confirm": "Esce {{GENDER:$1|tu}} es serta?", "confirmable-yes": "Si", "confirmable-no": "No", + "thisisdeleted": "Vide o restora $1?", "viewdeleted": "Vide $1?", + "restorelink": "{{PLURAL:$1|un edita sutraeda|$1 editas sutraeda}}", "feedlinks": "Flue:", - "site-rss-feed": "$1 RSS Flue", - "site-atom-feed": "$1 Flue Atom", - "page-rss-feed": "\"$1\" RSS Flue", - "page-atom-feed": "\"$1\" Flue Atom", + "feed-invalid": "Tipo de flue no es valida.", + "feed-unavailable": "Flues no es disponable", + "site-rss-feed": "$1 flue RSS", + "site-atom-feed": "$1 flue Atom", + "page-rss-feed": "\"$1\" flue RSS", + "page-atom-feed": "\"$1\" flue Atom", "red-link-title": "$1 (paje no esiste)", + "sort-descending": "Ordina desendente", + "sort-ascending": "Ordina asendente", "nstab-main": "Paje", "nstab-user": "Paje de usor", - "nstab-media": "Paje de medio", + "nstab-media": "Paje de media", "nstab-special": "Paje spesial", "nstab-project": "Paje de projeta", "nstab-image": "Fix", @@ -272,225 +290,705 @@ "nstab-help": "Paje de aida", "nstab-category": "Categoria", "mainpage-nstab": "Paje xef", - "nosuchspecialpage": "Paje spesial nonesistente", + "nosuchaction": "Esta ata no es reconoseda", + "nosuchactiontext": "La ata spesifada par la URL es nonvalida.\nCisa tu ia maltape la URL o ia segue un lia noncoreta.\nO cisa esta indica un defeto en la program usada par {{SITENAME}}.", + "nosuchspecialpage": "Esta paje spesial no esiste", "nospecialpagetext": "Tu ia solisita un paje spesial nonvalida.\n\nUn lista de pajes spesial valida es disponable en [[Special:SpecialPages|{{int:specialpages}}]].", "error": "Era", - "databaseerror": "Era de base de datos", + "databaseerror": "Era de banco de datos", + "databaseerror-text": "Un era ia aveni en interoga la banco de datos.\nCisa esta indica un defeto en la program.", + "databaseerror-textcl": "Un era ia aveni en interoga la banco de datos.", + "databaseerror-query": "Interoga: $1", + "databaseerror-function": "Funsiona: $1", + "databaseerror-error": "Era: $1", + "transaction-duration-limit-exceeded": "Per evita causa un pausa longa de copia, esta interata ia es abortada car la scrive ($1) ia dura plu ca la limita de {{PLURAL:$2|secondo|secondos}}.", + "laggedslavemode": "Avisa: Cisa la paje no conteni cambias resente.", + "readonly": "La banco de datos es cluida", + "enterlockreason": "Tape un razona per la semafor, incluinte un estima de cuando lo va es sutraeda", + "readonlytext": "La banco de datos es aora cluida per entradas nova e otra cambias, probable per permete mantenis normal, pos cual lo va funsiona denova normal.\nLa dirijor ci ia clui lo ia ofre esta esplica: $1", + "missing-article": "La banco de datos no ia trova la testo de un paje cual lo ia espeta trova, nomida \"$1\" $2.\n\nEsta es usual causada par segue un difere nonfresca o un lia de istoria a un paje cual on ia sutrae.\n\nSi lo no es tal, cisa tu ia trova un defeto en la program.\nPer favore, reporta esta a un [[Special:ListUsers/sysop|dirijor]], incluinte la URL.", + "missingarticle-rev": "(revisa: $1)", "missingarticle-diff": "(Difere: $1, $2)", + "readonly_lag": "La banco de datos es automata cluida per permete ce la suservadores sincroni con la servador xef.", + "nonwrite-api-promise-error": "La xapo HTTP 'Promise-Non-Write-API-Action' ia es enviada, ma la solisita ia es a un modulo de API-Write.", "internalerror": "Era interna", "internalerror_info": "Era interna: $1", + "internalerror-fatal-exception": "Era nonreparable de tipo \"$1\"", + "filecopyerror": "Fix \"$1\" no ia pote es copiada a \"$2\".", + "filerenameerror": "Fix \"$1\" no ia pote es renomida a \"$2\".", + "filedeleteerror": "Fix \"$1\" no ia pote es sutraeda.", + "directorycreateerror": "Arcivo \"$1\" no ia pote es creada.", + "directoryreadonlyerror": "Arcivo \"$1\" es nonscrivable.", + "directorynotreadableerror": "Arcivo \"$1\" es nonlejable.", + "filenotfound": "Fix \"$1\" no ia pote es trovada.", + "unexpected": "Valua nonespetada: \"$1\"=\"$2\".", + "formerror": "Era: La formulario no ia pote es enviada.", + "badarticleerror": "Esta ata no pote es fada a esta paje.", + "cannotdelete": "La paje o fix \"$1\" no ia pote es sutraeda.\nCisa un otra usor ia sutrae ja lo.", + "cannotdelete-title": "La paje \"$1\" no pote es sutraeda", + "delete-hook-aborted": "Sutrae abortada par un program estendente.\nLo no ia furni un esplica.", + "no-null-revision": "Un revisa nova vacua no ia pote es creada per paje \"$1\"", "badtitle": "Mal titulo", - "badtitletext": "La titulo de la paje spesifada es nonlegal, vacua, o un titulo interlingual o intervici de lia noncoreta. Cisa lo conteni un o plu sinias cual on no pote usa en titulos.", - "viewsource": "Mostra la fonte", - "viewsource-title": "Regarda la fonte per $1", - "viewsourcetext": "Tu pote regarda e copia la fonte de esta paje:", - "mycustomcssprotected": "Tu no ave permete per edita esta paje CSS.", - "mycustomjsprotected": "Tu no ave permete per edita esta paje JavaScript.", - "myprivateinfoprotected": "Tu no ave permete per edita tua informa privata.", - "mypreferencesprotected": "Tu no ave permete per edita tua preferes.", - "ns-specialprotected": "La pajes spesial no pote es editada.", + "badtitletext": "La titulo de la paje spesifada es nonlegal, vacua, o un titulo interlingual o intervical con lia noncoreta. Cisa lo conteni un o plu sinias cual on no pote usa en titulos.", + "title-invalid-empty": "La titulo de paje solisitada es vacua o conteni sola la nom de un spasio de nom.", + "title-invalid-utf8": "La titulo de paje solisitada conteni un segue nonvalida de sinias UTF-8.", + "title-invalid-interwiki": "La titulo de paje solisitada conteni un lia intervical cual on no pote usa en titulos.", + "title-invalid-talk-namespace": "La titulo de paje solisitada refere a un paje de discute cual no pote esiste.", + "title-invalid-characters": "La titulo de paje solisitada conteni sinias nonvalida: \"$1\".", + "title-invalid-relative": "La titulo ave un adirije relativa. Titulos relativa (./, ../) no es valida, car los va es comun nonatenable cuando un surfador prosede los.", + "title-invalid-magic-tilde": "La titulo de paje solisitada conteni un segue nonvalida de tildes majiosa (~~~).", + "title-invalid-too-long": "La titulo de paje solisitada es tro longa. Lo debe es no plu longa ca $1 {{PLURAL:$1|bait|baites}} en codigo UTF-8.", + "title-invalid-leading-colon": "La titulo de paje solisitada conteni un dupunto nonvalida a la comensa.", + "perfcached": "La datos seguente veni de prememoria e es cisa nonfresca. No plu ca {{PLURAL:$1|un resulta|$1 resultas}} es disponable en la prememoria.", + "perfcachedts": "La datos seguente veni de prememoria e la refresci la plu resente ia aveni a $1. No plu ca {{PLURAL:$4|un resulta|$4 resultas}} es disponable en la prememoria.", + "querypage-no-updates": "Refrescis de esta paje es aora descomutada.\nDatos asi no va es refrescida a presente.", + "viewsource": "Regarda vicitesto", + "viewsource-title": "Regarda vicitesto per $1", + "actionthrottled": "Ata limitada", + "actionthrottledtext": "Per defende contra malusa, usores no pote fa esta ata a tro multe veses en un tempo corta, e tu ia esede esta limita.\nPer favore, atenta denova pos alga minutos.", + "protectedpagetext": "Esta paje es protejeda per preveni editas o otra atas.", + "viewsourcetext": "Tu pote regarda e copia la vicitesto de esta paje:", + "viewyourtext": "Tu pote regarda e copia la vicitesto de tua editas a esta paje.", + "protectedinterface": "Esta paje furni testo interfasal per la program de esta vici, e es protejeda per preveni malusa.\nPer ajunta o cambia traduis per tota vicis, usa [https://translatewiki.net/ translatewiki.net], la projeta de tradui MediaWiki.", + "editinginterface": "Avisa: Tu edita un paje cual es usada per furni testo interfasal per la program.\nCambias a esta paje va afeta la aspeta de la interfas per otra usores de esta vici.", + "translateinterface": "Per ajunta o cambia traduis per tota vicis, usa [https://translatewiki.net/ translatewiki.net], la projeta de tradui MediaWiki.", + "cascadeprotected": "Esta paje es protejeda contra editas car lo es transcluida en la {{PLURAL:$1|paje|pajes}} seguente, cual es cascadin protejeda:\n$2", + "namespaceprotected": "Tu no es permeteda a edita pajes en la spasio de nom $1.", + "customcssprotected": "Tu no es permeteda a edita esta paje de CSS, car lo conteni la preferes personal de un otra usor.", + "customjsprotected": "Tu no es permeteda a edita esta paje de JavaScript, car lo conteni la preferes personal de un otra usor.", + "mycustomcssprotected": "Tu no es permeteda a edita esta paje de CSS.", + "mycustomjsprotected": "Tu no es permeteda a edita esta paje de JavaScript.", + "myprivateinfoprotected": "Tu no es permeteda a edita tua informas privata.", + "mypreferencesprotected": "Tu no es permeteda a edita tua preferes.", + "ns-specialprotected": "Pajes spesial no pote es editada.", + "titleprotected": "[[User:$1|$1]] ia proteje la crea de esta titulo.\nLa razona donada es $2.", + "filereadonlyerror": "La fix \"$1\" no pote es alterada, car la arciveria \"$2\" es nonscrivable a presente.\n\nLa dirijor ci ia fa esta ia ofre esta esplica: \"$3\".", + "invalidtitle-knownnamespace": "Titulo nonvalida con spasio de nom \"$2\" e testo \"$3\"", + "invalidtitle-unknownnamespace": "Titulo nonvalida con numero nonconoseda de spasio de nom $1 e testo \"$2\"", + "exception-nologin": "Usor no es autenticida", + "exception-nologin-text": "Per favore, autentici per asede esta paje o ata.", + "exception-nologin-text-manual": "Per favore, $1 per asede esta paje o ata.", + "virus-badscanner": "Malajustada: scanador antivirusal nonconoseda: $1", + "virus-scanfailed": "fali de scane (codigo $1)", + "virus-unknownscanner": "scanador antivirusal nonconoseda:", + "logouttext": "Tu es aora desautenticida.\n\nNota ce cisa alga pajes va continua es mostrada como si tu ta es ancora autenticida asta cuando tu vacui la memoria de tua surfador.", + "cannotlogoutnow-title": "Tu no pote desautentici a presente", + "cannotlogoutnow-text": "Desautentici no es posible cuando tu usa $1.", "welcomeuser": "Bonveni, $1!", + "welcomecreation-msg": "Tua conta ia es creada.\nTu pote cambia tua {{SITENAME}} [[Special:Preferences|preferes]] si tu desira.", "yourname": "Nom de usor:", "userlogin-yourname": "Nom de usor", - "userlogin-yourname-ph": "Entra tua nom de usor", - "yourpassword": "Sinia de entra:", - "userlogin-yourpassword": "Parola secreta", - "userlogin-yourpassword-ph": "Tape tua parola secreta", - "createacct-yourpassword-ph": "Tape un parola secreta", - "yourpasswordagain": "Retape la sinia:", - "createacct-yourpasswordagain": "Confirma la parola secreta", - "createacct-yourpasswordagain-ph": "Retape la parola secreta", - "userlogin-remembermypassword": "Manteni mea identifia", - "yourdomainname": "Tu domina:", - "login": "Identifia", - "nav-login-createaccount": "Sinia per entra", - "logout": "Retira", - "userlogout": "Sinia per retira", + "userlogin-yourname-ph": "Tape tua nom de usor", + "createacct-another-username-ph": "Tape la nom de usor", + "yourpassword": "Clave:", + "userlogin-yourpassword": "Clave", + "userlogin-yourpassword-ph": "Tape tua clave", + "createacct-yourpassword-ph": "Tape un clave", + "yourpasswordagain": "Retape la clave:", + "createacct-yourpasswordagain": "Confirma la clave", + "createacct-yourpasswordagain-ph": "Retape la clave", + "userlogin-remembermypassword": "Memori mea identia", + "userlogin-signwithsecure": "Usa un lia secur", + "cannotlogin-title": "Autentici no es posible", + "cannotlogin-text": "Autentici no es posible.", + "cannotloginnow-title": "Autentici aora no es posible.", + "cannotloginnow-text": "Autentici no es posible cuando tu usa $1.", + "cannotcreateaccount-title": "Crea de contas no es posible", + "cannotcreateaccount-text": "La crea direta de contas no es comutada en esta vici.", + "yourdomainname": "Tua domina:", + "password-change-forbidden": "Tu no pote cambia tua clave en esta vici.", + "externaldberror": "O un era de autentici ia aveni en la banco de datos, o tu no es permeteda a refresci tua conta esterna.", + "login": "Autentici", + "login-security": "Confirma tua identia", + "nav-login-createaccount": "Autentici / crea un conta", + "logout": "Desautentici", + "userlogout": "Desautentici", + "notloggedin": "No autenticida", "userlogin-noaccount": "Tu no ave un conta?", "userlogin-joinproject": "Crea un conta de {{SITENAME}}", "createaccount": "Crea un conta", - "userlogin-resetpassword-link": "Tu ia oblida tua parola secreta?", - "userlogin-helplink2": "Aida sur identifia", - "createacct-emailrequired": "Adirije de e-posta", - "createacct-emailoptional": "Adirije de e-posta (si desirada)", - "createacct-email-ph": "Entra tua adirije de e-posta", - "createacct-another-email-ph": "Entra tua adirije de e-posta", + "userlogin-resetpassword-link": "Tu ia oblida tua clave?", + "userlogin-helplink2": "Aida per autentici", + "userlogin-loggedin": "Tu ia autentici ja como {{GENDER:$1|$1}}.\nUsa la formulario a su per autentici como un otra usor.", + "userlogin-reauth": "Tu debe reautentici per confirma ce tu es {{GENDER:$1|$1}}.", + "userlogin-createanother": "Crea un conta nova", + "createacct-emailrequired": "Adirije de eposta", + "createacct-emailoptional": "Adirije de eposta (si desirada)", + "createacct-email-ph": "Tape tua adirije de eposta", + "createacct-another-email-ph": "Tape tua adirije de eposta", + "createaccountmail": "Usa un clave tempora e acaso, e envia lo a la adirije spesifada de eposta", + "createaccountmail-help": "On pote usa esta per crea un conta per un otra person sin descovre la clave.", + "createacct-realname": "Nom vera (si desirada)", "createacct-reason": "Razona:", + "createacct-reason-ph": "Perce tu crea un conta nova", + "createacct-reason-help": "Mesaje mostrada en la rejistra de crea de contas", "createacct-submit": "Crea tua conta", "createacct-another-submit": "Crea un conta", + "createacct-continue-submit": "Continua la crea de conta", + "createacct-another-continue-submit": "Continua la crea de conta", "createacct-benefit-heading": "{{SITENAME}} es realida par persones como tu.", "createacct-benefit-body1": "{{PLURAL:$1|edita|editas}}", "createacct-benefit-body2": "{{PLURAL:$1|paje|pajes}}", "createacct-benefit-body3": "{{PLURAL:$1|contribuor|contribuores}} resente", - "loginerror": "Era de entra", - "loginsuccesstitle": "Tu ia entra", - "loginsuccess": "'''Tu ia entrada aora a {{SITENAME}} como \"$1\".'''", - "nosuchuser": "On no ave un usor con la nom \"$1\".\nOn distingui entre leteras major e minor per nomes de usores.\nEsamina la spele, o [[Special:CreateAccount|crea un conta nova]].", - "nosuchusershort": "Es no usor con esta nom \"$1\". Esamina la spele.", - "nouserspecified": "Tu debe indica un nom de usor.", - "wrongpassword": "La sinia de entra no es coreta. Per favore, atenta ancora.", - "wrongpasswordempty": "La sinia de entra es vacua. Per favore, atenta ancora.", - "passwordtooshort": "Sinias secreta debe ave minima {{PLURAL:$1|1 simbol|$1 simboles}}.", - "passwordtoolong": "Sinias secreta no pote ave plu ca {{PLURAL:$1|1 simbol|$1 simboles}}.", - "passwordtoopopular": "Sinias secreta comun debe no es usada. Per favore, eleje un sinia plu unica.", - "mailmypassword": "Cambia tua sinia secreta", - "passwordremindertitle": "Sinia secreta temporer nova per {{SITENAME}}", - "passwordremindertext": "Algun (tu, probable, de adirije IP $1)\nia demanda un sinia secreta nova per {{SITENAME}} ($4).\nLa sinia secreta tempora per usor \"$2\" es aora \"$3\". Si esta ia es tua intende, tu debe identifia tu denova per entra e eleje tua sinia nova aora.\nTua sinia tempora va desvalidi en {{PLURAL:$5|un dia|$5 dias}}.\n\nSi algun otra ca tu ia envia esta demanda a nos, o si tu ia recorda tua sinia secreta e no vole cambia lo aora, tu pote iniora esta mesaje e continua usa tua sinia secreta vea.", - "noemail": "No es un adirije de eposta per usor \"$1\".", - "passwordsent": "Un sinia secreta ia es enviada a la adirije de eposta per \"$1\".\nPer favore, sinia per entra ancora pos tu ia reseta el.", - "eauthentsent": "Un eposta de serti ia es enviada a la adirije de eposta spesifada.\nAnte cualce otra epostas es enviada a tua conta, tu va nesesa segue la instruis en la eposta, per serti ce la conta es vera la tua.", - "emailconfirmlink": "Aproba tu adirije de eposta", - "accountcreated": "Conta es creada", + "badretype": "La claves cual tu ia tape no es egal.", + "usernameinprogress": "Un crea de conta per esta nom de usor aveni ja.\nEspeta, per favore.", + "userexists": "La nom spesifada de usor es ja usada.\nEleje un otra nom, per favore.", + "loginerror": "Era de autentici", + "createacct-error": "Era de crea de conta", + "createaccounterror": "La conta no ia pote es creada: $1", + "nocookiesnew": "La conta de usor es aora creada, ma tu no ia autentici.\n{{SITENAME}} usa cucis per autentici usores.\nTu ia descomuta cucis.\nPer favore, comuta los e autentici con tua nom de usor nova e tua clave.", + "nocookieslogin": "{{SITENAME}} usa cucis per autentici usores.\nTu ia descomuta cucis.\nPer favore, comuta los e atenta denova.", + "nocookiesfornew": "La conta de usor no ia es creada, car nos no ia pote confirma sua fonte.\nSerti ce tu ia comuta cucis, recarga esta paje, e atenta denova.", + "createacct-loginerror": "La crea de la conta ia susede, ma tu no ia pote es automata autenticida. Per favore, vade a la paje de [[Special:UserLogin|autentici nonautomata]].", + "noname": "Tu no ia spesifa un nom de usor valida.", + "loginsuccesstitle": "Autenticida", + "loginsuccess": "Tu es aora autenticida a {{SITENAME}} como \"$1\".", + "nosuchuser": "No usor esiste con la nom \"$1\".\nOn distingui entre leteras major e minor per nomes de usores.\nEsamina la spele, o [[Special:CreateAccount|crea un conta nova]].", + "nosuchusershort": "No usor esiste con la nom \"$1\".\nEsamina la spele.", + "nouserspecified": "Tu debe spesifa un nom de usor.", + "login-userblocked": "Esta usor es impedida. Autentici no es permeteda.", + "wrongpassword": "La clave no es coreta. Per favore, atenta denova.", + "wrongpasswordempty": "La clave es vacua. Per favore, atenta denova.", + "passwordtooshort": "Claves debe ave {{PLURAL:$1|1 sinia|$1 sinias}}, a la min.", + "passwordtoolong": "Claves no pote ave plu ca {{PLURAL:$1|1 sinia|$1 sinias}}.", + "passwordtoopopular": "Tu no pote usa un clave cual es comun elejeda. Per favore, eleje un plu unica.", + "password-name-match": "Tua clave debe es diferente de tua nom de usor.", + "password-login-forbidden": "La usa de esta nom de usor e clave es proibida.", + "mailmypassword": "Reinisia tua clave", + "passwordremindertitle": "Clave nova e tempora per {{SITENAME}}", + "passwordremindertext": "Algun (probable tu, de adirije IP $1)\nia solisita un clave nova per {{SITENAME}} ($4).\nUn clave tempora per usor\n\"$2\" ia es creada con la testo \"$3\". Si esta ia es\ntua intende, tu debe aora reautentici e eleje un clave nova.\nTua clave tempora va desvalidi pos {{PLURAL:$5|un dia|$5 dias}}.\n\nSi un otra person ia fa esta solisita, o si tu ia recorda\ntua clave e aora no vole cambia lo, tu pote iniora esta mesaje\ne continua usa tua clave vea.", + "noemail": "No adirije de eposta esiste per usor \"$1\".", + "noemailcreate": "Tu debe furni un adirije de eposta valida.", + "passwordsent": "Un clave nova es enviada a la adirije de eposta rejistrada per \"$1\".\nPer favore, reautentici pos reseta lo.", + "blocked-mailpassword": "Tua adirije IP es impedida de edita. Per preveni malusa, on no permete ce esta adirije IP usa la sistem de recovre claves.", + "eauthentsent": "Un eposta de confirma ia es enviada a la adirije de eposta spesifada.\nAnte la envia de plu epostas a la conta, tu debe segue la instruis en la eposta, per confirma ce la conta parteni vera a tu.", + "throttled-mailpassword": "Un eposta de reinisia la clave ia es ja enviada, en la {{PLURAL:$1|ora|$1 oras}} la plu resente.\nPer preveni malusa, sola un tal eposta va es enviada per {{PLURAL:$1|ora|$1 oras}}.", + "mailerror": "Era en envia eposta: $1", + "acct_creation_throttle_hit": "Visitores a esta vici, usante tua adirije IP, ia crea {{PLURAL:$1|1 conta|$1 contas}} en la $2 la plu resente, cual es la masima permeteda en esta periodo.\nComo resulta, visitores con esta adirije IP no pote crea plu contas a esta tempo.", + "emailauthenticated": "Tua adirije de eposta ia es confirmada a $2 a $3.", + "emailnotauthenticated": "Tua adirije de eposta es ancora no confirmada.\nNo epostas va es enviada per cualce de la capasias seguente.", + "noemailprefs": "Spesifa un adirije de eposta en tua preferes per pote usa esta capasias.", + "emailconfirmlink": "Confirma tua adirije de eposta", + "invalidemailaddress": "La adirije de eposta no pote es asetada, car lo pare ave un forma nonvalida.\nPer favore, tape un adirije de bon forma o vacui acel campo.", + "cannotchangeemail": "On no pote cambia adirijes de eposta per contas en esta vici.", + "emaildisabled": "Esta vici no pote envia epostas.", + "accountcreated": "Conta creada", + "accountcreatedtext": "La conta de usor per [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|discute]]) ia es creada.", + "createaccount-title": "Crea de conta per {{SITENAME}}", + "createaccount-text": "Algun ia crea un conta per tua adirije de eposta a {{SITENAME}} ($4) nomida \"$2\", con clave \"$3\".\nTu debe autentici e cambia tua clave aora.\n\nTu pote iniora esta mesaje, si esta conta ia es creada par era.", + "login-throttled": "Tu ia fa resente tro multe atentas de autentici.\nPer favore, pausa per $1 ante atenta denova.", + "login-abort-generic": "Tua autentici ia fali - Abortada", + "login-migrated-generic": "Tua conta ia es migrada, e tua nom de usor no esiste plu en esta vici.", "loginlanguagelabel": "Lingua: $1", - "pt-login": "Identifia se", - "pt-login-button": "Identifia", + "suspicious-userlogout": "Tua solisita de desautentici ia es refusada car lo pare es enviada par un surfador o proxi malfunsionante.", + "createacct-another-realname-tip": "La nom vera es nonobligante.\nSi tu eleje furni lo, lo va es usada per atribui la laboras fada par la usor.", + "pt-login": "Autentici", + "pt-login-button": "Autentici", + "pt-login-continue-button": "Continua autentici", "pt-createaccount": "Crea un conta", - "pt-userlogout": "Desidentifia", - "oldpassword": "Sinia secreta vea:", - "newpassword": "Sinia secreta nova:", - "retypenew": "Re-entra tu sinia secreta nova:", - "resetpass-submit-loggedin": "Cambia la sinia secreta", - "resetpass-temp-password": "Sinia secreta tempora:", - "passwordreset": "Reinisia tua parola secreta", + "pt-userlogout": "Desautentici", + "php-mail-error-unknown": "Era nonconoseda en la funsiona mail() de PHP.", + "user-mail-no-addy": "On ia atenta envia un eposta sin adirije de eposta.", + "user-mail-no-body": "On ia atenta envia un eposta con corpo vacua o nonormal corta.", + "changepassword": "Cambia clave", + "resetpass_announce": "Per fini autentici, tu debe furni un clave nova.", + "resetpass_header": "Cambia clave de conta", + "oldpassword": "Clave vea:", + "newpassword": "Clave nova:", + "retypenew": "Retape la clave nova:", + "resetpass_submit": "Fisa la clave e autentici tu", + "changepassword-success": "Tua clave ia es cambiada!", + "changepassword-throttled": "Tu ia fa resente tro multe atentas de autentici.\nPer favore, pausa per $1 ante atenta denova.", + "botpasswords": "Claves de bot", + "botpasswords-summary": "Claves de bot permete ce on asede un conta de usor par API sin usa la identia xef de la conta. La diretos de usor disponable pos autentici par clave de bot es cisa restrinjeda.\n\nSi tu no sabe perce on ta vole fa esta, probable tu debe no fa lo. Nunca un otra person debe demanda ce tu jenera un de estas e dona lo a el.", + "botpasswords-disabled": "Claves de bot es descomutada.", + "botpasswords-no-central-id": "Per usa claves de bot, tu debe es autenticida con conta sentral.", + "botpasswords-existing": "Claves esistente de bot", + "botpasswords-createnew": "Crea un clave nova de bot", + "botpasswords-editexisting": "Edita un clave esistente de bot", + "botpasswords-label-appid": "Nom de bot:", + "botpasswords-label-create": "Crea", + "botpasswords-label-update": "Fisa", + "botpasswords-label-cancel": "Cansela", + "botpasswords-label-delete": "Sutrae", + "botpasswords-label-resetpassword": "Reinisia la clave", + "botpasswords-label-grants": "Permetes pertinente:", + "botpasswords-help-grants": "Permetes fa ce diretos ja pertinente a tua conta de usor deveni usable. La comuta de un permete asi no afeta diretos cual tua conta de usor no ave. Vide la [[Special:ListGrants|table de permetes]] per plu informas.", + "botpasswords-label-grants-column": "Permeteda", + "botpasswords-bad-appid": "La nom de bot \"$1\" no es valida.", + "botpasswords-insert-failed": "La clave de bot \"$1\" no ia pote es ajuntada. Esce on ia ajunta ja lo?", + "botpasswords-update-failed": "La clave de bot \"$1\" no ia pote es cambiada. Esce on ia sutrae lo?", + "botpasswords-created-title": "Clave de bot creada", + "botpasswords-created-body": "La clave de bot \"$1\" de usor \"$2\" ia es creada.", + "botpasswords-updated-title": "Clave de bot cambiada", + "botpasswords-updated-body": "La clave de bot \"$1\" de usor \"$2\" ia es cambiada.", + "botpasswords-deleted-title": "Clave de bot sutraeda", + "botpasswords-deleted-body": "La clave de bot \"$1\" de usor \"$2\" ia es sutraeda.", + "botpasswords-newpassword": "La clave nova per autentici con $1 es $2. Per favore, nota esta per refere futur.
    (Per botes vea de cual sua nom de autentici debe es la mesma como la nom de usor ultima, tu pote usa ance $3 como nom de usor e $4 como clave.)", + "botpasswords-no-provider": "BotPasswordsSessionProvider no es disponable.", + "botpasswords-restriction-failed": "Restrinjes de clave de bot preveni esta autentici.", + "botpasswords-invalid-name": "La nom de usor spesifada no conteni la sinia separante de claves de bot (\"$1\").", + "botpasswords-not-exist": "Usor \"$1\" no ave un clave de bot nomida \"$2\".", + "resetpass_forbidden": "Claves no pote es cambiada", + "resetpass_forbidden-reason": "Claves no pote es cambiada: $1", + "resetpass-no-info": "Tu debe es autenticida per asede direta esta paje.", + "resetpass-submit-loggedin": "Cambia clave", + "resetpass-submit-cancel": "Cansela", + "resetpass-wrong-oldpass": "La clave tempora o presente es nonvalida.\nCisa tu ia cambia ja tua clave o ia solisita un clave tempora nova.", + "resetpass-recycled": "Per favore, cambia tua clave a alga cosa diferente de tua clave presente.", + "resetpass-temp-emailed": "Tu ia autentici con un clave tempora epostada.\nPer fini autentici, tu debe defini un clave nova asi:", + "resetpass-temp-password": "Clave tempora:", + "resetpass-abort-generic": "La cambia de clave ia es abortada par un program estendente.", + "resetpass-expired": "Tua clave es no plu valida. Per favore, defini un clave nova per autentici.", + "resetpass-expired-soft": "Tua clave es no plu valida e nesesa es reinisiada. Per favore, eleje aora un clave nova, o clica \"{{int:authprovider-resetpass-skip-label}}\" per reinisia plu tarda lo.", + "resetpass-validity-soft": "Tua clave es no plu valida: $1\n\nPer favore, eleje aora un clave nova, o clica \"{{int:authprovider-resetpass-skip-label}}\" per reinisia plu tarda lo.", + "passwordreset": "Reinisia clave", + "passwordreset-text-one": "Completi esta formulario per reseta un clave tempora par eposta.", + "passwordreset-text-many": "{{PLURAL:$1|Completi un de la campos per reseta un clave tempora par eposta.}}", + "passwordreset-disabled": "Reinisias de clave es descomutada en esta vici.", + "passwordreset-emaildisabled": "Capasias de eposta es descomutada en esta vici.", "passwordreset-username": "Nom de usor:", "passwordreset-domain": "Domina:", - "passwordreset-email": "Adirije de e-posta", - "passwordreset-invalidemail": "Adirije de e-posta no es valida", - "changeemail-submit": "Cambia e-posta", - "bold_sample": "Testo en leteras spesa", - "bold_tip": "Testo en leteras spesa", - "italic_sample": "Testo en leteras apoiada", - "italic_tip": "Testo en leteras apoiada", + "passwordreset-email": "Adirije de eposta:", + "passwordreset-emailtitle": "Detalias de conta de {{SITENAME}}", + "passwordreset-emailtext-ip": "Algun (probable tu, de adirije IP $1) ia solisita un reinisia de tua\nclave per {{SITENAME}} ($4). La {{PLURAL:$3|conta|contas}} de usor seguente es\nasosiada con esta adirije de eposta:\n\n$2\n\nEsta {{PLURAL:$3|clave|claves}} tempora va desvalidi pos {{PLURAL:$5|un dia|$5 dias}}.\nTu debe autentici aora e eleje un clave nova. Si un otra person ia fa\nesta solisita, o si tu ia recorda tua clave orijinal e no vole\naora cambia lo, tu pote iniora esta mesaje e continua usa\ntua clave vea.", + "passwordreset-emailtext-user": "Usor $1 en {{SITENAME}} ia solisita un reinisia de tua\nclave per {{SITENAME}} ($4). La {{PLURAL:$3|conta|contas}} de usor seguente es\nasosiada con esta adirije de eposta:\n\n$2\n\nEsta {{PLURAL:$3|clave|claves}} tempora va desvalidi pos {{PLURAL:$5|un dia|$5 dias}}.\nTu debe autentici aora e eleje un clave nova. Si un otra person ia fa\nesta solisita, o si tu ia recorda tua clave orijinal e no vole\naora cambia lo, tu pote iniora esta mesaje e continua usa\ntua clave vea.", + "passwordreset-emailelement": "Nom de usor:\n$1\n\nClave tempora:\n$2", + "passwordreset-emailsentemail": "Si esta adirije de eposta es asosiada con tua conta, alora on va envia un eposta de reinisia de clave.", + "passwordreset-emailsentusername": "Si un adirije de eposta es asosiada con esta nom de usor, alora on va envia un eposta de reinisia de clave.", + "passwordreset-nocaller": "On nesesa furni un clamor", + "passwordreset-nosuchcaller": "Clamor no esiste: $1", + "passwordreset-ignored": "La reinisia de clave no ia susede. Cisa no furnor es definida?", + "passwordreset-invalidemail": "La adirije de eposta es nonvalida", + "passwordreset-nodata": "On ia furni no nom de usor e no adirije de eposta", + "changeemail": "Cambia o sutrae adirije de eposta", + "changeemail-header": "Completi esta formulario per cambia tua adirije de eposta. Si tu vole sutrae tota asosias de adirije de eposta de tua conta, lasa vacua la adirije nova cuando tu envia la formulario.", + "changeemail-no-info": "Tu debe es autenticida per asede direta esta paje.", + "changeemail-oldemail": "Adirije de eposta presente:", + "changeemail-newemail": "Adirije de eposta nova:", + "changeemail-newemail-help": "Lasa vacua esta campo si tu vole sutrae tua adirije de eposta. Si tu sutrae la adirije de eposta, tu no va pote reinisia un clave oblidada, e no va reseta epostas de esta vici.", + "changeemail-none": "(vacua)", + "changeemail-password": "Tua clave de {{SITENAME}}:", + "changeemail-submit": "Cambia eposta", + "changeemail-throttled": "Tu ia fa tro multe atentas de autentici.\nPer favore, pausa per $1 ante atenta denova.", + "changeemail-nochange": "Tape un adirije de eposta nova, per favore.", + "resettokens": "Reinisia marcas", + "resettokens-text": "Asi, tu pote reinisia marcas cual permete asede alga datos privata cual pertine a tua conta.\n\nTu debe fa esta si tu ia comparti los con algun sin intende, o si tua conta ia es atacada.", + "resettokens-no-tokens": "No marcas esiste per reinisia.", + "resettokens-tokens": "Marcas:", + "resettokens-token-label": "$1 (valua presente: $2)", + "resettokens-watchlist-token": "Marca per la flue ueb (Atom/RSS) de [[Special:Watchlist|cambias a tua pajes monitorida]]", + "resettokens-done": "Marcas reinisiada.", + "resettokens-resetbutton": "Reinisia marcas elejeda", + "bold_sample": "Testo spesa", + "bold_tip": "Testo spesa", + "italic_sample": "Testo apoiada", + "italic_tip": "Testo apoiada", "link_sample": "Titulo de lia", "link_tip": "Lia interna", "extlink_sample": "http://www.example.com titulo de lia", - "extlink_tip": "Lia esterna (recorda la prefisa http://)", + "extlink_tip": "Lia esterna (no oblida la prefisa http://)", "headline_sample": "Testo de titulo", "headline_tip": "Titulo de nivel 2", - "nowiki_sample": "Ajunta testo nonformatida asi", - "nowiki_tip": "Iniora la formati de vici", + "nowiki_sample": "Ajunta asi testo nonformatida", + "nowiki_tip": "Iniora sintatica de vici", "image_tip": "Fix interna", - "media_tip": "Lia a fix", - "sig_tip": "Tua suscrive con marca de ora", + "media_tip": "Lia a un fix", + "sig_tip": "Tua suscrive con indica de ora", "hr_tip": "Linia orizonal (per usas rara)", "summary": "Resoma:", - "subject": "Sujeto:", + "subject": "Tema:", "minoredit": "Esta es un cambia minor", "watchthis": "Monitori esta paje", "savearticle": "Fisa la paje", + "savechanges": "Fisa cambias", "publishpage": "Publici paje", - "publishchanges": "Publica la cambias", + "publishchanges": "Publici cambias", "preview": "Previde", "showpreview": "Mostra previde", - "showdiff": "Mostra diferes", - "anoneditwarning": "Avisa: Tu no ia identifia tu. Tua adirije IP va es publica vidable si tu fa un edita. Si tu [$1 identifia tu] o [$2 crea un conta], tua editas va es atribuida a tua nom de usor, entre otra beneficas.", - "summary-preview": "Previde soma:", + "showdiff": "Mostra cambias", + "blankarticle": "Avisa: La paje cual tu crea es vacua.\nSi tu clica \"$1\" denova, la paje va es creada sin contenida.", + "anoneditwarning": "Avisa: Tu no es autenticida. Tua adirije IP va es publica vidable si tu fa editas. Si tu [$1 autentici] o [$2 crea un conta], tua editas va es atribuida a tua nom de usor, entre otra beneficas.", + "anonpreviewwarning": "Tu no es autenticida. Si tu fisa cambias, tua adirije IP va es rejistrada en la istoria de esta paje.", + "missingsummary": "Avisa: Tu no ia furni un resoma de la edita.\nSi tu clica \"$1\" denova, tua edita va es fisada sin resoma.", + "selfredirect": "Avisa: Tu redirije esta paje a se.\nCisa tu no ia spesifa coreta la gol de la redirije, o cisa tu no edita la paje intendeda.\nSi tu clica \"$1\" denova, la redirije va es creada an tal.", + "missingcommenttext": "Tape un comenta a su, per favore.", + "missingcommentheader": "Avisa: Tu no ia furni un tema per esta comenta.\nSi tu clica \"$1\" denova, tua edita va es fisada sin tema.", + "summary-preview": "Previde de resoma:", + "subject-preview": "Previde de tema:", + "previewerrortext": "Un era ia aveni en atenta previde tua cambias.", "blockedtitle": "Usor es impedida", - "blockedtext": "'''Tua nom de usor o adirije IP es impedida.'''\n\nLa impedi ia es fada par $1.\nLa razona donada es ''$2''.\n\n* Comensa de impedi: $8\n* Fini de impedi: $6\n* Conta impedida: $7\n\nTu pote contata $1 o un otra [[{{MediaWiki:Grouppage-sysop}}|dirijor]] per discute esta impedi.\nTu no pote usa la funsiona \"envia un e-posta a esta usor\" estra si un adirije valida de e-posta legal es spesifada en tua [[Special:Preferences|preferes de conta]] e tu no es impedida de usa lo.\nTua adirije IP presente es $3, e la numero de impedi es #$5.\nInclui tota esta detalias en cualce demandas cual tu fa, per favore.", - "loginreqtitle": "Entra de identia nesesada", - "loginreqlink": "identifia", + "blockedtext": "Tua nom de usor o adirije IP es impedida.\n\nLa impedi ia es fada par $1.\nLa razona donada es ''$2''.\n\n* Comensa de impedi: $8\n* Fini de impedi: $6\n* Conta impedida: $7\n\nTu pote contata $1 o un otra [[{{MediaWiki:Grouppage-sysop}}|dirijor]] per discute esta impedi.\nTu no pote usa la funsiona \"envia un eposta a esta usor\" estra si un adirije valida\nde eposta es spesifada en tua [[Special:Preferences|preferes de conta]] e tu no es impedida de usa lo.\nTua adirije IP presente es $3, e la numero de impedi es #$5.\nInclui tota esta detalias en cualce demandas cual tu fa, per favore.", + "autoblockedtext": "Tua adirije IP ia es automata impedida car lo ia es usada par un otra usor, ci ia es impedida par $1.\nLa razona donada es ''$2''.\n\n* Comensa de impedi: $8\n* Fini de impedi: $6\n* Conta impedida: $7\n\nTu pote contata $1 o un otra [[{{MediaWiki:Grouppage-sysop}}|dirijor]] per discute esta impedi.\nTu no pote usa la funsiona \"envia un eposta a esta usor\" estra si un adirije valida de eposta es spesifada en tua [[Special:Preferences|preferes de conta]] e tu no es impedida de usa lo.\nTua adirije IP presente es $3, e la numero de impedi es #$5.\nInclui tota esta detalias en cualce demandas cual tu fa, per favore.", + "systemblockedtext": "Tua nom de usor o adirije IP ia es automata impedida par MediaWiki.\nLa razona donada es $2.\n\n* Comensa de impedi: $8\n* Fini de impedi: $6\n* Conta impedida: $7\nTua adirije IP presente es $3.\nInclui tota esta detalias en cualce demandas cual tu fa, per favore.", + "blockednoreason": "no razona donada", + "whitelistedittext": "Per favore, $1 per edita pajes.", + "confirmedittext": "Tu debe confirma tua adirije de eposta ante edita pajes.\nPer favore, defini e validi tua adirije de eposta en tua [[Special:Preferences|preferes]].", + "nosuchsectiontitle": "Parte no trovada", + "nosuchsectiontext": "Tu ia atenta edita un parte cual no esiste.\nCisa on ia move o sutrae lo en cuando tu ia regarda la paje.", + "loginreqtitle": "Autentici es nesesada", + "loginreqlink": "autentici", + "loginreqpagetext": "Per favore, $1 per regarda otra pajes.", + "accmailtitle": "Clave enviada", + "accmailtext": "On ia envia un clave acaso jenerada per [[User talk:$1|$1]] a $2. Pos autentici, tu pote cambia esta a la paje de .", "newarticle": "(Nova)", - "newarticletext": "Tu ia segue un lia a un paje cual ancora no esista. Per crea la paje, comensa tape en la caxa a su (vide la [$1 paje de aida] per plu informa).\nSi tu ia veni asi par era, clica la boton retro de tua surfador.", - "anontalkpagetext": "Esta es la paje de discute per un usor anonim ci ancora no ia crea un conta, o ci no usa lo.\n Donce nos identifia el par adirije IP numeral.\nUn tal adirije pote es compartida par plu ca un usor.\nSi tu es un usor anonim e opina ce on ia dirije comentas nonpertinente a tu, per favore [[Special:CreateAccount|crea un conta]] o [[Special:UserLogin|identifia tu]] per evita confusas futur con otra usores anonim.", - "noarticletext": "No testo esiste en esta paje. Tu pote [[Special:Search/{{PAGENAME}}|xerca la titulo de esta paje]] en otra pajes, [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} xerca en la arcivos relatada], o [{{fullurl:{{FULLPAGENAME}}|action=edit}} crea esta paje].", - "noarticletext-nopermission": "No testo esiste en esta paje. Tu pote [[Special:Search/{{PAGENAME}}|xerca esta titulo de paje]] en otra pajes, o [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} xerca en arcivos relatada], ma on no permete ce tu crea esta paje.", - "userpage-userdoesnotexist-view": "La conta de usor \"$1\" no es rejistrada", + "newarticletext": "Tu ia segue un lia a un paje cual ancora no esiste. Per crea la paje, comensa tape en la caxa a su (vide la [$1 paje de aida] per plu informa).\nSi tu ia veni asi par era, clica la boton retro de tua surfador.", + "anontalkpagetext": "Esta es la paje de discute per un usor anonim ci ancora no ia crea un conta, o ci no usa lo.\n Donce nos identifia el par adirije IP numeral.\nUn tal adirije pote es compartida par plu ca un usor.\nSi tu es un usor anonim e opina ce on ia dirije comentas nonpertinente a tu,\nper favore [[Special:CreateAccount|crea un conta]] o [[Special:UserLogin|autentici]] per evita confusas futur con otra usores anonim.", + "noarticletext": "No testo esiste en esta paje. Tu pote [[Special:Search/{{PAGENAME}}|xerca la titulo de esta paje]] en otra pajes, [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} xerca en la rejistras relatada], o [{{fullurl:{{FULLPAGENAME}}|action=edit}} crea esta paje].", + "noarticletext-nopermission": "No testo esiste en esta paje. Tu pote [[Special:Search/{{PAGENAME}}|xerca esta titulo de paje]] en otra pajes, o [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} xerca en rejistras relatada], ma on no permete ce tu crea esta paje.", + "missing-revision": "La revisa $1 de la paje nomida \"{{FULLPAGENAME}}\" no esiste.\n\nEsta es usual causada par segue un lia nonfresca de istoria a un paje cual on ia sutrae.\nDetalias es trovable en la [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rejistra de sutraes].", + "userpage-userdoesnotexist": "Conta de usor \"$1\" no es rejistrada.\nPer favore, deside esce tu vole crea/edita esta paje.", + "userpage-userdoesnotexist-view": "Conta de usor \"$1\" no es rejistrada.", + "blocked-notice-logextract": "Esta usor es impedida a presente.\nLa entrada la plu resente en la rejistra de impedis es presentada a su per clari:", "clearyourcache": "Nota: Pos fisa, tu debe cisa sircoveni la memoria de tua surfador per vide la cambias.\n* Firefox / Safari: Presa la tecla Maj (Shift) e clica Refresci, o presa o Ctrl-F5 o Ctrl-R (⌘-R a Mac)\n* Google Chrome: Presa Ctrl-Shift-R (⌘-Shift-R a Mac)\n* Internet Explorer: Presa Ctrl e clica Refresci, o presa Ctrl-F5\n* Opera: Vade a Menu → Settings (Opera → Preferences a Mac) e de ala a Privacy & security → Clear browsing data → Cached images and files.", - "previewnote": "Recorda ce esta es sola un previde. Tua cambias es ancora no fisada!", - "continue-editing": "Vade a la loca de edita", + "usercssyoucanpreview": "Aviseta: Usa la boton \"{{int:showpreview}}\" per proba tua CSS nova ante fisa.", + "userjsyoucanpreview": "Aviseta: Usa la boton \"{{int:showpreview}}\" per proba tua JavaScript nova ante fisa.", + "usercsspreview": "Recorda ce tu regarda mera un previde de tua CSS de usor.\nLo es ancora no fisada!", + "userjspreview": "Recorda ce tu regarda mera un proba/previde de tua JavaScript de usor.\nLo es ancora no fisada!", + "sitecsspreview": "Recorda ce tu regarda mera un previde de esta CSS.\nLo es ancora no fisada!", + "sitejspreview": "Recorda ce tu regarda mera un previde de esta codigo JavaScript.\nLo es ancora no fisada!", + "userinvalidcssjstitle": "Avisa: No pel \"$1\" esiste.\nPajes .css e .js personal usa un titulo con leteras minor, pe {{ns:user}}:Foo/vector.css en loca de {{ns:user}}:Foo/Vector.css.", + "updated": "(Cambiada)", + "note": "Nota:", + "previewnote": "Recorda ce esta es mera un previde.\nTua cambias es ancora no fisada!", + "continue-editing": "Vade a la caxa de edita", + "previewconflict": "Esta previde refleta la testo en la caxa alta de edita, como lo va apare si tu eleje fisa.", + "session_fail_preview": "Pardona! Nos no ia pote trata tua edita par causa de un perde de datos de sesion.\n\nCisa tu ia deveni desautenticida. Per favore, serti ce tu es ancora autenticida e atenta denova.\nSi lo ancora no susede, proba [[Special:UserLogout|desautentici]] e reautentici, e serti ce tua surfador permete cucis de esta pajeria.", + "session_fail_preview_html": "Pardona! Nos no ia pote trata tua edita par causa de un perde de datos de sesion.\n\nCar {{SITENAME}} ia comuta la usa cru de HTML, la previde es ascondeda per defende contra atacas par JavaScript.\n\nSi esta es un atenta vera de edita, atenta denova, per favore.\nSi lo ancora no susede, proba [[Special:UserLogout|desautentici]] e reautentici, e serti ce tua surfador permete cucis de esta pajeria.", + "token_suffix_mismatch": "Tua edita ia es refusada car tua surfador ia malfa la sinias de puntua en la marca de edita.\nLa edita ia es refusada per preveni mali de la testo de la paje.\nEsta aveni a veses si on usa un proxi ueb anonim e defetosa.", + "edit_form_incomplete": "Alga partes de la formulario de edita no ia ateni la servador; serti ce tua editas es intata e atenta denova.", "editing": "Editante $1", "creating": "Creante $1", "editingsection": "Editante $1 (un parte)", - "editingcomment": "Edita $1 (sesion nova)", + "editingcomment": "Edita $1 (un parte nova)", + "editconflict": "Desacorda de editas: $1", + "explainconflict": "Un otra usor ia cambia esta paje pos cuando tu ia comensa edita lo.\nLa caxa alta de testo conteni la paje como lo esiste a presente.\nTua cambias apare en la caxa basa de testo.\nTu debe fusa tua cambias con la testo esistente.\nSola la testo en la caxa alta va es fisada cuando tu clica \"$1\".", + "yourtext": "Tua testo", + "storedversion": "Testo esistente", + "editingold": "Avisa: Tu edita un revisa nonfresca de esta paje.\nSi tu fisa lo, cualce cambias fada pos esta revisa va es perdeda.", "yourdiff": "Diferes", - "copyrightwarning": "Per favore nota ce tota labora a {{SITENAME}} es judida ce el es relasada su la $2 (vide $1 per detalias). Si tu no desira ce tu scrives ta es editada sin compati e redistribui sin tu permite, no sumita el asi!
    \nTu ance promete a nos ce tu ia scriveda esta par tu mesma, o copiada esta de un domina publica o otra orijin libre.\n'''NO SUMITA LABORA SU DIRETOS DE AUTOR SIN PERMITE!!'''", - "templatesused": "{{PLURAL:$1|Modele|Modeles}} usada en esta paje:", + "copyrightwarning": "Per favore, nota ce tota contribuis a {{SITENAME}} es regardada como relasada su la $2 (vide $1 per detalias). Si tu no desira ce on edita tua scrives sin compatia e redistribui libre los, alora no ajunta los asi.
    \nTu promete ance a nos ce tu mesma ia scrive esta, o ia copia lo de un recurso de domina publica o simil libre.\nNo ajunta testo restrinjeda par direto de autor sin permete!", + "copyrightwarning2": "Per favore, nota ce tota contribuis a {{SITENAME}} pote es editada, alterada o sutraeda par otra contribuores.\nSi tu no desira ce on edita tua scrives sin compatia, alora no ajunta los asi.
    \nTu promete ance a nos ce tu mesma ia scrive esta, o ia copia lo de un recurso de domina publica o simil libre (vide $1 per detalias).\nNo ajunta testo restrinjeda par direto de autor sin permete!", + "editpage-cannot-use-custom-model": "La model de contenida de esta paje no pote es cambiada.", + "longpageerror": "Era: La testo cual tu ia envia ave un longia de {{PLURAL:$1|un cilobait|$1 cilobaites}}, cual es plu ca la masima de {{PLURAL:$2|un cilobait|$2 cilobaites}}.\nLo no pote es fisada.", + "readonlywarning": "Avisa: La banco de datos es cluida per manteni, donce tu no va pote fisa tua editas a esta tempo.
    \nCisa tu ta vole copia e coli tua testo a un fix de testo e fisa lo per plu tarda.\n\nLa dirijor ci ia fa la clui ia ofre esta esplica: $1", + "protectedpagewarning": "Avisa: Esta paje es protejeda, tal ce sola usores con diretos dirijal pote edita lo.\nLa entrada la plu resente de la rejistra es presentada a su per clari:", + "semiprotectedpagewarning": "Nota: Esta paje es protejeda, tal ce sola usores rejistrada pote edita lo.\nLa entrada la plu resente de la rejistra es presentada a su per clari:", + "cascadeprotectedwarning": "Avisa: Esta paje es protejeda, tal ce sola usores con [[Special:ListGroupRights|diretos spesifada]] pote edita lo, car lo es transcluida en la {{PLURAL:$1|paje|pajes}} seguente cual es cascadin protejeda:", + "titleprotectedwarning": "Avisa: Esta paje es protejeda, tal ce on nesesa [[Special:ListGroupRights|diretos spesifada]] per crea lo.\nLa entrada la plu resente de la rejistra es presentada a su per clari:", + "templatesused": "{{PLURAL:$1|Stensil|Stensiles}} usada en esta paje:", "templatesusedpreview": "{{PLURAL:$1|Stensil|Stensiles}} usada en esta previde:", + "templatesusedsection": "{{PLURAL:$1|Stensil|Stensiles}} usada en esta parte:", "template-protected": "(protejeda)", - "template-semiprotected": "(partal protejeda)", - "hiddencategories": "Esta paje es un membro de {{PLURAL:$1|1 categoria ascondeda|$1 categorias ascondeda}}:", - "nocreatetext": "{{SITENAME}} ave un restringe a la capas per crea pajes nova.\nTu pote vade a retro e edita un paje esistente, o [[Special:UserLogin|sinia per entra o crea un conta]].", + "template-semiprotected": "(semiprotejeda)", + "hiddencategories": "Esta paje es un membro de {{PLURAL:$1|1 categoria|$1 categorias}} ascondeda:", + "nocreatetext": "{{SITENAME}} ia restrinje la capasia de crea pajes nova.\nTu pote vade a retro e edita un paje esistente, o [[Special:UserLogin|autentici o crea un conta]].", + "nocreate-loggedin": "Tu no es permeteda a crea pajes nova.", + "sectioneditnotsupported-title": "La edita de partes no es suportada", + "sectioneditnotsupported-text": "La edita de partes no es suportada en esta paje.", "permissionserrors": "Era de permete", - "permissionserrorstext-withaction": "Tu no pote $2, per la {{PLURAL:$1|razona|razonas}} seguente:", - "recreate-moveddeleted-warn": "Avisa: Tu recrea un paje cual on ia sutrae a ante.\n\nConsidera esce lo conveni ce tu continua edita esta paje. La arcivos de sutrae e move per la paje es presentada asi per aida:", - "moveddeleted-notice": "On ia sutrae esta paje. La arcivos de sutrae e move per la paje es presentada a su per clari.", + "permissionserrorstext": "Tu no es permeteda a fa acel, per esta {{PLURAL:$1|razona|razonas}}:", + "permissionserrorstext-withaction": "Tu no es permeteda a $2, per la {{PLURAL:$1|razona|razonas}} seguente:", + "contentmodelediterror": "Tu no pote edita esta revisa car sua model de contenida es $1, cual difere de la model de contenida presente de la paje, $2.", + "recreate-moveddeleted-warn": "Avisa: Tu recrea un paje cual on ia sutrae a ante.\n\nConsidera esce lo conveni ce tu continua edita esta paje. La rejistras de sutrae e move per la paje es presentada asi per aida:", + "moveddeleted-notice": "On ia sutrae esta paje. La rejistras de sutrae e move per la paje es presentada a su per clari.", + "moveddeleted-notice-recent": "Pardona, esta paje ia es resente sutraeda (en la 24 oras pasada).\nLa rejistras de sutrae, proteje e move per la paje es presentada a su per clari.", + "log-fulllog": "Regarda rejistra intera", + "edit-hook-aborted": "Edita ia es abortada par program estendente.\nLo ia dona no esplica.", + "edit-gone-missing": "La paje no ia pote es cambiada.\nLo pare ce on ia sutrae lo.", + "edit-conflict": "Desacorda de editas", + "edit-no-change": "Tua edita ia es iniorada car la testo ia conteni no cambias.", + "postedit-confirmation-created": "La paje es creada.", + "postedit-confirmation-restored": "La paje es restorada.", + "postedit-confirmation-saved": "Tua edita es fisada.", + "edit-already-exists": "Un paje nova no ia pote es creada.\nLo esiste ja.", + "defaultmessagetext": "Testo inisial de mesaje", + "content-failed-to-parse": "La contenida $2 per model $1 no ia pote es analiseda: $3", + "invalid-content-data": "Datos nonvalida de contenida", + "content-not-allowed-here": "Contenida \"$1\" no es permeteda en paje [[$2]]", + "editwarning-warning": "Si tu vade a via de esta paje, tu va perde cisa cualce cambias cual tu ia fa.\nSi tu es autenticida, tu pote descomuta esta avisa en la parte \"{{int:prefs-editing}}\" de tua preferes.", + "editpage-invalidcontentmodel-title": "Model de contenida no es suportada", + "editpage-invalidcontentmodel-text": "La model de contenida \"$1\" no es suportada.", + "editpage-notsupportedcontentformat-title": "Formato de contenida no es suportada", + "editpage-notsupportedcontentformat-text": "La formato de contenida $1 no es suportada par la model de contenida $2.", "content-model-wikitext": "vicitesto", - "undo-failure": "Esta edita no pote es desfada par causa de editas interveninte cual contradise lo.", - "viewpagelogs": "Mostra la arcivos per esta paje", - "currentrev": "Cambia presente", + "content-model-text": "testo plata", + "content-model-javascript": "JavaScript", + "content-json-empty-object": "Ojeto vacua", + "content-json-empty-array": "Lista vacua", + "deprecated-self-close-category": "Pajes con eticetas HTML autocluinte nonvalida", + "deprecated-self-close-category-desc": "La paje conteni eticetas HTML autocluinte nonvalida, como <b/> o <span/>. La condui de estas va cambia en la futur prosima per coere con la spesifa HTML5, donce on desaproba usa los en vicitesto.", + "duplicate-args-warning": "Averti: [[:$1]] clama [[:$2]] con plu ca un valua per la parametre \"$3\". Sola la valua final furnida va es usada.", + "duplicate-args-category": "Pajes con parametres duplida en clamas de stensil", + "duplicate-args-category-desc": "La paje conteni clamas de stensil cual dupli sua parametres, como en {{foo|bar=1|bar=2}} o {{foo|bar|1=baz}}.", + "expensive-parserfunction-warning": "Avisa: Esta paje conteni tro multe clamas custosa a funsionas de analisador.\n\nLo debe ave min ca $2 {{PLURAL:$2|clama|clamas}}, ma aora lo ave {{PLURAL:$1|$1 clama|$1 clamas}}.", + "expensive-parserfunction-category": "Pajes con tro multe clamas custosa a funsionas de analisador", + "post-expand-template-inclusion-warning": "Avisa: La grandia de stensiles incluida es tro grande.\nAlga stensiles no va es incluida.", + "post-expand-template-inclusion-category": "Pajes cual esede la grandia de stensiles incluida", + "post-expand-template-argument-warning": "Avisa: Esta paje conteni a la min un parametre de stensil cual es tro grande cuando estendeda.\nEsta parametres es ometeda.", + "post-expand-template-argument-category": "Pajes conteninte parametres ometeda de stensil", + "parser-template-loop-warning": "Sicle de stensil es detetada: [[$1]]", + "template-loop-category": "Pajes con sicles de stensil", + "template-loop-category-desc": "Esta paje conteni un sicle de stensil, pd un stensil cual clama se en modo recorsante.", + "template-loop-warning": "Avisa: Esta paje clama [[:$1]] cual causa un sicle de\nstensil (un clama infinita recorsante).", + "parser-template-recursion-depth-warning": "Esede de profondia masima de recorsa de stensil ($1)", + "language-converter-depth-warning": "Esede de profondia masima de convertador de lingua ($1)", + "node-count-exceeded-category": "Pajes do la conta de nodas es esededa", + "node-count-exceeded-category-desc": "La paje esede la conta masima de nodas.", + "node-count-exceeded-warning": "La paje ia esede la conta de nodas", + "expansion-depth-exceeded-category": "Pajes do la profondia de estende es esededa", + "expansion-depth-exceeded-category-desc": "La paje esede la profondia masima de estende.", + "expansion-depth-exceeded-warning": "La paje ia esede la profondia de estende", + "parser-unstrip-loop-warning": "Sicle de unstrip() detetada", + "parser-unstrip-recursion-limit": "Esede de la recorsa masima de unstrip() ($1)", + "converter-manual-rule-error": "Era detetada en regula nonautomata de converti de lingua", + "undo-success": "La edita pote es desfada.\nPer favore, esamina la compara a su per serti ce tu vole fa esta, e alora fisa la cambias a su per fini desfa la edita.", + "undo-failure": "La edita no pote es desfada par causa de editas interveninte cual contradise lo.", + "undo-norev": "La edita no pote es desfada car lo no esiste o ia es sutraeda.", + "undo-nochange": "Lo pare ce la edita es ja desfada.", + "undo-summary": "Desfa revisa $1 par [[Special:Contributions/$2|$2]] ([[User talk:$2|discute]])", + "undo-summary-username-hidden": "Desfa revisa $1 par un usor ascondeda", + "cantcreateaccount-text": "La crea de contas de esta adirije IP ($1) ia es impedida par [[User:$3|$3]].\n\nLa razona donada par $3 es $2", + "cantcreateaccount-range-text": "La crea de contas de adirijes IP en la estende $1, cual inclui tua adirije IP ($4), ia es impedida par [[User:$3|$3]].\n\nLa razona donada par $3 es $2", + "viewpagelogs": "Mostra rejistras per esta paje", + "nohistory": "Esta paje ave no istoria de editas.", + "currentrev": "Revisa la plu resente", "currentrev-asof": "Revisa la plu resente de $1", "revisionasof": "Revisa de $1", - "revision-info": "Revisa de $1 par $2", - "previousrevision": "← Revisa presedente", + "revision-info": "Revisa de $1 par {{GENDER:$6|$2}}$7", + "previousrevision": "← Revisa plu vea", "nextrevision": "Revisa plu nova →", "currentrevisionlink": "Revisa la plu resente", "cur": "aora", - "next": "seguente", - "last": "dife", + "next": "seg", + "last": "pres", "page_first": "prima", "page_last": "final", - "histlegend": "Eleje de diferes: Marca la caxas de la revisas cual tu vole compara. Alora presa la tecla de entra, o clica la boton a su.
    \nLegend: ({{int:cur}}) = compara con la revisa la plu resente, ({{int:last}}) = compara con la revisa presedente, {{int:minoreditletter}} = edita minor.", + "histlegend": "Eleje de diferes: Marca la caxas de la revisas cual tu vole compara. Alora presa la tecla de entra, o clica la boton a su.
    \nEsplica: ({{int:cur}}) = compara con la revisa la plu resente, ({{int:last}}) = compara con la revisa presedente, {{int:minoreditletter}} = edita minor.", "history-fieldset-title": "Xerca revisas", - "histfirst": "la plu vea", - "histlast": "la plu nova", - "historysize": "({{PLURAL:$1|1 otuple|$1 otuples}})", + "history-show-deleted": "Sola revisas sutraeda", + "histfirst": "la plu veas", + "histlast": "la plu novas", + "historysize": "({{PLURAL:$1|1 bait|$1 baites}})", "historyempty": "(vacua)", - "history-feed-title": "Istoria de revises", + "history-feed-title": "Istoria de revisas", "history-feed-description": "Istoria de revisas per esta paje en la vici", "history-feed-item-nocomment": "$1 a $2", - "rev-delundel": "mostra/asconde", + "history-feed-empty": "La paje solisitada no esiste.\nCisa on ia sutrae lo de la vici o ia renomi lo.\nProba [[Special:Search|xerca]] pajes nova pertinente en la vici.", + "history-edit-tags": "Edita eticetas de revisas elejeda", + "rev-deleted-comment": "(resoma sutraeda)", + "rev-deleted-user": "(nom de usor sutraeda)", + "rev-deleted-event": "(detalias de rejistra sutraeda)", + "rev-deleted-user-contribs": "[nom de usor o adirije IP sutraeda - edita es ascondeda de contribuis]", + "rev-deleted-text-permission": "Esta revisa de la paje es sutraeda.\nDetalias es trovable en la [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rejistra de sutraes].", + "rev-suppressed-text-permission": "Esta revisa de la paje es supresada.\nDetalias es trovable en la [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rejistra de supresas].", + "rev-deleted-text-unhide": "Esta revisa de la paje es sutraeda.\nDetalias es trovable en la [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rejistra de sutraes].\nTu pote ancora [$1 regarda esta revisa] si tu desira continua.", + "rev-suppressed-text-unhide": "Esta revisa de la paje es supresada.\nDetalias es trovable en la [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rejistra de supresas].\nTu pote ancora [$1 regarda esta revisa] si tu desira continua.", + "rev-deleted-text-view": "Esta revisa de la paje es sutraeda.\nTu pote regarda lo; detalias es trovable en la [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rejistra de sutraes].", + "rev-suppressed-text-view": "Esta revisa de la paje es supresada.\nTu pote regarda lo; detalias es trovable en la [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rejistra de supresas].", + "rev-deleted-no-diff": "Tu no pote regarda esta difere, car un de la revisas es sutraeda.\nDetalias es trovable en la [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rejistra de sutraes].", + "rev-suppressed-no-diff": "Tu no pote regarda esta difere, car un de la revisas es supresada.", + "rev-deleted-unhide-diff": "Un de la revisas de esta difere es sutraeda.\nDetalias es trovable en la [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rejistra de sutraes].\nTu pote ancora [$1 regarda esta revisa] si tu desira continua.", + "rev-suppressed-unhide-diff": "Un de la revisas de esta difere es supresada.\nDetalias es trovable en la [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rejistra de supresas].\nTu pote ancora [$1 regarda esta revisa] si tu desira continua.", + "rev-deleted-diff-view": "Un de la revisas de esta difere es sutraeda.\nTu pote regarda esta difere; detalias es trovable en la [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rejistra de sutraes].", + "rev-suppressed-diff-view": "Un de la revisas de esta difere es sutraeda.\nTu pote regarda esta difere; detalias es trovable en la [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rejistra de sutraes].", + "rev-delundel": "cambia vidablia", "rev-showdeleted": "mostra", + "revisiondelete": "Sutrae/desutrae revisas", + "revdelete-nooldid-title": "Revisa spesifada es nonvalida", + "revdelete-nooldid-text": "O tu no ia spesifa a cual revisa tu vole aplica esta funsiona, o la revisa spesifada no esiste, o tu atenta asconde la revisa presente.", + "revdelete-no-file": "La fix spesifada no esiste.", + "revdelete-show-file-confirm": "Esce tu es serta ce tu vole regarda un revisa sutraeda de la fix \"$1\" de $2 a $3?", "revdelete-show-file-submit": "Si", + "revdelete-selected-text": "{{PLURAL:$1|Revisa|Revisas}} elejeda de [[:$2]]:", + "revdelete-selected-file": "{{PLURAL:$1|Revisa|Revisas}} elejeda de fix de [[:$2]]:", + "logdelete-selected": "{{PLURAL:$1|Entrada|Entradas}} elejeda de rejistra:", + "revdelete-text-text": "Revisas sutraeda va apare ancora en la istoria de paje, ma partes de sua contenida va es nonasedable per la publica.", + "revdelete-text-file": "Revisas sutraeda de un fix va apare ancora en la istoria de paje, ma partes de sua contenida va es nonasedable per la publica.", + "logdelete-text": "Entradas sutraeda va apare ancora en la rejistras, ma partes de sua contenida va es nonasedable per la publica.", + "revdelete-text-others": "Otra dirijores va pote ancora asede la contenida ascondeda e desutrae lo, estra si plu restrinjes es aplicada.", + "revdelete-confirm": "Per favore, confirma ce tu intende fa esta, ce tu comprende la efetos, e ce tu ata longo [[{{MediaWiki:Policy-url}}|la politica]].", + "revdelete-suppress-text": "Supresas debe es usada sola en la casos seguente:\n* informas cisa malacusante\n* informas personal cual no conveni\n:* adirijes e numeros telefonal de casa, numeros de identia nasional, etc.", + "revdelete-legend": "Defini restrinjes de vidablia", + "revdelete-hide-text": "Testo de revisa", + "revdelete-hide-image": "Asconde contenida de fix", + "revdelete-hide-name": "Asconde nom e parametres", + "revdelete-hide-comment": "Resoma de edita", + "revdelete-hide-user": "Nom o adirije IP de editor", + "revdelete-hide-restricted": "Supresa datos de dirijores, no sola de otras", + "revdelete-radio-same": "(no cambia)", "revdelete-radio-set": "Ascondeda", "revdelete-radio-unset": "Vidable", + "revdelete-suppress": "Supresa datos de dirijores, no sola de otras", + "revdelete-unsuppress": "Sutrae restrinjes de revisas restorada", + "revdelete-log": "Razona:", + "revdelete-submit": "Aplica a {{PLURAL:$1|revisa|revisas}} elejeda", + "revdelete-success": "La vidablia de la revisa ia es cambiada.", + "revdelete-failure": "La vidablia de la revisa no ia pote es cambiada:\n$1", + "logdelete-success": "La vidablia de la rejistra es cambiada.", + "logdelete-failure": "La vidablia de la revisa no ia pote es cambiada:\n$1", + "revdel-restore": "cambia vidablia", "pagehist": "Istoria de paje", "deletedhist": "Istoria sutraeda", - "mergelog": "Fusa arcivo", + "revdelete-hide-current": "Era en asconde la entrada de $2, $1: Esta es la revisa presente.\nOn no pote asconde lo.", + "revdelete-show-no-access": "Era en mostra la entrada de $2, $1: On ia marca esta entrada como \"restrinjeda\".\nTu no pote asede lo.", + "revdelete-modify-no-access": "Era en altera la entrada de $2, $1: On ia marca esta entrada como \"restrinjeda\".\nTu no pote asede lo.", + "revdelete-modify-missing": "Era en altera la entrada con numero $1: Lo manca de la banco de datos!", + "revdelete-no-change": "Avisa: La entrada de $2, $1 ia ave ja la vidablia solisitada.", + "revdelete-concurrent-change": "Era en altera la entrada de $2, $1: Lo pare ce un otra usor ia cambia sua state en cuando tu ia atenta altera lo.\nRegarda la rejistras, per favore.", + "revdelete-only-restricted": "Era en asconde la entrada de $2, $1: Tu no pote supresa entradas de la regarda de dirijores si tu no eleje ance un de la otra posibles de vidablia.", + "revdelete-reason-dropdown": "*Razonas comun de sutrae\n** Viole de direto de autor\n** Comenta o informa personal cual no conveni\n** Nom de usor cual no conveni\n** Informas cisa malacusante", + "revdelete-otherreason": "Otra/plu razona:", + "revdelete-reasonotherlist": "Otra razona", + "revdelete-edit-reasonlist": "Edita razonas de sutrae", + "revdelete-offender": "Autor de revisa:", + "suppressionlog": "Rejistra de supresas", + "suppressionlogtext": "A su es un lista de sutraes e impedis cual envolve contenida ascondeda de dirijores.\nVide la [[Special:BlockList|lista de impedis]] per la proibis e impedis cual es ativa a presente.", + "mergehistory": "Fusa istorias de paje", + "mergehistory-header": "Esta paje permete ce tu fusa revisas de la istoria de un paje fontal con un paje plu nova.\nSerti ce esta cambia va manteni la continua istorial de pajes.", + "mergehistory-box": "Fusa revisas de du pajes:", + "mergehistory-from": "Paje fontal:", + "mergehistory-into": "Paje destinal:", + "mergehistory-list": "Istoria fusable de editas", + "mergehistory-merge": "La revisas seguente de [[:$1]] pote es fusada con [[:$2]].\nUsa la colona de botones de radio per fusa sola la revisas creada a e ante la tempo spesifada.\nNota ce si tu usa la lias de naviga, esta colona va es reinisiada.", + "mergehistory-go": "Mostra editas fusable", + "mergehistory-submit": "Fusa revisas", + "mergehistory-empty": "No revisas pote es fusada.", + "mergehistory-done": "$3 {{PLURAL:$3|revisa|revisas}} de $1 ia es fusada con [[:$2]].", + "mergehistory-fail": "La fusa de istoria no pote aveni. Per favore, reesamina la parametres de paje e tempo.", + "mergehistory-fail-bad-timestamp": "La indica de ora no es valida.", + "mergehistory-fail-invalid-source": "La paje fontal no es valida.", + "mergehistory-fail-invalid-dest": "La pajes destinal no es valida.", + "mergehistory-fail-no-change": "La fusa de istoria ia fusa no revisas. Per favore, reesamina la parametres de paje e tempo.", + "mergehistory-fail-permission": "Tua permetes no sufisi per fusa istoria.", + "mergehistory-fail-self-merge": "La pajes fontal e destinal es la mesma.", + "mergehistory-fail-timestamps-overlap": "La revisas fontal inclui o segue la revisas destinal.", + "mergehistory-fail-toobig": "La fusa de istoria no pote aveni car lo ta move plu ca la masima de $1 {{PLURAL:$1|revisa|revisas}}.", + "mergehistory-no-source": "La paje fontal $1 no esiste.", + "mergehistory-no-destination": "La paje destinal $1 no esiste.", + "mergehistory-invalid-source": "La paje fontal debe es un titulo valida.", + "mergehistory-invalid-destination": "La paje destinal debe es un titulo valida.", + "mergehistory-autocomment": "[[:$1]] ia es fusada con [[:$2]]", + "mergehistory-comment": "[[:$1]] ia es fusada con [[:$2]]: $3", + "mergehistory-same-destination": "La pajes fontal e destinal no pote es la mesma.", + "mergehistory-reason": "Razona:", + "mergelog": "Rejistra de fusas", + "revertmerge": "Desfusa", + "mergelogpagetext": "A su es un lista de la fusas la plu resente de la istoria de un paje con un otra.", "history-title": "Istoria de revisas de \"$1\"", "difference-title": "Difere entre revisas de \"$1\"", + "difference-title-multipage": "Difere entre pajes \"$1\" e \"$2\"", + "difference-multipage": "(Difere entre pajes)", "lineno": "Linia $1:", "compareselectedversions": "Compara revisas elejeda", + "showhideselectedversions": "Cambia vidablia de revisas elejeda", "editundo": "desfa", "diff-empty": "(No diferes)", - "diff-multi-sameuser": "({{PLURAL:$1|Un revisa media|$1 revisas media}} par la mesma usor no es mostrada)", - "diff-multi-otherusers": "({{PLURAL:$1|Un revisa media|$1 revisas media}} par {{PLURAL:$2|un otra usor|$2 usores}} no es mostrada)", - "searchresults": "Trovadas", - "searchresults-title": "Trovadas per \"$1\"", - "prevn": "{{PLURAL:$1|$1}} presedente", - "nextn": "{{PLURAL:$1|$1}} seguente", + "diff-multi-sameuser": "({{PLURAL:$1|Un revisa|$1 revisas}} media par la mesma usor no es mostrada)", + "diff-multi-otherusers": "({{PLURAL:$1|Un revisa|$1 revisas}} media par {{PLURAL:$2|un otra usor|$2 usores}} no es mostrada)", + "diff-multi-manyusers": "({{PLURAL:$1|Un revisa|$1 revisas}} media par plu ca $2 {{PLURAL:$2|usor|$2 usores}} no es mostrada)", + "difference-missing-revision": "{{PLURAL:$2|Un revisa|$2 revisas}} de esta difere ($1) no ia es trovada.\n\nEsta es usual causada par segue un lia nonfresca de istoria a un paje cual on ia sutrae.\nDetalias es trovable en la [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rejistra de sutraes].", + "searchresults": "Resultas de xerca", + "searchresults-title": "Resultas de xerca \"$1\"", + "titlematches": "Trovadas en titulo de paje", + "textmatches": "Trovadas en testo de paje", + "notextmatches": "No resultas trovada", + "prevn": "{{PLURAL:$1 presedente|$1 presedentes}}", + "nextn": "{{PLURAL:$1 seguente|$1 seguentes}}", + "prev-page": "paje presedente", + "next-page": "paje seguente", "prevn-title": "$1 {{PLURAL:$1|resulta|resultas}} presedente", "nextn-title": "$1 {{PLURAL:$1|resulta|resultas}} seguente", "shown-title": "Mostra $1 {{PLURAL:$1|resulta|resultas}} en cada paje", - "viewprevnext": "Mostra ($1 {{int:pipe-separator}} $2) ($3)", - "searchmenu-exists": "Un paje nomida \"[[:$1]]\" esiste en esta vici. {{PLURAL:$2|0=|Vide ance la otra trovadas.}}", - "searchmenu-new": "Crea la paje \"[[:$1]]\" en esta vici! {{PLURAL:$2|0=|Vide ance la paje trovada par tua xerca.|Vide ance la pajes trovada par tua xerca.}}", + "viewprevnext": "Regarda ($1 {{int:pipe-separator}} $2) ($3)", + "searchmenu-exists": "Un paje nomida \"[[:$1]]\" esiste en esta vici. {{PLURAL:$2|0=|Vide ance la otra resultas trovada.}}", + "searchmenu-new": "Crea la paje \"[[:$1]]\" en esta vici! {{PLURAL:$2|0=|Vide ance la paje trovada par tua xerca.|Vide ance la resultas trovada par tua xerca.}}", "searchprofile-articles": "Pajes de contenida", - "searchprofile-images": "Multimediales", + "searchprofile-images": "Multimedial", "searchprofile-everything": "Tota", "searchprofile-advanced": "Avansada", "searchprofile-articles-tooltip": "Xerca en $1", "searchprofile-images-tooltip": "Xerca fixes", "searchprofile-everything-tooltip": "Xerca en la contenida intera (incluinte pajes de discute)", - "searchprofile-advanced-tooltip": "Spesifa spasios de nom", + "searchprofile-advanced-tooltip": "Xerca en spasios de nom spesifada", "search-result-size": "$1 ({{PLURAL:$2|1 parola|$2 parolas}})", - "search-result-category-size": "{{PLURAL:$1|1 membro|$1 membros}} ({{PLURAL:$2|1 sucategoria|$2 sucategorias}}, {{PLURAL:$3|1 arcivo|$3 arcivos}})", + "search-result-category-size": "{{PLURAL:$1|1 membro|$1 membros}} ({{PLURAL:$2|1 sucategoria|$2 sucategorias}}, {{PLURAL:$3|1 fix|$3 fixes}})", "search-redirect": "(redirije de $1)", "search-section": "(parte $1)", - "search-file-match": "(coresponde a la contenida de fix)", - "search-suggest": "Esce tu ia intende: $1", + "search-category": "(categoria $1)", + "search-file-match": "(trovada en contenida de fix)", + "search-suggest": "Esce tu ia vole dise: $1", + "search-rewritten": "Resultas es mostrada per $1. Xerca $2 en loca.", + "search-interwiki-caption": "Resultas de projetas relatada", "search-interwiki-default": "Resultas de $1:", "search-interwiki-more": "(plu)", + "search-interwiki-more-results": "plu resultas", + "search-relatedarticle": "Relatada", + "searchrelated": "relatada", "searchall": "tota", + "showingresults": "Asta {{PLURAL:$1|1 resulta|$1 resultas}} es mostrada a su, comensante con numero $2.", + "showingresultsinrange": "Asta {{PLURAL:$1|1 resulta|$1 resultas}} es mostrada a su, de numero $2 asta numero $3.", "search-showingresults": "{{PLURAL:$4|Resulta $1 de $3|Resultas $1 - $2 de $3}}", "search-nonefound": "No resultas ia es trovada per la xerca.", + "search-nonefound-thiswiki": "No resultas ia es trovada per la xerca en esta pajeria.", + "powersearch-legend": "Xerca avansada", + "powersearch-ns": "Xerca en spasios de nom:", + "powersearch-togglelabel": "Eleje:", "powersearch-toggleall": "Tota", "powersearch-togglenone": "Zero", - "preferences": "Preferis", + "powersearch-remember": "Memori la eleje per xercas futur", + "search-external": "Xerca esterna", + "searchdisabled": "Xercas de {{SITENAME}} no es disponable.\nTu pote usa Google per xerca entretempo.\nNota ce sua catalogos de la contenida de {{SITENAME}} es cisa nonfresca.", + "search-error": "Un era ia aveni en xerca: $1", + "search-warning": "Un averti ia aveni en xerca: $1", + "preferences": "Preferes", "mypreferences": "Preferes", + "prefs-edits": "Cuantia de editas:", + "prefsnologintext2": "Per cambia tua preferes, autentici, per favore.", + "prefs-skin": "Pel", "skin-preview": "Previde", + "datedefault": "No prefere", + "prefs-labs": "Capasias esperimental", + "prefs-user-pages": "Pajes de usor", + "prefs-personal": "Profil de usor", + "prefs-rc": "Cambias resente", + "prefs-watchlist": "Pajes monitorida", + "prefs-editwatchlist": "Edita la lista monitorida", + "prefs-editwatchlist-label": "Edita entradas en tua lista monitorida", + "prefs-editwatchlist-edit": "Regarda e sutrae titulos en tua lista monitorida", + "prefs-editwatchlist-raw": "Edita tua lista cru de pajes monitorida", + "prefs-editwatchlist-clear": "Vacui tua lista monitorida", + "prefs-watchlist-days": "Mostra en lista monitorida per cuanto dias:", + "prefs-watchlist-days-max": "Masima $1 {{PLURAL:$1|dia|dias}}", + "prefs-watchlist-edits": "Cuantia masima de cambias mostrada en lista monitorida", + "prefs-watchlist-edits-max": "Limita: 1000", + "prefs-watchlist-token": "Marca de lista monitorida", + "prefs-misc": "Diversa", + "prefs-resetpass": "Cambia clave", + "prefs-changeemail": "Cambia o sutrae adirije de eposta", + "prefs-setemail": "Defini un adirije de eposta", + "prefs-email": "Elejes de eposta", + "prefs-rendering": "Aspeta", "saveprefs": "Fisa", + "restoreprefs": "Reinisia tota preferes (en tota partes)", + "prefs-editing": "Edita", "searchresultshead": "Xerca", - "savedprefs": "Tu preferis es fisada", + "stub-threshold": "Limita per formati de lias a jermes ($1):", + "stub-threshold-sample-link": "esemplo", + "stub-threshold-disabled": "Descomutada", + "recentchangesdays": "Mostra cambias resente per cuanto dias:", + "recentchangesdays-max": "Masima $1 {{PLURAL:$1|dia|dias}}", + "recentchangescount": "Mostra inisial cuanto editas:", + "prefs-help-recentchangescount": "Esta inclui cambias resente, istorias de paje e rejistras.", + "prefs-help-watchlist-token2": "Esta es la clave secreta per la flue ueb de tua lista monitorida.\nCualcun ci sabe lo va pote leje tua lista monitorida, donce no comparti lo.\nSi tu nesesa, [[Special:ResetTokens|tu pote reinisia lo]].", + "savedprefs": "Tu preferes ia es fisada.", + "savedrights": "La grupos de usor de {{GENDER:$1|$1}} ia es fisada.", + "timezonelegend": "Zona de ora:", + "localtime": "Ora local:", + "timezoneuseserverdefault": "Implicada par vici ($1)", + "timezoneuseoffset": "Otra (spesifa un desloca)", + "servertime": "Ora de servador:", + "guesstimezone": "Completi par surfador", "timezoneregion-africa": "Africa", "timezoneregion-america": "America", "timezoneregion-antarctica": "Antartica", @@ -501,36 +999,270 @@ "timezoneregion-europe": "Europa", "timezoneregion-indian": "Mar Indian", "timezoneregion-pacific": "Mar Pasifica", + "allowemail": "Permete epostas de otra usores", + "email-blacklist-label": "Proibi esta usores de envia epostas a me:", + "prefs-searchoptions": "Xerca", + "prefs-namespaces": "Spasios de nom", + "default": "inisial", "prefs-files": "Fixes", + "prefs-custom-css": "CSS personal", + "prefs-custom-js": "JavaScript personal", + "prefs-common-css-js": "CSS/JavaScript comun per tota peles:", + "prefs-reset-intro": "Tu pote usa esta paje per reinisia tua preferes a la inisiales per esta pajeria.\nTu no pote desfa esta.", + "prefs-emailconfirm-label": "Confirma de eposta:", "youremail": "Eposta:", "username": "{{GENDER:$1|Nom de usor}}:", "prefs-memberingroups": "{{GENDER:$2|Membro}} de {{PLURAL:$1|grupo|grupos}}:", + "group-membership-link-with-expiry": "$1 (asta $2)", + "prefs-registration": "Tempo de rejistra:", "yourrealname": "Nom vera:", "yourlanguage": "Lingua:", - "yournick": "Suscrive:", - "yourgender": "Como tu prefere ce tu es descriveda?", - "gender-male": "El edita pajes de wiki", - "gender-female": "El edita pajes de wiki", + "yourvariant": "Varia de lingua de contenida:", + "prefs-help-variant": "La varia o ortografia en cual tu prefere mostra la pajes de contenida de esta vici.", + "yournick": "Suscrive nova:", + "prefs-help-signature": "Comentas a pajes de discute debe es suscriveda con \"~~~~\", cual va es convertida a tua suscrive e un indica de data e ora.", + "badsig": "Suscrive cru nonvalida.\nEsamina la eticetas HTML.", + "badsiglength": "Tua suscrive es tro longa.\nLo debe conteni no plu ca {{PLURAL:$1|sinia|sinias}}.", + "yourgender": "Como tu prefere ce on descrive tu?", + "gender-unknown": "Cuando lo refere a tu, la program va usa parolas de jenero neutra, sempre cuando posible", + "gender-male": "El es mas", + "gender-female": "El es fema", + "prefs-help-gender": "La defini de esta prefere es nonobligante.\nLa program consulta lo per usa la jenero gramatical conveninte cuando lo refere a tu en comunicas a tu o otras.\nEsta informa va es publica.", "email": "Eposta", - "prefs-help-realname": "Tu nom vera no es obligada, ma si tu vole dona tu nom vera, el va es usada per onora tu per tu labora.\n\nTu no debe entra tua nom vera. Ma si tu entra tua noma vera, lo pote es usada per atribui tua laboras a tu.", + "prefs-help-realname": "Tua nom vera es nonobligante.\nSi tu dona lo, lo va es usada per atribui tua laboras a tu.", + "prefs-help-email": "La adirije de eposta es nonobligante, ma lo es nesesada per reinisia tua clave, en la caso ce tu oblida lo.", + "prefs-help-email-others": "Tu pote ance eleje ce otras contata tu par eposta par un lia en tua paje de usor o discute.\nTua adirije de eposta no es revelada cuando otra usores contata tu.", + "prefs-help-email-required": "Adirije de eposta es nesesada.", + "prefs-info": "Informas fundal", + "prefs-i18n": "Internasionali", "prefs-signature": "Suscrive", - "userrights": "Dirije de la diretos de usores", - "saveusergroups": "Fisa la grupo de usores", + "prefs-dateformat": "Forma de data", + "prefs-timeoffset": "Desloca de ora", + "prefs-advancedediting": "Elejes jeneral", + "prefs-editor": "Editador", + "prefs-preview": "Previde", + "prefs-advancedrc": "Elejes avansada", + "prefs-opt-out": "No partisipa en bonis", + "prefs-advancedrendering": "Elejes avansada", + "prefs-advancedsearchoptions": "Elejes avansada", + "prefs-advancedwatchlist": "Elejes avansada", + "prefs-displayrc": "Elejes de mostra", + "prefs-displaywatchlist": "Elejes de mostra", + "prefs-tokenwatchlist": "Marca", + "prefs-diffs": "Diferes", + "prefs-help-prefershttps": "Esta prefere va deveni ativa pos tua autentici seguente.", + "prefswarning-warning": "Tu ia fa cambias a tua preferes cual ancora no es fisada.\nSi tu parti de esta paje sin clica \"$1\", tua preferes no va es cambiada.", + "prefs-tabs-navigation-hint": "Aviseta: Tu pote usa la teclas de flexa sinistra e destra per naviga entre la oretas en la lista de oretas.", + "userrights": "Diretos de usores", + "userrights-lookup-user": "Eleje un usor", + "userrights-user-editname": "Tape un nom de usor:", + "editusergroup": "Carga grupos de usor", + "editinguser": "Cambiante diretos de {{GENDER:$1|usor}} [[User:$1|$1]] $2", + "viewinguserrights": "Regardante diretos de {{GENDER:$1|usor}} [[User:$1|$1]] $2", + "userrights-editusergroup": "Edita grupos de {{GENDER:$1|usor}}", + "userrights-viewusergroup": "Regarda grupos de {{GENDER:$1|usor}}", + "saveusergroups": "Fisa la grupo de {{GENDER:$1|usor}}", + "userrights-groupsmember": "Membro de:", + "userrights-groupsmember-auto": "Membro implicada de:", + "userrights-groups-help": "Tu pote cambia la grupos a cual esta usor parteni:\n* Un caxa marcada indica ce la usor es en acel grupo.\n* Un caxa nonmarcada indica ce la usor no es en acel grupo.\n* Un * indica ce tu no pote sutrae la grupo pos ajunta lo, o la reversa.\n* Un # indica ce tu pote sola retarda la tempo de desvalidi de esta membria de grupo; tu no pote avansa lo.", + "userrights-reason": "Razona:", + "userrights-no-interwiki": "Tu no es permeteda a edita diretos de usor en otra vicis.", + "userrights-nodatabase": "Banco de datos $1 no esiste o no es local.", + "userrights-changeable-col": "Grupos cual tu pote cambia", + "userrights-unchangeable-col": "Grupos cual tu no pote cambia", + "userrights-expiry-current": "Desvalidi a $1", + "userrights-expiry-none": "No desvalidi", + "userrights-expiry": "Desvalidi:", + "userrights-expiry-existing": "Tempo esistente de desvalidi: $3, $2", + "userrights-expiry-othertime": "Otra tempo:", + "userrights-expiry-options": "1 dia:1 day,1 semana:1 week,1 mense:1 month,3 menses:3 months,6 menses:6 months,1 anio:1 year", + "userrights-invalid-expiry": "La tempo de desvalidi per grupo \"$1\" es nonvalida.", + "userrights-expiry-in-past": "La tempo de desvalidi per grupo \"$1\" ia pasa ja.", + "userrights-cannot-shorten-expiry": "Tu no pote avansa la desvalidi de membria en grupo \"$1\". Sola usores permeteda a ajunta e sutrae esta grupo pote avansa tempos de desvalidi.", + "userrights-conflict": "Desacorda de cambias de diretos de usor! Per favore, revisa e confirma tua cambias.", "group": "Grupo:", "group-user": "Usores", + "group-autoconfirmed": "Usores autoconfirmada", "group-bot": "Botes", "group-sysop": "Dirijores", + "group-bureaucrat": "Burocratas", + "group-suppress": "Supresores", "group-all": "(tota)", "group-user-member": "{{GENDER:$1|usor}}", + "group-autoconfirmed-member": "{{GENDER:$1|usor autoconfirmada}}", + "group-bot-member": "{{GENDER:$1|bot}}", + "group-sysop-member": "{{GENDER:$1|dirijor}}", + "group-bureaucrat-member": "{{GENDER:$1|burocrata}}", + "group-suppress-member": "{{GENDER:$1|supresor}}", "grouppage-user": "{{ns:project}}:Usores", + "grouppage-autoconfirmed": "{{ns:project}}:Usores autoconfirmada", "grouppage-bot": "{{ns:project}}:Botes", "grouppage-sysop": "{{ns:project}}:Dirijores", - "right-writeapi": "Usa de la api de scrive", - "newuserlogpage": "Arcivo de creas de usor", - "rightslog": "Arcivo de diretos de usor", + "grouppage-bureaucrat": "{{ns:project}}:Burocratas", + "grouppage-suppress": "{{ns:project}}:Supresa", + "right-read": "Leje pajes", + "right-edit": "Edita pajes", + "right-createpage": "Crea pajes (cual no es pajes de discute)", + "right-createtalk": "Crea pajes de discute", + "right-createaccount": "Crea contas nova de usor", + "right-autocreateaccount": "Autentici automata con un conta de usor esterna", + "right-minoredit": "Marca editas como minor", + "right-move": "Move pajes", + "right-move-subpages": "Move pajes con sua supajes", + "right-move-rootuserpages": "Move pajes de usor fundal", + "right-move-categorypages": "Move pajes de categoria", + "right-movefile": "Move fixes", + "right-suppressredirect": "No crea redirijes de pajes orijinal cuando pajes move", + "right-upload": "Carga fixes", + "right-reupload": "Suprascrive fixes esistente", + "right-reupload-own": "Suprascrive fixes esistente cual tu mesma ia carga", + "right-reupload-shared": "Suprascrive local fixes en la arciveria de medias compartida", + "right-upload_by_url": "Carga fixes de un URL", + "right-purge": "Vacui la prememoria de pajeria per un paje sin confirma", + "right-autoconfirmed": "No es afetada par limitas IP de rapidia", + "right-bot": "Es tratada como un prosede automatida", + "right-nominornewtalk": "No fa ce editas minor a pajes de discute provoca la avisa de mesajes nova", + "right-apihighlimits": "Usa limitas plu alta en solisitas API", + "right-writeapi": "Usa la API de scrive", + "right-delete": "Sutrae pajes", + "right-bigdelete": "Sutrae pajes con istorias grande", + "right-deletelogentry": "Sutrae e desutrae entradas spesifada de rejistras", + "right-deleterevision": "Sutrae e desutrae revisas spesifada de pajes", + "right-deletedhistory": "Regarda entradas sutraeda de istoria, sin sua testo asosiada", + "right-deletedtext": "Regarda testo sutraeda e cambias entre revisas sutraeda", + "right-browsearchive": "Xerca en pajes sutraeda", + "right-undelete": "Desutrae un paje", + "right-suppressrevision": "Regarda, asconde e desasconde revisas spesifada de pajes de cualce usor", + "right-viewsuppressed": "Regarda revisas ascondeda de cualce usor", + "right-suppressionlog": "Regarda rejistras privata", + "right-block": "Impedi otra usores de edita", + "right-blockemail": "Impedi un usor de envia eposta", + "right-hideuser": "Impedi un nom de usor, ascondente lo de la publica", + "right-ipblock-exempt": "Sircoveni impedis de IP, autoimpedis e impedis de estende", + "right-unblockself": "Desimpedi tu", + "right-protect": "Cambia niveles de proteje e edita pajes cascadin protejeda", + "right-editprotected": "Edita pajes protejeda como \"{{int:protect-level-sysop}}\"", + "right-editsemiprotected": "Edita pajes protejeda como \"{{int:protect-level-autoconfirmed}}\"", + "right-editcontentmodel": "Edita la model de contenida de un paje", + "right-editinterface": "Edita la interfas de usor", + "right-editusercss": "Edita la fixes CSS de otra usores", + "right-edituserjs": "Edita la fixes JavaScript de otra usores", + "right-editmyusercss": "Edita tua propre fixes de CSS personal", + "right-editmyuserjs": "Edita tua propre fixes de JavaScript personal", + "right-viewmywatchlist": "Regarda tua propre lista monitorida", + "right-editmywatchlist": "Edita tua propre lista monitorida. Nota ce alga atas va ajunta pajes an sin esta direto.", + "right-viewmyprivateinfo": "Regarda tua datos privata (pe adirije de eposta, nom vera)", + "right-editmyprivateinfo": "Edita tua datos privata (pe adirije de eposta, nom vera)", + "right-editmyoptions": "Edita tua propre preferes", + "right-rollback": "Reversa rapida la editas de la usor la plu resente ci ia edita un paje spesifada", + "right-markbotedits": "Marca editas reversada como editas de bot", + "right-noratelimit": "No es afetada par limitas de rapidia", + "right-import": "Emporta pajes de otra vicis", + "right-importupload": "Emporta pajes de un carga de fix", + "right-patrol": "Marca editas de otras como patruliada", + "right-autopatrol": "Fa ce tua propre editas es automata marcada como patruliada", + "right-patrolmarks": "Vide marcas de patrulia en cambias resente", + "right-unwatchedpages": "Vide un lista de pajes nonmonitorida", + "right-mergehistory": "Fusa la istoria de pajes", + "right-userrights": "Edita tota diretos de usor", + "right-userrights-interwiki": "Edita diretos de usores en otra vicis", + "right-siteadmin": "Clavi e desclavi la banco de datos", + "right-override-export-depth": "Esporta pajes incluinte pajes liada asta profondia de 5", + "right-sendemail": "Envia eposta a otra usores", + "right-managechangetags": "Crea e (des)ativi [[Special:Tags|eticetas]]", + "right-applychangetags": "Aplica [[Special:Tags|eticetas]] con tua propre cambias", + "right-changetags": "Ajunta e sutrae [[Special:Tags|eticetas]] acaso a revisas individua e entradas de rejistra", + "right-deletechangetags": "Sutrae [[Special:Tags|eticetas]] de la banco de datos", + "grant-generic": "Paco de diretos \"$1\"", + "grant-group-page-interaction": "Interata con pajes", + "grant-group-file-interaction": "Interata con medias", + "grant-group-watchlist-interaction": "Interata con tua lista monitorida", + "grant-group-email": "Envia epostas", + "grant-group-high-volume": "Atas con cuantia alta", + "grant-group-customization": "Personali e preferes", + "grant-group-administration": "Fa atas dirijal", + "grant-group-private-information": "Asede datos privata sur tu", + "grant-group-other": "Atas diversa", + "grant-blockusers": "Impedi e desimpedi usores", + "grant-createaccount": "Crea contas", + "grant-createeditmovepage": "Crea, edita e move pajes", + "grant-delete": "Sutrae pajes, revisas e entradas de rejistra", + "grant-editinterface": "Edita la spasio de nom MediaWiki e CSS/JavaScript personal", + "grant-editmycssjs": "Edita tua CSS/JavaScript personal", + "grant-editmyoptions": "Edita tua preferes de usor", + "grant-editmywatchlist": "Edita tua lista monitorida", + "grant-editpage": "Edita pajes esistente", + "grant-editprotected": "Edita pajes protejeda", + "grant-highvolume": "Edita con cuantia alta", + "grant-oversight": "Asconde usores e supresa revisas", + "grant-patrol": "Patrulia cambias de pajes", + "grant-privateinfo": "Asede informas privata", + "grant-protect": "Proteje e desproteje pajes", + "grant-rollback": "Reversa cambias de pajes", + "grant-sendemail": "Envia eposta a otra usores", + "grant-uploadeditmovefile": "Carga, suprascrive e move fixes", + "grant-uploadfile": "Carga fixes nova", + "grant-basic": "Diretos fundal", + "grant-viewdeleted": "Regarda fixes e pajes sutraeda", + "grant-viewmywatchlist": "Regarda tua lista monitorida", + "grant-viewrestrictedlogs": "Regarda entradas restrinjeda de rejistras", + "newuserlogpage": "Rejistra de creas de usor", + "newuserlogpagetext": "Esta es un rejistra de creas de usor.", + "rightslog": "Rejistra de diretos de usor", + "rightslogtext": "Esta es un rejistra de cambias de diretos de usor.", + "action-read": "leje esta paje", "action-edit": "edita esta paje", + "action-createpage": "crea esta paje", + "action-createtalk": "crea esta paje de discute", "action-createaccount": "crea esta conta de usor", + "action-autocreateaccount": "crea automata esta conta de usor esterna", + "action-history": "regarda la istoria de esta paje", + "action-minoredit": "marca esta edita como minor", + "action-move": "move esta paje", + "action-move-subpages": "move esta paje e sua supajes", + "action-move-rootuserpages": "move pajes de usor fundal", + "action-move-categorypages": "move pajes de categoria", + "action-movefile": "move esta fix", + "action-upload": "carga esta fix", + "action-reupload": "suprascrive esta fix esistente", + "action-reupload-shared": "suprascrive esta fix en un arciveria compartida", + "action-upload_by_url": "carga esta fix de un URL", + "action-writeapi": "usa la API de scrive", + "action-delete": "sutrae esta paje", + "action-deleterevision": "sutrae revisas", + "action-deletelogentry": "sutrae entradas de rejistra", + "action-deletedhistory": "regarda la istoria sutraeda de pajes", + "action-deletedtext": "regarda testo de revisas sutraeda", + "action-browsearchive": "xerca en pajes sutraeda", + "action-undelete": "desutrae pajes", + "action-suppressrevision": "regarda e restora revisas ascondeda", + "action-suppressionlog": "regarda esta rejistra privata", + "action-block": "impedi esta usor de edita", + "action-protect": "cambia niveles de proteje per esta paje", + "action-rollback": "reversa rapida la editas de la usor la plu resente ci ia edita un paje spesifada", + "action-import": "emporta pajes de un otra vici", + "action-importupload": "emporta pajes de un carga de fix", + "action-patrol": "marca la editas de otras como patruliada", + "action-autopatrol": "fa ce tua editas es marcada como patruliada", + "action-unwatchedpages": "regarda la lista de pajes nonmonitorida", + "action-mergehistory": "fusa la istoria de esta paje", + "action-userrights": "edita tota diretos de usor", + "action-userrights-interwiki": "edita diretos de usores en otra vicis", + "action-siteadmin": "clavi o desclavi la banco de datos", + "action-sendemail": "envia epostas", + "action-editmyoptions": "edita tua preferes", + "action-editmywatchlist": "edita tua lista monitorida", + "action-viewmywatchlist": "regarda tua lista monitorida", + "action-viewmyprivateinfo": "regarda tua informas privata", + "action-editmyprivateinfo": "edita tua informas privata", + "action-editcontentmodel": "edita la model de contenida de un paje", + "action-managechangetags": "crea e (des)ativi eticetas", + "action-applychangetags": "aplica eticetas con tua cambias", + "action-changetags": "ajunta e sutrae eticetas acaso a revisas individua e entradas de rejistra", + "action-deletechangetags": "sutrae eticetas de la banco de datos", + "action-purge": "vacui esta paje", "nchanges": "$1 {{PLURAL:$1|cambia|cambias}}", + "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|pos tua visita la plu resente}}", "enhancedrc-history": "istoria", "recentchanges": "Cambias resente", "recentchanges-legend": "Elejes per cambias resente", @@ -544,7 +1276,130 @@ "recentchanges-label-plusminus": "La grandia de esta paje ia es cambiada par esta cuantia de baites", "recentchanges-legend-heading": "Esplica:", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (vide ance la [[Special:NewPages|lista de pajes nova]])", - "rcnotefrom": "A su {{PLURAL:$5|es la cambia|es la cambias}} de $3, $4 (mostrante asta $1).", + "recentchanges-submit": "Mostra", + "rcfilters-tag-remove": "Sutrae '$1'", + "rcfilters-legend-heading": "Lista de cortis:", + "rcfilters-other-review-tools": "Otra utiles de revisa", + "rcfilters-group-results-by-page": "Grupi resultas par paje", + "rcfilters-grouping-title": "Grupi", + "rcfilters-activefilters": "Filtros ativa", + "rcfilters-advancedfilters": "Filtros avansada", + "rcfilters-limit-title": "Mostra cuanto cambias", + "rcfilters-limit-shownum": "Mostra {{PLURAL:$1|cambia|$1 cambias}} la plu resente", + "rcfilters-days-title": "Dias resente", + "rcfilters-hours-title": "Oras resente", + "rcfilters-days-show-days": "$1 {{PLURAL:$1|dia|dias}}", + "rcfilters-days-show-hours": "$1 {{PLURAL:$1|ora|oras}}", + "rcfilters-highlighted-filters-list": "Marcada: $1", + "rcfilters-quickfilters": "Filtros fisada", + "rcfilters-quickfilters-placeholder-title": "No lias es fisada", + "rcfilters-quickfilters-placeholder-description": "Per fisa tua ajustas de filtro e reusa los en la futur, clica la icon de sinta de libro en la area \"Filtros ativa\", a su.", + "rcfilters-savedqueries-defaultlabel": "Filtros fisada", + "rcfilters-savedqueries-rename": "Renomi", + "rcfilters-savedqueries-setdefault": "Defini como filtro inisial", + "rcfilters-savedqueries-unsetdefault": "Sutrae como filtro inisial", + "rcfilters-savedqueries-remove": "Sutrae", + "rcfilters-savedqueries-new-name-label": "Nom", + "rcfilters-savedqueries-new-name-placeholder": "Descrive la intende de la filtro", + "rcfilters-savedqueries-apply-label": "Crea filtro", + "rcfilters-savedqueries-apply-and-setdefault-label": "Crea filtro inisial", + "rcfilters-savedqueries-cancel-label": "Cansela", + "rcfilters-savedqueries-add-new-title": "Fisa ajustas presente de filtro", + "rcfilters-restore-default-filters": "Restora filtros inisial", + "rcfilters-clear-all-filters": "Vacui tota filtros", + "rcfilters-show-new-changes": "Regarda cambias la plu resente", + "rcfilters-search-placeholder": "Filtri cambias resente (eleje o comensa tape)", + "rcfilters-invalid-filter": "Filtro nonvalida", + "rcfilters-empty-filter": "No filtros es ativa. Tota contribuis es mostrada.", + "rcfilters-filterlist-title": "Filtros", + "rcfilters-filterlist-whatsthis": "Como estas funsiona?", + "rcfilters-filterlist-feedbacklink": "Dona comentas sur la filtros nova (a beta)", + "rcfilters-highlightbutton-title": "Lumina resultas", + "rcfilters-highlightmenu-title": "Eleje un color", + "rcfilters-highlightmenu-help": "Eleje un color per lumina esta cualia", + "rcfilters-filterlist-noresults": "No filtros trovada", + "rcfilters-noresults-conflict": "No resultas trovada car la criterios de xerca desacorda", + "rcfilters-state-message-subset": "Esta filtro ave no efeto car sua resultas es incluida con los de la {{PLURAL:$2|filtro|filtros}} seguente, cual es plu jeneral (proba lumina per distingui lo): $1", + "rcfilters-state-message-fullcoverage": "La eleje de tota filtros en esta grupo es la mesma como la eleje de no filtros, donce esta filtro ave no efeto. La grupo inclui: $1", + "rcfilters-filtergroup-authorship": "Autores de contribuis", + "rcfilters-filter-editsbyself-label": "Cambias par tu", + "rcfilters-filter-editsbyself-description": "Tua propre contribuis.", + "rcfilters-filter-editsbyother-label": "Cambias par otras", + "rcfilters-filter-editsbyother-description": "Tota cambias estra la tuas.", + "rcfilters-filtergroup-userExpLevel": "Rejistra e esperia de usor", + "rcfilters-filter-user-experience-level-registered-label": "Autenticida", + "rcfilters-filter-user-experience-level-registered-description": "Editores autenticida.", + "rcfilters-filter-user-experience-level-unregistered-label": "Anonim", + "rcfilters-filter-user-experience-level-unregistered-description": "Editores ci no ia autentici", + "rcfilters-filter-user-experience-level-newcomer-label": "Comensores", + "rcfilters-filter-user-experience-level-newcomer-description": "Editores autenticida con min ca 10 editas e 4 dias de ativia.", + "rcfilters-filter-user-experience-level-learner-label": "Aprendores", + "rcfilters-filter-user-experience-level-learner-description": "Editores autenticida de ci sua esperia es entre \"Comensores\" e \"Usores esperiosa\".", + "rcfilters-filter-user-experience-level-experienced-label": "Usores esperiosa", + "rcfilters-filter-user-experience-level-experienced-description": "Editores autenticida con plu ca 500 editas e 30 dias de ativia.", + "rcfilters-filtergroup-automated": "Contribuis automatida", + "rcfilters-filter-bots-label": "Bot", + "rcfilters-filter-bots-description": "Editas par utiles automatida", + "rcfilters-filter-humans-label": "Umana (no bot)", + "rcfilters-filter-humans-description": "Editas par editores umana.", + "rcfilters-filtergroup-reviewstatus": "State de validi", + "rcfilters-filter-patrolled-label": "Patrulia", + "rcfilters-filter-patrolled-description": "Editas marcada como patruliada.", + "rcfilters-filter-unpatrolled-label": "Nonpatruliada", + "rcfilters-filter-unpatrolled-description": "Editas no marcada como patruliada.", + "rcfilters-filtergroup-significance": "Importa", + "rcfilters-filter-minor-label": "Editas minor", + "rcfilters-filter-minor-description": "Editas cual la autor ia descrive como minor.", + "rcfilters-filter-major-label": "Editas nonminor", + "rcfilters-filter-major-description": "Editas no descriveda como minor.", + "rcfilters-filtergroup-watchlist": "Pajes monitorida", + "rcfilters-filter-watchlist-watched-label": "Monitorida", + "rcfilters-filter-watchlist-watched-description": "Cambias a pajes en tua lista monitorida", + "rcfilters-filter-watchlist-watchednew-label": "Cambias nova monitorida", + "rcfilters-filter-watchlist-watchednew-description": "Cambias a pajes monitorida cual tu no ia visita pos la aveni de la cambias.", + "rcfilters-filter-watchlist-notwatched-label": "Nonmonitorida", + "rcfilters-filter-watchlist-notwatched-description": "Tota estra cambias a tua pajes monitorida.", + "rcfilters-filtergroup-watchlistactivity": "Ativia en pajes monitorida", + "rcfilters-filter-watchlistactivity-unseen-label": "Cambias nonvideda", + "rcfilters-filter-watchlistactivity-unseen-description": "Cambias a pajes cual tu no ia visita pos la aveni de la cambias.", + "rcfilters-filter-watchlistactivity-seen-label": "Cambias videda", + "rcfilters-filter-watchlistactivity-seen-description": "Cambias a pajes cual tu ia visita pos la aveni de la cambias.", + "rcfilters-filtergroup-changetype": "Spesie de cambia", + "rcfilters-filter-pageedits-label": "Editas de paje", + "rcfilters-filter-pageedits-description": "Editas de contenida de vici, discutes, descrives de categoria…", + "rcfilters-filter-newpages-label": "Creas de paje", + "rcfilters-filter-newpages-description": "Editas cual crea pajes nova.", + "rcfilters-filter-categorization-label": "Cambias de categoria", + "rcfilters-filter-categorization-description": "Rejistras de la ajunta o sutrae de pajes en categorias", + "rcfilters-filter-logactions-label": "Atas rejistrada", + "rcfilters-filter-logactions-description": "Atas dirijal, creas de conta, sutraes de paje, cargas…", + "rcfilters-hideminor-conflicts-typeofchange-global": "La filtro \"Editas minor\" desacorda con un o plu filtros de \"Spesie de cambia\", car alga spesies de cambia no pote es indicada como \"minor\". La filtros desacordante es marcada en la area \"Filtros ativa\", a supra.", + "rcfilters-hideminor-conflicts-typeofchange": "Alga spesies de cambia no pote es indicada como \"minor\", donce esta filtro desacorda con la filtros seguente de \"Spesie de cambia\": $1", + "rcfilters-typeofchange-conflicts-hideminor": "Esta filtro de \"Spesie de cambia\" desacorda con la filtro \"Editas minor\". Alga spesies de cambia no pote es indicada como \"minor\".", + "rcfilters-filtergroup-lastRevision": "Revisas la plu resente", + "rcfilters-filter-lastrevision-label": "Revisa la plu tarda", + "rcfilters-filter-lastrevision-description": "Sola la cambia la plu resente a un paje.", + "rcfilters-filter-previousrevision-label": "No la revisa la plu tarda", + "rcfilters-filter-previousrevision-description": "Tota cambias cual no es la \"revisa la plu tarda\".", + "rcfilters-filter-excluded": "Escluida", + "rcfilters-tag-prefix-namespace-inverted": ":no $1", + "rcfilters-exclude-button-off": "Esclui elejedas", + "rcfilters-exclude-button-on": "Escluinte elejedas", + "rcfilters-view-advanced-filters-label": "Filtros avansada", + "rcfilters-view-tags": "Editas eticetida", + "rcfilters-view-namespaces-tooltip": "Filtri resultas par spasio de nom", + "rcfilters-view-tags-tooltip": "Filtri resultas par eticetas de edita", + "rcfilters-view-return-to-default-tooltip": "Revade a menu xef de filtros", + "rcfilters-liveupdates-button": "Refrescis automata", + "rcfilters-liveupdates-button-title-on": "Descomuta refrescis automata", + "rcfilters-liveupdates-button-title-off": "Mostra cambias nova, direta cuando los aveni", + "rcfilters-watchlist-markseen-button": "Marca tota cambias como videda", + "rcfilters-watchlist-edit-watchlist-button": "Edita tua lista de pajes monitorida", + "rcfilters-watchlist-showupdated": "Cambias a pajes cual tu no ia visita pos cuando los ia aveni es en\ntesto spesa, con indicadores solida.", + "rcfilters-preference-label": "Asconde la varia bonida de Cambias Resente", + "rcfilters-preference-help": "Desfa la redesinia de interfas de 2017 e tota utiles ajuntada alora e\na pos.", + "rcnotefrom": "A su es la {{PLURAL:$5|cambia|cambias}} de $3, $4 (asta $1).", + "rclistfromreset": "Reinisia la eleje de data", "rclistfrom": "Mostra cambias nova, comensante de $2, $3", "rcshowhideminor": "$1 editas minor", "rcshowhideminor-show": "Mostra", @@ -555,23 +1410,31 @@ "rcshowhideliu": "$1 usores rejistrada", "rcshowhideliu-show": "Mostra", "rcshowhideliu-hide": "Asconde", - "rcshowhideanons": "$1 usores sin nom", + "rcshowhideanons": "$1 usores anonim", "rcshowhideanons-show": "Mostra", "rcshowhideanons-hide": "Asconde", "rcshowhidepatr": "$1 editas patruliada", + "rcshowhidepatr-show": "Mostra", + "rcshowhidepatr-hide": "Asconde", "rcshowhidemine": "$1 mea editas", "rcshowhidemine-show": "Mostra", "rcshowhidemine-hide": "Asconde", + "rcshowhidecategorization": "$1 categorias de pajes", + "rcshowhidecategorization-show": "Mostra", + "rcshowhidecategorization-hide": "Asconde", "rclinks": "Mostra la $1 cambias resente en la $2 dias presedente", - "diff": "dife", - "hist": "isto", + "diff": "dif", + "hist": "ist", "hide": "Asconde", - "show": "mostra", + "show": "Mostra", "minoreditletter": "m", "newpageletter": "N", "boteditletter": "b", - "rc_categories_any": "Cualce de la elejeda", + "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|usor|usores}} monitorinte]", + "rc_categories": "Limita de categorias (separa con \"|\"):", + "rc_categories_any": "Cualce de la elejedas", "rc-change-size-new": "$1 {{PLURAL:$1|bait|baites}} pos cambia", + "newsectionsummary": "/* $1 */ parte nova", "rc-enhanced-expand": "Mostra detalias", "rc-enhanced-hide": "Asconde detalias", "rc-old-title": "orijinal creada como \"$1\"", @@ -579,28 +1442,255 @@ "recentchangeslinked-feed": "Cambias relatada", "recentchangeslinked-toolbox": "Cambias relatada", "recentchangeslinked-title": "Cambias relatada a \"$1\"", - "recentchangeslinked-summary": "Esta es un lista de cambias resente a pajes liada (o a la membros de un categoria spesifada). Pajes en [[Special:Watchlist|tua lista de pajes monitorida]] es spesa.", + "recentchangeslinked-summary": "Esta es un lista de cambias resente a pajes liada de un paje spesifada (o a membros de un categoria spesifada).\nPajes en [[Special:Watchlist|tua lista monitorida]] es spesa.", "recentchangeslinked-page": "Nom de paje:", "recentchangeslinked-to": "Mostra cambias a pajes cual lia a la paje indicada, en loca", - "upload": "Carga un fix", - "uploadbtn": "Envia la fix", - "uploadlogpage": "Carga arcivo", + "recentchanges-page-added-to-category": "[[:$1]] ajuntada a categoria", + "recentchanges-page-added-to-category-bundled": "[[:$1]] ajuntada a categoria; [[Special:WhatLinksHere/$1|esta paje es incluida en otra pajes]]", + "recentchanges-page-removed-from-category": "[[:$1]] sutraeda de categoria", + "recentchanges-page-removed-from-category-bundled": "[[:$1]] sutraeda de categoria; [[Special:WhatLinksHere/$1|esta paje es incluida en otra pajes]]", + "autochange-username": "Cambia automata de MediaWiki", + "upload": "Carga fix", + "uploadbtn": "Envia fix", + "reuploaddesc": "Cansela carga e revade a la formulario de carga", + "upload-tryagain": "Envia descrive alterada de fix", + "upload-tryagain-nostash": "Envia la fix recargada e la descrive alterada", + "uploadnologin": "No autenticida", + "uploadnologintext": "Per favore, $1 per carga fixes.", + "upload_directory_missing": "La arcivo de carga ($1) manca e la servador no ia pote crea lo.", + "upload_directory_read_only": "La arcivo de carga ($1) no es scrivable per la servador.", + "uploaderror": "Era de carga", + "upload-recreate-warning": "Avisa: Un fix con acel nom es ja sutraeda o moveda.\n\nLa rejistra de sutraes e moves per esta paje es mostrada a su per clari:", + "uploadtext": "Usa la formulario a su per carga fixes.\nPer regarda o xerca fixes cargada en la pasada, vade a la [[Special:FileList|lista de fixes cargada]]; (re)cargas es ance notada en la [[Special:Log/upload|rejistra de cargas]]; sutraes en la [[Special:Log/delete|rejistra de sutraes]].\n\nPer inclui un fix en un paje, usa un lia en un de la formas seguente:\n* [[{{ns:file}}:File.jpg]] per usa la varia completa de la fix\n* [[{{ns:file}}:File.png|200px|thumb|left|testo alternativa]] per usa un varia con largia de 200 pixeles en un caxa en la marjin sinistra, con \"testo alternativa\" como sua descrive\n* [[{{ns:media}}:File.ogg]] per lia direta a la fix sin mostra lo", + "upload-permitted": "{{PLURAL:$2|Tipo|Tipos}} de fix permeteda: $1.", + "upload-preferred": "{{PLURAL:$2|Tipo|Tipos}} de fix prefereda: $1.", + "upload-prohibited": "{{PLURAL:$2|Tipo|Tipos}} de fix proibida: $1.", + "uploadlogpage": "Rejistra de cargas", + "uploadlogpagetext": "A su es un lista de la cargas la plu resente de fix.\nVide la [[Special:NewFiles|galeria de fixes nova]] per un vista jeneral plu vidal.", + "filename": "Nom de fix", "filedesc": "Resoma", + "fileuploadsummary": "Resoma:", + "filereuploadsummary": "Cambias de fix:", + "filestatus": "Diretos de autor:", + "filesource": "Fonte:", + "ignorewarning": "Iniora la avisa e fisa la fix an tal", + "ignorewarnings": "Inioras tota avisas", + "minlength1": "Nomes de fix debe conteni a la min un letera.", + "illegalfilename": "La nom \"$1\" conteni sinias cual no es permeteda en titulos de paje.\nPer favore, renomi la fix e proba denova carga lo.", + "filename-toolong": "Un nom de fix no pote es plu longa ca 240 baites.", + "badfilename": "Nom de fix es cambiada a \"$1\".", + "filetype-mime-mismatch": "Sufisa \"$1\" no coresponde a la tipo MIME detetada per la fix ($2).", + "filetype-badmime": "On no permete la carga de fixes de tipo MIME \"$1\".", + "filetype-bad-ie-mime": "Esta fix no pote es cargada car Internet Explorer ta deteta lo como \"$1\", cual es un tipo de fix proibida e cisa perilosa.", + "filetype-unwanted-type": "\".$1\" es un tipo de fix nondesirada.\n{{PLURAL:$3|Tipo|Tipos}} de fix prefereda es $2.", + "filetype-banned-type": "\".$1\" no es {{PLURAL:$4|un tipo|tipos}} de fix permeteda.\n{{PLURAL:$3|Tipo|Tipos}} de fix permeteda es $2.", + "filetype-missing": "La fix ave no sufisa (como \".jpg\").", + "empty-file": "La fix cual tu ia enviada es vacua.", + "file-too-large": "La fix cual tu ia envia es tro grande.", + "filename-tooshort": "La nom de fix es tro corta.", + "filetype-banned": "Esta tipo de fix es proibida.", + "verification-error": "Esta fix no ia susede sua esamina.", + "hookaborted": "La altera cual tu ia atenta fa ia es abortada par un program estendente.", + "illegal-filename": "Nom de fix no es permeteda.", + "overwrite": "La suprascrive de un fix esistente no es permeteda.", + "unknown-error": "Un era nonconoseda ia aveni.", + "tmp-create-error": "Fix tempora no ia pote es creada.", + "tmp-write-error": "Era en scrive fix tempora.", + "large-file": "On recomenda ce fixes es no plu grande ca $1;\nesta fix ave $2.", + "largefileserver": "Esta fix es plu grande ca permeteda par la ajusta de la servador.", + "emptyfile": "La fix cual tu ia envia pare es vacua.\nCisa esta resulta de un maltape en la nom de fix.\nPer favore, serti esce tu desira vera carga esta fix.", + "windows-nonascii-filename": "Esta vici no suporta nomes de fix con sinias spesial.", + "fileexists": "Un fix con esta nom esiste ja. Per favore, regarda [[:$1]] si {{GENDER:|tu}} no es serta esce tu vole cambia lo.\n[[$1|thumb]]", + "filepageexists": "La paje de descrive per esta fix es ja creada a [[:$1]], ma no fix con esta nom esiste a presente.\nLa resoma cual tu furni no va apare a la paje de descrive.\nPer fa ce tua resoma apare ala, tu va debe edita lo par mano.\n[[$1|thumb]]", + "fileexists-extension": "Un fix con nom simil esiste: [[$2|thumb]]\n* Nom de la fix cargada: [[:$1]]\n* Nom de la fix esistente: [[:$2]]\nEsce tu vole cisa usa un nom plu distinguinte?", + "fileexists-thumbnail-yes": "La fix pare es un imaje de grandia reduida (imajeta).\n[[$1|thumb]]\nPer favore, esamina la fix [[:$1]].\nSi acel fix es la mesma imaje con grandia orijinal, lo no es nesesada ce tu carga un plu imajeta.", + "file-thumbnail-no": "La nom de fix comensa con $1.\nLo pare es un imaje de grandia reduida (imajeta).\nSi tu ave esta imaje con grandia plen, carga lo; si no, cambia la nom de fix, per favore.", + "fileexists-forbidden": "Un fix con esta nom esiste ja, e no pote es suprascriveda.\nSi tu desira ancora carga tua fix, per favore revade e usa un nom nova.\n[[File:$1|thumb|center|$1]]", + "fileexists-shared-forbidden": "Un fix con esta nom esiste ja en la arciveria de fixes compartida.\nSi tu desira ancora carga tua fix, per favore revade e usa un nom nova.\n[[File:$1|thumb|center|$1]]", + "fileexists-no-change": "La carga es esata identica con la revisa presente de [[:$1]].", + "fileexists-duplicate-version": "La carga es esata identica con {{PLURAL:$2|un revisa|revisas}} plu vea de [[:$1]].", + "file-exists-duplicate": "Esta fix es identica con la {{PLURAL:$1|fix|fixes}} seguente:", + "file-deleted-duplicate": "Un fix identica con esta fix ([[:$1]]) es ja sutraeda.\nTu debe esamina la istoria de sutrae de acel fix ante continua recarga lo.", + "file-deleted-duplicate-notitle": "Un fix identica con esta fix es ja sutraeda, e la titulo ia es supresada.\nTu debe demanda a algun ci pote regarda datos supresada de fix ce el esamina la situa ante continua recarga lo.", + "uploadwarning": "Averti de carga", + "uploadwarning-text": "Per favore, altera la descrive de fix a su e atenta denova.", + "uploadwarning-text-nostash": "Per favore, recarga la fix, edita la descrive e atenta denova.", "savefile": "Fisa fix", + "uploaddisabled": "Cargas es descomutada.", + "copyuploaddisabled": "Cargas par URL es descomutada.", + "uploaddisabledtext": "Cargas de fix es descomutada.", + "php-uploaddisabledtext": "Cargas de fix es descomutada en PHP.\nEsamina la ajusta file_uploads, per favore.", + "uploadscripted": "Esta fix conteni HTML o codigo cual ta pote es noncoreta interpreteda par un surfador.", + "upload-scripted-pi-callback": "On no pote carga un fix cual conteni un instrui tratal de folia de stilo XML.", + "upload-scripted-dtd": "On no pote carga fixes SVG cual conteni un declara DTD nonormal.", + "uploaded-script-svg": "Elemento automatable \"$1\" ia es trovada en la fix SVG cargada.", + "uploaded-hostile-svg": "CSS nonsecur ia es trovada en la stilo de la fix SVG cargada.", + "uploaded-event-handler-on-svg": "On no permete defini atribuidas per trata avenis $1=\"$2\" en fixes de SVG.", + "uploaded-href-attribute-svg": "Atribuidas href en fixes SVG es sola permeteda a lia a adirijes http:// o https://, ma <$1 $2=\"$3\"> ia es trovada.", + "uploaded-href-unsafe-target-svg": "Un href a datos nonsecur ia es trovada en la fix SVG cargada: adirije destinal <$1 $2=\"$3\">.", + "uploaded-animate-svg": "Un eticeta \"animate\" cual ta pote cambia href, usante la atribuida \"from\" <$1 $2=\"$3\">, ia es trovada en la fix SVG cargada.", + "uploaded-setting-event-handler-svg": "On proibi la defini de atribuidas per trata avenis, ma <$1 $2=\"$3\"> ia es trovada en la fix SVG cargada.", + "uploaded-setting-href-svg": "On proibi usa la eticeta \"set\" per ajunta la atribuida \"href\" a la elemento conteninte.", + "uploaded-wrong-setting-svg": "On proibi usa la eticeta \"set\" per ajunta un destina distante o de datos/codigo a cualce atribuida, ma <set to=\"$1\"> ia es trovada en la fix SVG cargada.", + "uploaded-setting-handler-svg": "On proibi SVG cual defini la atribuida \"handler\" a distante o datos/codigo, ma $1=\"$2\" ia es trovada en la fix SVG cargada.", + "uploaded-remote-url-svg": "On proibi SVG cual defini cualce atribuida de stilo a un URL esterna, ma $1=\"$2\" ia es trovada en la fix SVG cargada.", + "uploaded-image-filter-svg": "Filtro de imaje con URL <$1 $2=\"$3\"> ia es trovada en la fix SVG cargada.", + "uploadscriptednamespace": "Esta fix SVG conteni un nom de spasio nonvalida \"$1\".", + "uploadinvalidxml": "La XML en la fix cargada no ia pote es analiseda.", + "uploadvirus": "La fix conteni un virus!\nDetalias: $1", + "uploadjava": "La fix es un fix ZIP cual conteni un fix .class de Java.\nOn no permete carga fixes de Java car los pote causa la sircoveni de restrinjes de securia.", + "upload-source": "Fix fontal", + "sourcefilename": "Nom de fix fontal:", + "sourceurl": "URL fontal:", + "destfilename": "Nom de fix destinal:", + "upload-maxfilesize": "Grandia masima de fix: $1", + "upload-description": "Descrive de fix", + "upload-options": "Ajustas de carga", + "watchthisupload": "Monitori esta fix", + "filewasdeleted": "Un fix con esta nom es ja cargada e sutraeda a pos.\nTu debe regarda la $1 ante continua recarga lo.", + "filename-thumb-name": "Esta pare es un titulo de imajeta. Per favore, no recarga imajetas a la mesma vici. Si no, per favore, boni la nom de fix afin lo es plu sinifiosa e no ave la prefisa de imajeta.", + "filename-bad-prefix": "La nom de la fix cual tu carga comensa con \"$1\", cual es un nom nondescrivente, tipal asiniada en modo automata par cameras dijital.\nPer favore, eleje un nom plu descrivente per tua fix.", + "filename-prefix-blacklist": " #
    \n# La sintatica es la seguente:\n#   * Tota testo de un sinia \"#\" asta la fini de la linia es un comenta\n#   * Cada linia nonvacua es un prefisa per nomes de fix tipal asiniada en modo automata par cameras dijital\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # alga telefonetas\nIMG # jeneral\nJD # Jenoptik\nMGP # Pentax\nPICT # diversa\n #
    ", + "upload-proto-error": "Protocol noncoreta", + "upload-proto-error-text": "Per carga distante, la URL nesesa comensa con http:// o ftp://.", "upload-file-error": "Era interna", + "upload-file-error-text": "Un era interna ia aveni en atenta crea un fix tempora en la servador.\nPer favore, contata un [[Special:ListUsers/sysop|dirijor]].", + "upload-misc-error": "Era nonconoseda de carga", + "upload-misc-error-text": "Un era nonconoseda ia aveni en la carga.\nPer favore, serti ce la URL es valida e asedable, e atenta denova.\nSi la problem persiste, contata un [[Special:ListUsers/sysop|dirijor]].", + "upload-too-many-redirects": "La URL ia conteni tro multe redirijes", + "upload-http-error": "Un era HTTP ia aveni: $1", + "upload-copy-upload-invalid-domain": "Cargas copiante no es disponable de esta domina.", + "upload-foreign-cant-upload": "Esta vici no es ajustada per carga fixes a la arciveria esterna solisitada.", + "upload-foreign-cant-load-config": "La ajusta per cargas de fix no ia pote es cargada a la arciveria esterna.", + "upload-dialog-disabled": "Cargas de fix par esta dialogo es descomutada en esta vici.", + "upload-dialog-title": "Carga fix", + "upload-dialog-button-cancel": "Cansela", + "upload-dialog-button-back": "Retro", + "upload-dialog-button-done": "Fada", + "upload-dialog-button-save": "Fisa", + "upload-dialog-button-upload": "Carga", + "upload-form-label-infoform-title": "Detalias", + "upload-form-label-infoform-name": "Nom", + "upload-form-label-infoform-name-tooltip": "Un titulo unica e descrivente per la fix, cual va funsiona como un nom de fix. Tu pote usa linguaje comun con spasios. No inclui la sufisa de fix.", + "upload-form-label-infoform-description": "Descrive", + "upload-form-label-infoform-description-tooltip": "Descrive corta tota cualias notable de la obra.\nPer un foto, inclui la cosas xef cual es presentada, la aveni o la loca.", + "upload-form-label-usage-title": "Usas", + "upload-form-label-usage-filename": "Nom de fix", + "upload-form-label-own-work": "Esta es mea propre obra", + "upload-form-label-infoform-categories": "Categorias", + "upload-form-label-infoform-date": "Data", + "upload-form-label-own-work-message-generic-local": "Me confirma ce me carga esta fix longo la regulas de servi e la politicas de lisensa de {{SITENAME}}.", + "upload-form-label-not-own-work-message-generic-local": "Si tu no pote carga esta fix longo la politicas de {{SITENAME}}, clui esta dialogo e proba un otra metodo, per favore.", + "upload-form-label-not-own-work-local-generic-local": "Tu ta pote ance proba [[Special:Upload|la paje xef de carga]].", + "upload-form-label-own-work-message-generic-foreign": "Me comprende ce me carga esta fix a un arciveria compartida. Me confirma ce me fa esta longo la regulas de servi e politicas de lisensa ala.", + "upload-form-label-not-own-work-message-generic-foreign": "Si tu no pote carga esta fix longo la politicas de la arciveria compartida, clui esta dialogo e proba un otra metodo, per favore.", + "upload-form-label-not-own-work-local-generic-foreign": "Tu ta pote ance proba [[Special:Upload|la paje de carga en {{SITENAME}}]], si esta fix pote es cargada ala longo sua politicas.", + "backend-fail-stream": "Fix \"$1\" no ia pote es flueda.", + "backend-fail-backup": "Fix \"$1\" no ia pote es copiada.", + "backend-fail-notexists": "Fix $1 no esiste.", + "backend-fail-hashes": "Axis de fix no ia es disponable per compara.", + "backend-fail-notsame": "Un fix nonidentica esiste ja a \"$1\".", + "backend-fail-invalidpath": "\"$1\" no es un adirije valida.", + "backend-fail-delete": "Fix \"$1\" no ia pote es sutraeda.", + "backend-fail-describe": "Metadatos per fix \"$1\" no ia pote es cambiada.", + "backend-fail-alreadyexists": "La fix \"$1\" esiste ja.", + "backend-fail-store": "Fix \"$1\" no ia pote es poneda a \"$2\".", + "backend-fail-copy": "Fix \"$1\" no ia pote es copiada a \"$2\".", + "backend-fail-move": "Fix \"$1\" no ia pote es moveda a \"$2\".", + "backend-fail-opentemp": "Fix tempora no ia pote es abrida.", + "backend-fail-writetemp": "Fix tempora no ia pote es scriveda.", + "backend-fail-closetemp": "Fix tempora no ia pote es cluida.", + "backend-fail-read": "Fix \"$1\" no ia pote es lejeda.", + "backend-fail-create": "Fix \"$1\" no ia pote es scriveda.", + "backend-fail-maxsize": "Fix \"$1\" no ia pote es scriveda car lo es plu grande ca {{PLURAL:$2|un bait|$2 baites}}.", + "backend-fail-readonly": "La conservador \"$1\" es nonscrivable a presente. La razona donada es: $2", + "backend-fail-synced": "La fix \"$1\" es en un state noncoerente en la conservadores interna", + "backend-fail-connect": "La conservador \"$1\" no ia pote es asededa.", + "backend-fail-internal": "Un era nonconoseda ia aveni en conservador \"$1\".", + "backend-fail-contenttype": "La tipo de contenida de la fix per pone a \"$1\" no ia pote es determinada.", + "backend-fail-batchsize": "La conservador ia reseta un grupo de $1 {{PLURAL:$1|opera|operas}} de fix; la limita es $2 {{PLURAL:$2|opera|operas}}.", + "backend-fail-usable": "Fix \"$1\" no ia pote es lejeda o scriveda par causa de permetes nonsufisinte o arcivos/contenadores mancante.", + "filejournal-fail-dbconnect": "La banco de jornales per conservador \"$1\" no ia pote es asededa.", + "filejournal-fail-dbquery": "La banco de jornales per conservador \"$1\" no ia pote es cambiada.", + "lockmanager-notlocked": "\"$1\" no ia pote es desclavida; lo no porta un semafor.", + "lockmanager-fail-closelock": "La fix de semafor per \"$1\" no ia pote es cluida.", + "lockmanager-fail-deletelock": "La fix de semafor per \"$1\" no ia pote es sutraeda.", + "lockmanager-fail-acquirelock": "La semafor per \"$1\" no ia pote es otenida.", + "lockmanager-fail-openlock": "La fix de semafor per \"$1\" no ia pote es abrida.", + "lockmanager-fail-releaselock": "La semafor per \"$1\" no ia pote es relasada.", + "lockmanager-fail-db-bucket": "Tro poca bancos de semafor ia pote es contatada en balde $1.", + "lockmanager-fail-db-release": "Semafores per banco de datos $1 no ia pote es relasada.", + "lockmanager-fail-svr-acquire": "Semafores per banco de datos $1 no ia pote es otenida.", + "lockmanager-fail-svr-release": "Semafores per servador $1 no ia pote es relasada.", + "zip-file-open-error": "Un era ia aveni en abri la fix ZIP per esamina.", + "zip-wrong-format": "La fix spesifada no ia es un fix ZIP.", + "zip-bad": "La fix ZIP es malida o nonlejable.\nOn no pote esamina bon lo per securia.", + "zip-unsupported": "La fix ZIP usa cualias ZIP cual MediaWiki no suporta.\nOn no pote esamina bon lo per securia.", + "uploadstash": "Cargas pendente", + "uploadstash-summary": "Esta paje permete asede fixes cual es cargada o cargante, ma es ancora no publicida en la vici. Esta fixes es vidable sola a la usor ci ia carga los.", + "uploadstash-clear": "Vacui fixes pendente", + "uploadstash-nofiles": "Tu ave no fixes pendente.", + "uploadstash-badtoken": "Acel ata ia fali, cisa car tua identia ia desvalidi. Atenta denova, per favore.", + "uploadstash-errclear": "La vacui de la fixes ia fali.", + "uploadstash-refresh": "Refresci la lista de fixes", + "uploadstash-thumbnail": "regarda imajeta", + "uploadstash-exception": "Carga no ia pote es ajuntada a la cargas pendente ($1): \"$2\".", + "invalid-chunk-offset": "Bloco con numero nonvalida", + "img-auth-accessdenied": "Nonasedable", + "img-auth-nopathinfo": "PATH_INFO manca.\nTua servador no es ajustada per envia esta informa.Cisa lo usa CGI e no pote suporta img_auth.\nVide https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization.", + "img-auth-notindir": "La adirije solisitada no es en la arcivo definida per cargas.", + "img-auth-badtitle": "Un titulo valida no ia pote es construida de \"$1\".", + "img-auth-nologinnWL": "Tu no es autenticida e \"$1\" no es en la lista blanca.", + "img-auth-nofile": "Fix \"$1\" no esiste.", + "img-auth-isdir": "Tu atenta asede un arcivo \"$1\".\nSola asede de fixes es permeteda.", + "img-auth-streaming": "\"$1\" flue.", + "img-auth-public": "La funsiona de img_auth.php es la esflue de fixes de un vici privata.\nEsta vici es definida como un vici publica.\nPer securia, img_auth.php es descomutada.", + "img-auth-noread": "La usor no pote asede per leje \"$1\".", + "http-invalid-url": "URL nonvalida: $1", + "http-invalid-scheme": "URLes con scema \"$1\" no es suportada.", + "http-request-error": "Fali de solisita HTTP con era nonconoseda.", + "http-read-error": "Era HTTP de leje.", + "http-timed-out": "Abandona de solisita HTTP.", + "http-curl-error": "Era en retrae URL: $1", + "http-bad-status": "Un problem ia aveni en la solisita HTTP: $1 $2", + "upload-curl-error6": "URL nonasedable", + "upload-curl-error6-text": "La URL spesifada no ia pote es asededa.\nPer favore, serti ce la URL es coreta e ce la pajeria funsiona.", + "upload-curl-error28": "Abandona de carga", + "upload-curl-error28-text": "La pajeria ia pasa tro multe tempo en responde.\nPer favore, serti ce la pajeria funsiona, pausa per un tempo corta e atenta denova.\nCisa tu ta reatenta a un ora min ocupada.", "license": "Lisensa:", "license-header": "Lisensa", + "nolicense": "No eleje", + "licenses-edit": "Edita preferes de lisensa", + "license-nopreview": "(Previde nondisponable)", + "upload_source_url": "(tua fix elejeda de un URL valida e publica asedable)", + "upload_source_file": "(tua fix elejeda de tua computador)", + "listfiles-delete": "sutrae", + "listfiles-summary": "Esta paje spesial mostra tota fixes cargada.", + "listfiles_search_for": "Xerca nom de media:", + "listfiles-userdoesnotexist": "Conta de usor \"$1\" no es rejistrada.", "imgfile": "fix", "listfiles": "Lista de fixes", + "listfiles_thumb": "Imajeta", + "listfiles_date": "Data", "listfiles_name": "Nom", + "listfiles_user": "Usor", + "listfiles_size": "Grandia", + "listfiles_description": "Descrive", + "listfiles_count": "Revisas", + "listfiles-show-all": "Inclui revisas vea de imajes", + "listfiles-latestversion": "Revisa presente", + "listfiles-latestversion-yes": "Si", + "listfiles-latestversion-no": "No", "file-anchor-link": "Fix", "filehist": "Istoria de fix", - "filehist-help": "Clica un data/tempo per vide la fix en sua forma de alora.", + "filehist-help": "Clica un data/ora per vide la fix en sua forma de alora.", + "filehist-deleteall": "sutrae tota", + "filehist-deleteone": "sutrae", "filehist-revert": "reversa", "filehist-current": "aora", - "filehist-datetime": "Data/Tempo", + "filehist-datetime": "Data/Ora", "filehist-thumb": "Imajeta", - "filehist-thumbtext": "Imajeta per varia de $1", + "filehist-thumbtext": "Imajeta per revisa de $1", "filehist-nothumb": "No imajeta", "filehist-user": "Usor", "filehist-dimensions": "Mesuras", @@ -610,179 +1700,625 @@ "linkstoimage": "La {{PLURAL:$1|paje|pajes}} seguente lia a esta fix:", "linkstoimage-more": "Plu ca $1 {{PLURAL:$1|paje|pajes}} lia a esta fix.\nLa lista seguente mostra sola la {{PLURAL:$1|lia|$1 lias}} prima a esta fix.\nUn [[Special:WhatLinksHere/$2|lista completa]] es disponable.", "nolinkstoimage": "No pajes lia a esta fix.", + "morelinkstoimage": "Regarda [[Special:WhatLinksHere/$1|plu lias]] a esta fix.", "linkstoimage-redirect": "$1 (redirije de fix) $2", - "sharedupload": "Esta fix es parte de $1 e pote es usada par otra projetas.", - "sharedupload-desc-here": "Esta fix es de $1 e es cisa usada par otra projetas.\nLa descrive en sua [$2 paje de descrive de fix] ala es mostrada a su.", + "duplicatesoffile": "La {{PLURAL:$1|fix|fixes}} seguente es identica con esta fix ([[Special:FileDuplicateSearch/$2|plu detalias]]):", + "sharedupload": "Esta fix veni de $1 e es cisa usada par otra projetas.", + "sharedupload-desc-there": "Esta fix veni de $1 e es cisa usada par otra projetas.\nVide la [$2 paje de descrive de fix] per plu informas, per favore.", + "sharedupload-desc-here": "Esta fix veni de $1 e es cisa usada par otra projetas.\nLa descrive en sua [$2 paje de descrive de fix] ala es mostrada a su.", + "sharedupload-desc-edit": "Esta fix veni de $1 e es cisa usada par otra projetas.\nCisa tu vole edita la descrive en sua [$2 paje de descrive de fix] ala.", + "sharedupload-desc-create": "Esta fix veni de $1 e es cisa usada par otra projetas.\nCisa tu vole edita la descrive en sua [$2 paje de descrive de fix] ala.", "filepage-nofile": "No fix con esta nom esiste.", - "uploadnewversion-linktext": "Envia un varia nova de esta fix", - "upload-disallowed-here": "Tu no pote recambia esta arcivo.", - "mimesearch": "Xerca de MIME", - "listredirects": "Lista redirijes", - "unusedtemplates": "modeles no usada", + "filepage-nofile-link": "No fix con esta nom esiste, ma tu pote [$1 carga lo].", + "uploadnewversion-linktext": "Envia un revisa nova de esta fix", + "shared-repo-from": "de $1", + "shared-repo": "un arciveria compartida", + "upload-disallowed-here": "Tu no pote suprascrive esta fix.", + "filerevert": "Reversa $1", + "filerevert-legend": "Reversa fix", + "filerevert-intro": "Tu es a punto de reversa la fix [[Media:$1|$1]] a la [$4 revisa de $3, $2].", + "filerevert-comment": "Razona:", + "filerevert-defaultcomment": "Reversada a revisa de $2, $1 ($3)", + "filerevert-submit": "Reversa", + "filerevert-success": "[[Media:$1|$1]] ia es reversada a la [$4 revisa de $3, $2].", + "filerevert-badversion": "No revisa local pasada esiste de esta fix con la indica de ora spesifada.", + "filerevert-identical": "La revisa presente de la fix es ja identica con la elejeda.", + "filedelete": "Sutrae $1", + "filedelete-legend": "Sutrae fix", + "filedelete-intro": "Tu es a punto de sutrae la fix [[Media:$1|$1]] con tota sua istoria.", + "filedelete-intro-old": "Tu sutrae la revisa de [[Media:$1|$1]] de [$4 $3, $2].", + "filedelete-comment": "Razona:", + "filedelete-submit": "Sutrae", + "filedelete-success": "$1 es sutraeda.", + "filedelete-success-old": "La revisa de [[Media:$1|$1]] de $3, $2 es sutraeda.", + "filedelete-nofile": "$1 no esiste.", + "filedelete-nofile-old": "No revisa arcivida de $1 esiste con la atribuidas spesifada.", + "filedelete-otherreason": "Otra/plu razona:", + "filedelete-reason-otherlist": "Otra razona:", + "filedelete-reason-dropdown": "*Razonas comun per sutrae\n** Viole de diretos de autor\n** Fix duplida", + "filedelete-edit-reasonlist": "Edita razonas per sutrae", + "filedelete-maintenance": "La sutrae e restora de fixes es tempora descomutada per manteni.", + "filedelete-maintenance-title": "Fix no pote es sutraeda", + "mimesearch": "Xerca MIME", + "mimesearch-summary": "Esta paje permete filtri fixes longo sua tipo MIME.\nEnflue: tipo/sutipo o tipo/*, pe image/jpeg.", + "mimetype": "Tipo MIME:", + "download": "descarga", + "unwatchedpages": "Pajes nonmonitorida", + "listredirects": "Lista de redirijes", + "listduplicatedfiles": "Lista de fixes jemelo", + "listduplicatedfiles-summary": "Esta es un lista de fixes de cual sua revisa la plu resente es identica con la revisa la plu resente de alga otra fix. Sola fixes local es considerada.", + "listduplicatedfiles-entry": "[[:File:$1|$1]] ave [[$3|{{PLURAL:$2|un jemelo|$2 jemelos}}]].", + "unusedtemplates": "modeles nonusada", + "unusedtemplatestext": "Esta paje lista tota pajes en la spasio de nom {{ns:template}} cual no es incluida en un otra paje.\nNo oblida esplora otra lias a la stensiles ante sutrae los.", + "unusedtemplateswlh": "otra lias", "randompage": "Paje acaso", + "randompage-nopages": "No pajes esiste en la {{PLURAL:$2|spasio|spasios}} de nom seguente: $1.", + "randomincategory": "Paje acaso en categoria", + "randomincategory-invalidcategory": "\"$1\" no es un nom valida de categoria.", + "randomincategory-nopages": "No pajes esiste en la categoria [[:Category:$1|$1]].", + "randomincategory-category": "Categoria:", + "randomincategory-legend": "Paje acaso en categoria", + "randomincategory-submit": "Vade", "randomredirect": "Redirije acaso", + "randomredirect-nopages": "No redirijes esiste en la spasio de nom \"$1\".", "statistics": "Statisticas", + "statistics-header-pages": "Statisticas de paje", + "statistics-header-edits": "Edita statisticas", + "statistics-header-users": "Statisticas de usor", + "statistics-header-hooks": "Otra statisticas", + "statistics-articles": "Pajes de contenida", + "statistics-pages": "Pajes", + "statistics-pages-desc": "Tota pajes en la vici, incluinte pajes de discute, redirijes, etc.", + "statistics-files": "Fixes cargada", + "statistics-edits": "Editas de pajes de pos la inisia de {{SITENAME}}", + "statistics-edits-average": "Editas promedia per paje", + "statistics-users": "[[Special:ListUsers|Usores]] rejistrada", + "statistics-users-active": "Usores ativa", + "statistics-users-active-desc": "Usores ci ia fa un ata en la {{PLURAL:$1|dia|$1 dias}} la plu resente", + "pageswithprop": "Pajes con atribuidas de paje", + "pageswithprop-legend": "Pajes con atribuidas de paje", + "pageswithprop-text": "Esta paje lista pajes cual usa un atribuida spesifada de paje.", + "pageswithprop-prop": "Nom de atribuida:", + "pageswithprop-reverse": "Reversa la ordina", + "pageswithprop-sortbyvalue": "Ordina per valua de atribuida", + "pageswithprop-submit": "Vade", + "pageswithprop-prophidden-long": "valua de testo longa ascondeda ($1)", + "pageswithprop-prophidden-binary": "valua binaria ascondeda ($1)", "doubleredirects": "Redirijes duple", + "doubleredirectstext": "Esta paje lista pajes cual redirije a otra pajes redirijente.\nCada linia conteni linias a la redirije prima e du, como ance la gol de la redirije du, cual es usual la paje \"vera\" a cual la redirije prima debe punta.\nEntradas barida es ja solveda.", + "double-redirect-fixed-move": "[[$1]] es moveda.\nLo ia es automata cambiada e aora lo redirije a [[$2]].", + "double-redirect-fixed-maintenance": "Automata reparante redirije duple de [[$1]] a [[$2]] en taxe de manteni.", "double-redirect-fixer": "Reparor de redirijes", "brokenredirects": "Redirijes rompeda", + "brokenredirectstext": "La redirijes seguente lia a pajes nonesistente:", + "brokenredirects-edit": "edita", + "brokenredirects-delete": "sutrae", "withoutinterwiki": "Pajes sin lias de lingua", - "fewestrevisions": "Pajes con la min revides", + "withoutinterwiki-summary": "La pajes seguente no lia a varias en otra linguas.", + "withoutinterwiki-legend": "Prefisa", + "withoutinterwiki-submit": "Mostra", + "fewestrevisions": "Pajes con la min revisas", "nbytes": "$1 {{PLURAL:$1|bait|baites}}", + "ncategories": "$1 {{PLURAL:$1|categoria|categorias}}", + "ninterwikis": "$1 {{PLURAL:$1|intervical|intervicales}}", "nlinks": "$1 {{PLURAL:$1|lia|lias}}", "nmembers": "$1 {{PLURAL:$1|membro|membros}}", + "nmemberschanged": "$1 → $2 {{PLURAL:$2|membro|membros}}", + "nrevisions": "$1 {{PLURAL:$1|revisa|revisas}}", + "nimagelinks": "Usada a $1 {{PLURAL:$1|paje|pajes}}", + "ntransclusions": "usada a $1 {{PLURAL:$1|paje|pajes}}", + "specialpage-empty": "No resultas esiste per esta reporta.", "lonelypages": "Pajes orfanida", - "uncategorizedpages": "Pajes sin categoria", - "uncategorizedcategories": "Categorias sin categoria", - "uncategorizedimages": "Fixes sin categoria", - "uncategorizedtemplates": "Modeles sin categoria", + "lonelypagestext": "La pajes seguente no es liada de o transcluida en otra pajes en {{SITENAME}}.", + "uncategorizedpages": "Pajes noncategorida", + "uncategorizedcategories": "Categorias noncategorida", + "uncategorizedimages": "Fixes noncategorida", + "uncategorizedtemplates": "Stensiles noncategorida", + "uncategorized-categories-exceptionlist": " # Conteni un lista de categorias, cual no debe es listada en Special:UncategorizedCategories. Un per linia, comensante con \"*\". Linias cual comensa con cualce otra sinia (incluinte spasios) es iniorada. Usa \"#\" per comentas.", "unusedcategories": "Categorias nonusada", - "unusedimages": "Images nonusada", - "wantedcategories": "Categorias desireda", + "unusedimages": "Fixes nonusada", + "wantedcategories": "Categorias desirada", "wantedpages": "Pajes desirada", + "wantedpages-summary": "Lista de pajes nonesistente cual ave la plu lias a se, escluinte pajes cual ave sola redirijedas a se. Per un lista de pajes nonesistente cual ave redirijes liante a se, vide [[{{#special:BrokenRedirects}}|la lista de redirijes rompeda]].", + "wantedpages-badtitle": "Titulo nonvalida en resultas: $1", + "wantedfiles": "Fixes desirada", + "wantedfiletext-cat": "La fixes seguente es usada ma no esiste. Fixes de arciverias esterna es cisa listada an si los esiste. Cualce tal positivas falsa es barida. En ajunta, pajes cual conteni fixes cual no esiste es listada en [[:$1]].", + "wantedfiletext-cat-noforeign": "La fixes seguente es usada ma no esiste. En ajunta, pajes cual conteni fixes cual no esiste es listada en [[:$1]].", + "wantedfiletext-nocat": "La fixes seguente es usada ma no esiste. Fixes de arciverias esterna es cisa listada an si los esiste. Cualce tal positivas falsa es barida.", + "wantedfiletext-nocat-noforeign": "La fixes seguente es usada ma no esiste.", + "wantedtemplates": "Stensiles desirada", "mostlinked": "Pajes la plu liada", - "mostlinkedcategories": "Categorias a ce es la plu lias", - "mostlinkedtemplates": "Pajes la plu liada", + "mostlinkedcategories": "Categorias la plu liada", + "mostlinkedtemplates": "Pajes la plu transcluida", "mostcategories": "Pajes con la plu categorias", - "mostimages": "Fixes a ce es la plu lias", + "mostimages": "Fixes la plu liada", + "mostinterwikis": "Pajes con la plu intervicales", "mostrevisions": "Pajes con la plu revisas", "prefixindex": "Tota pajes con prefisa", + "prefixindex-namespace": "Tota pajes con prefisa (spasio de nom $1)", + "prefixindex-submit": "Mostra", + "prefixindex-strip": "Asconde prefisa en lista", "shortpages": "Pajes corta", "longpages": "Pajes longa", "deadendpages": "Pajes sin sorti", + "deadendpagestext": "La pajes seguente no lia a otra pajes en {{SITENAME}}.", "protectedpages": "Pajes protejeda", + "protectedpages-indef": "Sola protejes nunca desvalidinte", + "protectedpages-summary": "Esta paje lista pajes esistente cual es protejeda a presente. Per un lista de titulos cual es protejeda contra crea, vide [[{{#special:ProtectedTitles}}|{{int:protectedtitles}}]].", + "protectedpages-cascade": "Sola protejes cascadin", + "protectedpages-noredirect": "Asconde redirijes", + "protectedpagesempty": "No pajes es protejeda con esta parametres a presente.", + "protectedpages-timestamp": "Indica de ora", "protectedpages-page": "Paje", "protectedpages-expiry": "Desvalidi", + "protectedpages-performer": "Usor protejente", + "protectedpages-params": "Parametres de proteje", + "protectedpages-reason": "Razona", + "protectedpages-submit": "Mostra pajes", + "protectedpages-unknown-timestamp": "Nonconoseda", + "protectedpages-unknown-performer": "Usor nonconoseda", + "protectedtitles": "Titulos protejeda", + "protectedtitles-summary": "Esta paje lista titulos cual es protejeda contra crea a presente. Per un lista de pajes esistente cual es protejeda, vide [[{{#special:ProtectedPages}}|{{int:protectedpages}}]].", + "protectedtitlesempty": "No titulos es protejeda con esta parametres a presente.", + "protectedtitles-submit": "Mostra titulos", "listusers": "Lista de usores", + "listusers-editsonly": "Mostra sola usores con editas", + "listusers-creationsort": "Ordina per data de crea", + "listusers-desc": "Ordina desendente", + "usereditcount": "$1 {{PLURAL:$1|edita|editas}}", + "usercreated": "{{GENDER:$3|Creada}} a $1 a $2", "newpages": "Pajes nova", + "newpages-submit": "Mostra", + "newpages-username": "Nom de usor:", "ancientpages": "Pajes la plu vea", "move": "Move", "movethispage": "Move esta paje", - "unusedimagestext": "

    Nota ce otra locas de rede pote lia a un imaje con un URL direta, e donce el pote continua es listada asi contra ce el es usada ativa.

    ", - "unusedcategoriestext": "La categorias seguente esiste sin es usada par otra articles o categorias.", + "unusedimagestext": "La fixes seguente esiste ma no apare en un paje.\nPer favore, nota ce otra pajerias pote usa un URL direta per lia a un imaje, donce los pote continua es listada asi an si vera usada.", + "unusedcategoriestext": "La categorias seguente esiste, an si no otra paje o categoria usa los.", + "notargettitle": "No destina", + "notargettext": "Tu no ia spesifa un paje o usor a cual esta funsiona va aplica.", + "nopagetitle": "No tal paje destinal", + "nopagetext": "La paje destinal cual tu ia spesifa no esiste.", "pager-newer-n": "{{PLURAL:$1|1 plu resente|$1 plu resentes}}", "pager-older-n": "{{PLURAL:$1|1 plu vea|$1 plu veas}}", + "suppress": "Supresa", + "querypage-disabled": "Esta paje spesial es descomutada per razonas de nonperosia.", + "apihelp": "Aida de API", + "apihelp-no-such-module": "Modulo \"$1\" no ia es trovada.", + "apisandbox": "Caxa de arena API", + "apisandbox-jsonly": "JavaScript es nesesada per la usa de la caxa de arena.", + "apisandbox-api-disabled": "La API es descomutada en esta pajeria.", + "apisandbox-intro": "Usa esta paje per esperimenta con la API MediaWiki per servis de ueb.\nConsulta [[mw:API:Main page|la documentos de API]] per plu detalias de la usa de la API. Esemplo: [https://www.mediawiki.org/wiki/API#A_simple_example retrae la contenida de un Paje Xef]. Eleje un ata per vide plu esemplos.\n\nNota ce, an si esta es un caxa de arena, atas cual tu fa en esta paje pote afeta la vici.", + "apisandbox-fullscreen": "Crese panel", + "apisandbox-fullscreen-tooltip": "Crese la caxa de arena per pleni la fenetra de surfador.", + "apisandbox-unfullscreen": "Mostra paje", + "apisandbox-unfullscreen-tooltip": "Redui la caxa de arena per vide lias navigal de MediaWiki.", + "apisandbox-submit": "Fa solisita", + "apisandbox-reset": "Vacui", + "apisandbox-retry": "Reatenta", + "apisandbox-loading": "Cargante informas de modulo API \"$1\"...", + "apisandbox-load-error": "Un era ia aveni en carga informas de modulo API \"$1\": $2", + "apisandbox-no-parameters": "Esta modulo de API ave no parametres.", + "apisandbox-helpurls": "Lias de aida", + "apisandbox-examples": "Esemplos", + "apisandbox-dynamic-parameters": "Parametres ajuntada", + "apisandbox-dynamic-parameters-add-label": "Ajunta parametre:", + "apisandbox-dynamic-parameters-add-placeholder": "Nom de parametre:", + "apisandbox-dynamic-error-exists": "Un parametre nomida \"$1\" esiste ja.", + "apisandbox-deprecated-parameters": "Parametres desaprobada", + "apisandbox-fetch-token": "Autopleni la marca", + "apisandbox-submit-invalid-fields-title": "Alga campos es nonvalida", + "apisandbox-submit-invalid-fields-message": "Coreti la campos indicada, per favore, e reatenta.", + "apisandbox-results": "Resultas", + "apisandbox-sending-request": "Enviante solisita API...", + "apisandbox-loading-results": "Resetante resultas de API...", + "apisandbox-results-error": "Un era ia aveni en carga la responde de la solisita API: $1", + "apisandbox-results-login-suppressed": "Esta solisita ia es tratada como un usor nonautenticida, car lo ta pote es usada per sircoveni la securia de Mesma Orijina. Nota ce la trata automata de marcas par la caxa de arena API no funsiona bon con tal solisitas: completi los par mano, per favore.", + "apisandbox-request-selectformat-label": "Mostra datos de solisita como:", + "apisandbox-request-format-url-label": "Cadena demandal de URL", + "apisandbox-request-url-label": "URL de solisita:", + "apisandbox-request-json-label": "Solisita JSON:", + "apisandbox-request-time": "Solisita tempo: {{PLURAL:$1|$1 ms}}", + "apisandbox-results-fixtoken": "Coreti marca e reenvia", + "apisandbox-results-fixtoken-fail": "La marca \"$1\" no ia pote es retraeda.", + "apisandbox-alert-page": "Campos en esta paje no es valida.", + "apisandbox-alert-field": "La valua de esta campo no es valida.", + "apisandbox-continue": "Continua", + "apisandbox-continue-clear": "Vacui", + "apisandbox-continue-help": "{{int:apisandbox-continue}} va [https://www.mediawiki.org/wiki/API:Query#Continuing_queries continua] la solisita la plu resente; {{int:apisandbox-continue-clear}} va vacui parametres relatada a continua.", + "apisandbox-param-limit": "Entra max per usa la limita masima.", + "apisandbox-multivalue-all-namespaces": "$1 (Tota spasios de nom)", + "apisandbox-multivalue-all-values": "$1 (Tota valuas)", "booksources": "Fontes de libros", "booksources-search-legend": "Xerca fontes de libros", "booksources-search": "Xerca", + "booksources-text": "A su es un lista de lias a otra pajerias cual vende libros nova e usada, e cual ave cisa plu informas sur libros cual tu xerca:", + "booksources-invalid-isbn": "La ISBN spesifada no pare valida; serti ce eras no ia es fada en copia de la fonte orijinal.", + "magiclink-tracking-rfc": "Pajes usante lias majiosa RFC", + "magiclink-tracking-rfc-desc": "Esta paje usa lias majiosa RFC. Vide [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] sur modos de migra.", + "magiclink-tracking-pmid": "Pajes usante lias majiosa PMID", + "magiclink-tracking-pmid-desc": "Esta paje usa lias majiosa PMID. Vide [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] sur modos de migra.", + "magiclink-tracking-isbn": "Pajes usante lias majiosa ISBN", + "magiclink-tracking-isbn-desc": "Esta paje usa lias majiosa ISBN. Vide [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] sur modos de migra.", "specialloguserlabel": "Faor:", "speciallogtitlelabel": "Ojeto (titulo o {{ns:usor}}:Nom per un usor):", "log": "Arcivos", + "logeventslist-submit": "Mostra", "all-logs-page": "Tota arcivos publica", "alllogstext": "Un presenta combinada de tota arcivos disponable de {{SITENAME}}. On pote restrinje la presenta par eleje un tipo de arcivo, la nom de usor (distinguinte leteras major), o la paje afetada (ance distinguinte leteras major).", - "logempty": "No operas corespondente en la arcivos.", + "logempty": "No entradas corespondente en la rejistra.", + "log-title-wildcard": "Xerca titulos cual comensa con esta testo", + "showhideselectedlogentries": "Cambia vidablia de entradas elejeda", + "log-edit-tags": "Edita eticetas de entradas elejeda", + "checkbox-select": "Eleje: $1", + "checkbox-all": "Tota", + "checkbox-none": "Zero", + "checkbox-invert": "Inversa", "allpages": "Tota pajes", "nextpage": "Paje seguente ($1)", "prevpage": "Paje presedente ($1)", "allpagesfrom": "Mostra pajes comensante a:", + "allpagesto": "Mostra pajes fininte a:", "allarticles": "Tota pajes", + "allinnamespace": "Tota pajes (spasio de nom $1)", "allpagessubmit": "Vade", - "allpagesprefix": "Mostra pajes con prefis:", + "allpagesprefix": "Mostra pajes con prefisa:", + "allpagesbadtitle": "La titulo de paje spesifada ia es nonvalida o ia ave un prefisa interlingual o intervical.\nCisa lo conteni un o plu sinias cual on no pote usa en titulos.", + "allpages-bad-ns": "{{SITENAME}} no ave spasio de nom \"$1\".", "allpages-hide-redirects": "Asconde redirijes", + "cachedspecial-viewing-cached-ttl": "Tu regarda un varia prememorida de esta paje, cual pote es nonfresca par asta $1.", + "cachedspecial-viewing-cached-ts": "Tu regarda un varia prememorida de esta paje, cual es cisa no intera corente.", + "cachedspecial-refresh-now": "Regarda la plu resente.", "categories": "Categorias", - "categoriespagetext": "Es la categorias seguente en la vici.\n[[Special:UnusedCategories|Unused categories]] are not shown here.\nAlso see [[Special:WantedCategories|wanted categories]].", + "categories-submit": "Mostra", + "categoriespagetext": "La {{PLURAL:$1|categoria|categorias}} conteni pajes o medias.\n[[Special:UnusedCategories|Categorias nonusada]] no es mostrada asi.\nVide ance [[Special:WantedCategories|categorias desirada]].", + "categoriesfrom": "Mostra categorias comensante a:", + "deletedcontributions": "Contribuis sutraeda", + "deletedcontributions-title": "Contribuis sutraeda", + "sp-deletedcontributions-contribs": "contribuis", + "linksearch": "Xerca lias esterna", + "linksearch-pat": "Motif de xerca:", + "linksearch-ns": "Spasio de nom:", "linksearch-ok": "Xerca", + "linksearch-text": "Bufones como \"*.wikipedia.org\" pote es usada.\nA la min un domina de nivel xef es nesesada, per esemplo \"*.org\".
    \n{{PLURAL:$2|Protocol|Protocoles}} suportada: $1 (http:// es usada si on no spesifa un protocol).", + "linksearch-line": "$1 es liada de $2", + "linksearch-error": "Bufones pote apare sola a la comensa de la nom de servador.", + "listusersfrom": "Mostra usores comensante a:", + "listusers-submit": "Mostra", + "listusers-noresult": "No usor trovada.", + "listusers-blocked": "(impedida)", + "activeusers": "Lista ativa de usores", + "activeusers-intro": "Esta es un lista de usores ci ia es ativa en alga modo en la {{PLURAL:$1|dia|dias}} la plu resente.", + "activeusers-count": "$1 {{PLURAL:$1|ata|atas}} en la {{PLURAL:$3|dia|$3 dias}} la plu resente.", + "activeusers-from": "Mostra usores comensante a:", + "activeusers-groups": "Mostra usores parteninte a grupos:", + "activeusers-excludegroups": "Esclui usores parteninte a grupos:", + "activeusers-noresult": "No usores trovada.", + "activeusers-submit": "Mostra usores ativa", + "listgrouprights": "Diretos de grupo de usor", + "listgrouprights-summary": "La seguente es un lista de grupos de usor definida en esta vici, con sua diretos asosiada de asede.\nCisa [[{{MediaWiki:Listgrouprights-helppage}}|plu informa]] es disponable sur diretos individua.", + "listgrouprights-key": "Esplica:\n* Direto donada\n* Direto canselada", "listgrouprights-group": "Grupo", + "listgrouprights-rights": "Diretos", + "listgrouprights-helppage": "Help:Diretos de grupo", "listgrouprights-members": "(lista de membros)", - "emailuser": "Envia un e-posta a esta usor", + "listgrouprights-addgroup": "Ajunta {{PLURAL:$2|grupo|grupos}}: $1", + "listgrouprights-removegroup": "Sutrae {{PLURAL:$2|grupo|grupos}}: $1", + "listgrouprights-addgroup-all": "Ajunta tota grupos", + "listgrouprights-removegroup-all": "Sutrae tota grupos", + "listgrouprights-addgroup-self": "Ajunta {{PLURAL:$2|grupo|grupos}} a propre conta: $1", + "listgrouprights-removegroup-self": "Sutrae {{PLURAL:$2|grupo|grupos}} de propre conta: $1", + "listgrouprights-addgroup-self-all": "Ajunta tota grupos a propre conta", + "listgrouprights-removegroup-self-all": "Sutrae tota grupos de propre conta", + "listgrouprights-namespaceprotection-header": "Restrinjes de spasio de nom", + "listgrouprights-namespaceprotection-namespace": "Spasio de nom", + "listgrouprights-namespaceprotection-restrictedto": "Direto(s) permetente editas par usor", + "listgrants": "Permetes", + "listgrants-summary": "La seguente es un lista de permetes con sua diretos asosiada de asede. Usores pote autori programes a usa sua conta, ma con permetes limitada, fundida sur la permetes cual la usor dona a la program. Ma un program cual funsiona per un usor no pote usa diretos cual la usor no ave.\nCisa [[{{MediaWiki:Listgrouprights-helppage}}|plu informa]] es disponable sur diretos individua.", + "listgrants-grant": "Permete", + "listgrants-rights": "Diretos", + "trackingcategories": "Categorias manejal", + "trackingcategories-summary": "Esta paje lista categorias manejal cual es automata poplada par la programes de MediaWiki. On pote cambia sua nomes par altera la mesajes pertinente de sistem en la spasio de nom {{ns:8}}.", + "trackingcategories-msg": "Categoria manejal", + "trackingcategories-name": "Nom de mesaje", + "trackingcategories-desc": "Criterios per inclui en categoria", + "restricted-displaytitle-ignored": "Pajes con DISPLAYTITLE iniorada", + "restricted-displaytitle-ignored-desc": "La paje ave un {{DISPLAYTITLE}} iniorada car lo no coresponde a la titulo vera de la paje.", + "noindex-category-desc": "La paje no es catalogida par robotes car lo conteni la parola majiosa __NOINDEX__ e es en un spasio de nom do on no permete acel marca.", + "index-category-desc": "La paje conteni la parola majiosa __NOINDEX__ (e es en un spasio de nom do on permete acel marca), e donce es catalogida par robotes an si esta no ta aveni normal.", + "post-expand-template-inclusion-category-desc": "La paje es plu grande ca $wgMaxArticleSize pos estende tota la stensiles, donce alga stensiles no ia es estendeda.", + "post-expand-template-argument-category-desc": "La paje es plu grande ca $wgMaxArticleSize pos estende un parametre de stensil (alga cosa en brasetas risa truple, como {{{Foo}}}).", + "expensive-parserfunction-category-desc": "La paje usa tro multe funsionas custosa de analisador (como #ifexist). Vide [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].", + "broken-file-category-desc": "La paje conteni un lia rompeda de fix (un lia per mostra un fix cuando la fix no esiste).", + "hidden-category-category-desc": "La categoria conteni __HIDDENCAT__ en sua contenida de paje, cual preveni ce lo apare inisial en la caxa de lias de categoria en pajes.", + "trackingcategories-nodesc": "No descrive es disponable.", + "trackingcategories-disabled": "Categoria es descomutada", + "mailnologin": "No adirije de envia", + "mailnologintext": "Tu debe es [[Special:UserLogin|autenticida]] e ave un adirije valida de eposta en tua [[Special:Preferences|preferes]] per envia epostas a otra usores.", + "emailuser": "Envia un eposta a esta usor", + "emailuser-title-target": "Envia un eposta a esta {{GENDER:$1|usor}}", + "emailuser-title-notarget": "Envia eposta a usor", + "emailpagetext": "Tu pote usa la formulario a su per envia un eposta a esta {{GENDER:$1|usor}}.\nLa adirije de eposta cual tu ia spesifa en [[Special:Preferences|tua preferes de usor]] va apare como la adirije \"De\" de la eposta, donce la resetor va pote responde direta a tu.", + "defemailsubject": "{{SITENAME}} - eposta de usor \"$1\"", + "usermaildisabled": "Epostas de usor es descomutada", + "usermaildisabledtext": "Tu no pote envia epostas a otra usores en esta vici", + "noemailtitle": "No adirije de eposta", + "noemailtext": "Esta usor no ia spesifa un adirije valida de eposta.", + "nowikiemailtext": "Esta usor ia eleje no reseta epostas de otra usores.", + "emailnotarget": "La nom de usor per la resetor no esiste o es nonvalida.", + "emailtarget": "Tape nom de usor de resetor", + "emailusername": "Nom de usor", + "emailusernamesubmit": "Envia", + "email-legend": "Envia un eposta a un otra usor de {{SITENAME}}", "emailfrom": "De:", "emailto": "A:", - "emailsubject": "Sujeto:", + "emailsubject": "Tema:", "emailmessage": "Mesaje:", "emailsend": "Envia", - "emailsent": "E-posta ia es enviada", + "emailccme": "Envia un copia de mea mesaje a me", + "emailccsubject": "Copia de tua mesaje a $1: $2", + "emailsent": "Eposta enviada", + "emailsenttext": "Tua eposta ia es enviada.", + "emailuserfooter": "Esta eposta ia es enviada par $1 a $2 par la funsiona \"{{int:emailuser}}\" a {{SITENAME}}. Si tu responde a esta eposta, tua eposta va es direta enviada a la envior orijinal, revelante tua adirije de eposta a el.", + "usermessage-summary": "Scrivente mesaje de sistem.", "usermessage-editor": "Mesajor de sistem", "watchlist": "Pajes monitorida", - "mywatchlist": "Lista de pajes monitorida", + "mywatchlist": "Pajes monitorida", "watchlistfor2": "Per $1 $2", - "nowatchlist": "Tu ave no cosas en tu lista oservada", - "addedwatchtext": "La paje \"[[:$1]]\" ia es juntada a tu [[Special:Watchlist|lista de pajes oservada]].\nCambias future a esta paje e se paje de discutes va es listada ala, e la paje va apera en leteras '''forte''' en la [[Special:RecentChanges|lista de cambias resente]] per es plu fasil oservada.\n\nSi tu vole sutrae la paje de tu lista de pajes oservada en la futur, clica a \"no oserva\" en la bara a la lado.", - "removedwatchtext": "La paje \"[[:$1]]\" ia es sutraeda de [[Special:Watchlist|tu lista de pajes oservada]].", + "nowatchlist": "Tu ave no pajes en tu lista monitorida", + "watchlistanontext": "Per favore, autentici per regarda o edita la contenida de tua lista monitorida.", + "watchnologin": "No autenticida", + "addwatch": "Ajunta a pajes monitorida", + "addedwatchtext": "\"[[:$1]]\" e sua paje de discute ia es ajuntada a tua [[Special:Watchlist|pajes monitorida]].", + "addedwatchtext-talk": "\"[[:$1]]\" e sua paje asosiada ia es ajuntada a tua [[Special:Watchlist|pajes monitorida]].", + "addedwatchtext-short": "La paje \"$1\" ia es ajuntada a tua pajes monitorida.", + "removewatch": "Sutrae de pajes monitorida", + "removedwatchtext": "\"[[:$1]]\" e sua paje de discute ia es sutraeda de tua [[Special:Watchlist|pajes monitorida]].", + "removedwatchtext-talk": "\"[[:$1]]\" e sua paje asosiada ia es sutraeda de tua [[Special:Watchlist|pajes monitorida]].", + "removedwatchtext-short": "La paje \"$1\" ia es sutraeda de tua pajes monitorida.", "watch": "Monitori", - "watchthispage": "Oserva esta paje", + "watchthispage": "Monitori esta paje", "unwatch": "Desmonitori", + "unwatchthispage": "Sesa monitori esta paje", + "notanarticle": "No un paje de contenida", + "notvisiblerev": "La revisa la plu resente par un otra usor ia es sutraeda", "watchlist-details": "Tu monitori {{PLURAL:$1|$1 paje|$1 pajes}}, iniorante pajes de discute.", + "wlheader-enotif": "Avisas par eposta es comutada.", "wlheader-showupdated": "Pajes cual on ia cambia pos tua visita la plu resente apare en leteras spesa.", "wlnote": "A su es la {{PLURAL:$1|cambia|$1 cambias}} en la {{PLURAL:$2|ora|$2 oras}} la plu resente, a $3, $4.", "wlshowlast": "Mostra la $1 oras e $2 dias presedente", - "watchlist-options": "Preferes per la lista de pajes monitorida.", - "watching": "Oserva...", - "unwatching": "No oserva...", + "watchlist-hide": "Asconde", + "watchlist-submit": "Mostra", + "wlshowtime": "Periodo de tempo mostrada:", + "wlshowhideminor": "editas minor", + "wlshowhidebots": "botes", + "wlshowhideliu": "usores rejistrada", + "wlshowhideanons": "usores anonim", + "wlshowhidepatr": "editas patruliada", + "wlshowhidemine": "mea editas", + "wlshowhidecategorization": "categori de pajes", + "watchlist-options": "Preferes per pajes monitorida", + "watching": "Monitorinte...", + "unwatching": "Desmonitorinte...", + "watcherrortext": "Un era ia aveni en cambia tua preferes de pajes monitorida per \"$1\".", "enotif_reset": "Marca tota pajes como visitada", - "created": "Creada", - "deletepage": "Sutrae la paje", + "enotif_impersonal_salutation": "Usor de {{SITENAME}}", + "enotif_subject_deleted": "Paje $1 de {{SITENAME}} ia es sutraeda par $2", + "enotif_subject_created": "Paje $1 de {{SITENAME}} ia es creada par $2", + "enotif_subject_moved": "Paje $1 de {{SITENAME}} ia es moveda par $2", + "enotif_subject_restored": "Paje $1 de {{SITENAME}} ia es restorada par $2", + "enotif_subject_changed": "Paje $1 de {{SITENAME}} ia es cambiada par $2", + "enotif_body_intro_deleted": "La paje $1 de {{SITENAME}} ia es sutraeda a $PAGEEDITDATE par $2; vide $3.", + "enotif_body_intro_created": "La paje $1 de {{SITENAME}} ia es creada a $PAGEEDITDATE par $2; vide $3 per la revisa presente.", + "enotif_body_intro_moved": "La paje $1 de {{SITENAME}} ia es moveda a $PAGEEDITDATE par $2; vide $3 per la revisa presente.", + "enotif_body_intro_restored": "La paje $1 de {{SITENAME}} ia es restorada a $PAGEEDITDATE par $2; vide $3 per la revisa presente.", + "enotif_body_intro_changed": "La paje $1 de {{SITENAME}} ia es cambiada a $PAGEEDITDATE par $2; vide $3 per la revisa presente.", + "enotif_lastvisited": "Per tota cambias pos tua visita la plu resente, vide $1", + "enotif_lastdiff": "Per regarda esta cambia, vide $1", + "enotif_anon_editor": "usor anonim $1", + "enotif_body": "Cara $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nResoma de editor: $PAGESUMMARY $PAGEMINOREDIT\n\nContata la editor:\neposta: $PAGEEDITOR_EMAIL\nvici: $PAGEEDITOR_WIKI\n\nNo plu avisas va aveni pos plu cambias, estra si tu visita esta paje cuando tu es autenticida. Tu pote ance reinisia la ajustas de avisa per tota la pajes cual tu monitori.\n\nTua sistem amin de avisa de {{SITENAME}}\n\n--\nPer cambia tua preferes de avisa par eposta, visita\n{{canonicalurl:{{#special:Preferences}}}}\n\nPer cambia tua lista de pajes monitorida, visita\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nPer sutrae la paje de tua lista monitorida, visita\n$UNWATCHURL\n\nComentas e plu aida:\n$HELPPAGE", + "enotif_minoredit": "Esta es un edita minor", + "created": "creada", + "changed": "cambiada", + "deletepage": "Sutrae paje", "confirm": "Aproba", - "historywarning": "Avisa! La paje ce tu intende sutrae, el ave un istoria:", - "confirmdeletetext": "Tu va pronto sutrae un paje con tota se istoria. Per favore, afirma ce tu intende esta, ce tu comprende la resultas, e ce tu fa esta en acorda con [[{{MediaWiki:Policy-url}}|la prometes]].", - "actioncomplete": "Ata completada", + "excontent": "contenida ia es: \"$1\"", + "excontentauthor": "contenida ia es: \"$1\", e la sola contribuor ia es \"[[Special:Contributions/$2|$2]]\" ([[User talk:$2|discute]])", + "exbeforeblank": "contenida ante vacui ia es: \"$1\"", + "delete-confirm": "Sutrae \"$1\"", + "delete-legend": "Sutrae", + "historywarning": "Avisa: La paje cual tu es a punto de sutrae ave un istoria con $1 {{PLURAL:$1|revisa|revisas}}:", + "historyaction-submit": "Mostra", + "confirmdeletetext": "Tu es a punto de sutrae un paje con tota sua istoria.\nPer favore, confirma ce tu intende fa esta, ce tu comprende la resultas, e ce tu fa esta en acorda con [[{{MediaWiki:Policy-url}}|la politica]].", + "actioncomplete": "Ata ia susede", + "actionfailed": "Ata ia fali", "deletedtext": "\"$1\" ia es sutraeda.\nVide $2 per un catalogo de sutraes resente.", - "dellogpage": "Arcivo de sutraes", + "dellogpage": "Rejistra de sutraes", + "dellogpagetext": "A su es un lista de la sutraes la plu resente.", + "deletionlog": "rejistra de sutraes", + "reverted": "Reversada a revisa plu temprana", "deletecomment": "Razona:", "deleteotherreason": "Otra/plu razona:", "deletereasonotherlist": "Otra razona", + "deletereason-dropdown": "*Razonas comun de sutrae\n** Spam\n** Vandalisme\n** Viole de direto de autor\n** Solisitada par autor\n** Redirije rompeda", + "delete-edit-reasonlist": "Edita razonas de sutrae", + "delete-toobig": "Esta paje ave un istoria grande de edita, con plu ca $1 {{PLURAL:$1|revisa|revisas}}.\nLa sutrae de tal pajes es restrinjeda per preveni disturbas nonintendeda a {{SITENAME}}.", + "delete-warning-toobig": "Esta paje ave un istoria grande de edita, con plu ca $1 {{PLURAL:$1|revisa|revisas}}.\nSi tu sutrae lo, esta va disturba cisa la opera de la banco de datos de {{SITENAME}};\ncontinua cauta.", + "deleteprotected": "Tu no pote sutrae esta paje car lo es protejeda.", + "deleting-backlinks-warning": "Avisa: [[Special:WhatLinksHere/{{FULLPAGENAME}}|Otra pajes]] lia a o transclui la paje cual tu es a punto de sutrae.", + "deleting-subpages-warning": "Avisa: La paje cual tu es a punto de sutrae ave [[Special:PrefixIndex/{{FULLPAGENAME}}/|{{PLURAL:$1|un supaje|$1 supajes|51=plu ca 50 supajes}}]].", + "rollback": "Reversa editas", "rollbacklink": "reversa", "rollbacklinkcount": "reversa $1 {{PLURAL:$1|edita|editas}}", - "protectlogpage": "Arcivo de protejes", + "rollbacklinkcount-morethan": "reversa plu ca $1 {{PLURAL:$1|edita|editas}}", + "rollbackfailed": "Reversa ia fali", + "rollback-missingparam": "Parametres nesesada no ia spesifada en la solisita.", + "rollback-missingrevision": "La datos de revisa no pote es cargada.", + "cantrollback": "La edita no pote es reversada;\nla contribuor la plu resente es la sola autor de esta paje.", + "alreadyrolled": "La edita la plu resente de [[:$1]] par [[User:$2|$2]] ([[User talk:$2|discute]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) no pote es reversada;\nun otra usor ia edita o reversa ja la paje.\n\nLa edita la plu resente a la paje ia es par [[User:$3|$3]] ([[User talk:$3|discute]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).", + "editcomment": "La resoma de edita ia es: $1.", + "revertpage": "Editas par [[Special:Contributions/$2|$2]] ([[User talk:$2|discute]]) ia es reversada a la revisa la plu resente par [[User:$1|$1]]", + "revertpage-nouser": "Editas par un usor ascondeda ia es reversada a la revisa la plu resente par [[User:$1|$1]]", + "rollback-success": "Editas par {{GENDER:$3|$1}} ia es reversada e cambiada a la revisa la plu resente par {{GENDER:$4|$2}}", + "rollback-success-notify": "Editas par $1 ia es reversada e cambiada a la revisa la plu resente par $2. [$3 Mostra cambias]", + "sessionfailure-title": "Fali de sesion", + "sessionfailure": "Lo pare ce tua sesion de autentici ave un problem;\nesta ata ia es canselada per proteje contra saisis de sesion.\nRevade a la paje presedente, recarga acel paje, e atenta alora denova.", + "changecontentmodel": "Cambia model de contenida de un paje", + "changecontentmodel-legend": "Cambia model de contenida", + "changecontentmodel-title-label": "Titulo de paje", + "changecontentmodel-model-label": "Model nova de contenida", + "changecontentmodel-reason-label": "Razona:", + "changecontentmodel-submit": "Cambia", + "changecontentmodel-success-title": "La model de contenida ia es cambiada", + "changecontentmodel-success-text": "La tipo de contenida de [[:$1]] ia es cambiada.", + "changecontentmodel-cannot-convert": "La contenida de [[:$1]] no pote es convertida a la tipo $2", + "changecontentmodel-nodirectediting": "La model de contenida $1 no suporta editas direta", + "changecontentmodel-emptymodels-title": "No modeles de contenida es disponable", + "changecontentmodel-emptymodels-text": "La contenida de [[:$1]] no pote es convertida a cualce tipo.", + "log-name-contentmodel": "Rejistra de cambias de model de contenida", + "log-description-contentmodel": "Esta paje lista cambias a la model de contenida de pajes, e pajes cual ia es creada con un model noninisial de contenida.", + "logentry-contentmodel-new": "$1 {{GENDER:$2|crea}} la paje $3 con un model noninisial de contenida \"$5\"", + "logentry-contentmodel-change": "$1 {{GENDER:$2|ia cambia}} la model de contenida de la paje $3 de \"$4\" a \"$5\"", + "logentry-contentmodel-change-revertlink": "reversa", + "logentry-contentmodel-change-revert": "reversa", + "protectlogpage": "Rejistra de protejes", + "protectlogtext": "A su es un lista de cambias a protejes de pajes.\nVide la [[Special:ProtectedPages|lista de pajes protejeda]] per la protejes de paje cual funsiona a presente.", "protectedarticle": "proteje \"[[$1]]\"", "modifiedarticleprotection": "cambia nivel de proteje per \"[[$1]]\"", - "unprotectedarticle": "''[[$1]]'' desprotejeda", - "protect-title": "Fisa nivel de proteje a \"$1\"", - "prot_1movedto2": "[[$1]] es moveda a [[$2]]", + "unprotectedarticle": "desproteje \"[[$1]]\"", + "movedarticleprotection": "move ajustas de proteje de \"[[$2]]\" a \"[[$1]]\"", + "protectedarticle-comment": "{{GENDER:$2|Proteje}} \"[[$1]]\"", + "modifiedarticleprotection-comment": "{{GENDER:$2|Cambia nivel de proteje}} per \"[[$1]]\"", + "unprotectedarticle-comment": "{{GENDER:$2|Sutrae proteje}} de \"[[$1]]\"", + "protect-title": "Cambia nivel de proteje per \"$1\"", + "protect-title-notallowed": "Regarda nivel de proteje de \"$1\"", + "prot_1movedto2": "[[$1]] ia move a [[$2]]", + "protect-badnamespace-title": "Spasio de nom nonprotejable", + "protect-badnamespace-text": "Pajes en esta spasio de nom no pote es protejeda.", + "protect-norestrictiontypes-text": "Esta paje no pote es protejeda car no tipos de restrinje es disponable.", + "protect-norestrictiontypes-title": "Paje nonprotejable", "protect-legend": "Aproba la proteje", "protectcomment": "Razona:", - "protectexpiry": "Fini:", - "protect_expiry_invalid": "Ora de fini no es legal.", - "protect_expiry_old": "Ora de fini es en la pasada.", - "protect-text": "Tu pote vide e cambia la nivel de proteje asi per la paje '''$1'''.", - "protect-locked-access": "Tu conta no ave permite per cambia niveles de proteje.\nAsi es la ajustas presente per la paje '''$1''':", - "protect-cascadeon": "Esta paje es aora protejeda per ce el es incluida en esta {{PLURAL:$1|paje|pajes}} ce ave proteje cascadente ativa. Tu pote cambia la nivel de proteje per esta paje, ma esta no va influense la proteje cascadente.", + "protectexpiry": "Desvalidi:", + "protect_expiry_invalid": "Tempo de fini es nonvalida.", + "protect_expiry_old": "Tempo de desvalidi ia pasa ja.", + "protect-unchain-permissions": "Desclavi plu ajustas de proteje", + "protect-text": "Asi tu pote regarda e cambia la nivel de proteje per la paje $1.", + "protect-locked-blocked": "Tu no pote cambia niveles de proteje cuando impedida.\nAsi es la ajustas presente per la paje $1:", + "protect-locked-dblock": "Niveles de proteje no pote es cambiada car la banco de datos ave un semafor ativa.\nAsi es la ajustas presente per la paje $1:", + "protect-locked-access": "Tua conta no es permeteda a cambia niveles de proteje de pajes.\nAsi es la ajustas presente per la paje $1:", + "protect-cascadeon": "Esta paje es protejeda a presente, car lo es transcluida en la {{PLURAL:$1|paje|pajes}} seguente, cual es cascadin protejeda. Cambias a la nivel de proteje per esta paje no va afeta la proteje cascadin.", "protect-default": "Permete tota usores", - "protect-fallback": "Nesesa permite \"$1\"", - "protect-level-autoconfirmed": "Impedi usores nova e nonenscriveda", - "protect-level-sysop": "Sola sysopes", - "protect-summary-cascade": "cascadente", - "protect-expiring": "fini $1 (UTC)", - "protect-cascade": "Proteje pajes ce es incluida en esta paje (proteje cascadente)", - "protect-cantedit": "Tu no pote cambia la nivel de proteje de esta paje, per ce tu no ave la permite per edita el.", - "protect-expiry-options": "1 ora:1 hour,1 dia:1 day,1 semana:1 week,2 semanas:2 weeks,1 mensa:1 month,3 mensas:3 months,6 mensas:6 months,1 anio:1 year,nonlimitada:infinite", + "protect-fallback": "Permete sola usores con permete \"$1\"", + "protect-level-autoconfirmed": "Permete sola usores autoconfirmada", + "protect-level-sysop": "Permete sola dirijores", + "protect-summary-cascade": "cascadin", + "protect-expiring": "desvalidi a $1 (UTC)", + "protect-expiring-local": "desvalidi a $1", + "protect-expiry-indefinite": "nunca desvalidinte", + "protect-cascade": "Proteje pajes cual es incluida en esta paje (proteje cascadin)", + "protect-cantedit": "Tu no pote cambia la niveles de proteje de esta paje, car tu no es permeteda a edita lo.", + "protect-othertime": "Otra tempo:", + "protect-othertime-op": "otra tempo", + "protect-existing-expiry": "Tempo esistente de desvalidi: $3, $2", + "protect-existing-expiry-infinity": "Tempo esistente de desvalidi: infinita", + "protect-otherreason": "Otra/plu razona:", + "protect-otherreason-op": "Otra razona", + "protect-dropdown": "*Razonas comun de proteje\n** Tro multe vandalisme\n** Tro multe spami\n** Geras de edita contraproduinte\n** Paje con multe trafica", + "protect-edit-reasonlist": "Edita razonas de proteje", + "protect-expiry-options": "1 ora:1 hour,1 dia:1 day,1 semana:1 week,2 semanas:2 weeks,1 mense:1 month,3 menses:3 months,6 menses:6 months,1 anio:1 year,infinita:infinite", "restriction-type": "Permete:", "restriction-level": "Nivel de restrinje:", + "minimum-size": "Grandia minima", + "maximum-size": "Grandia masima", + "pagesize": "(baites)", "restriction-edit": "Edita", "restriction-move": "Move", - "undelete": "Restora paje sutraeda", + "restriction-create": "Crea", + "restriction-upload": "Carga", + "restriction-level-sysop": "intera protejeda", + "restriction-level-autoconfirmed": "semiprotejeda", + "restriction-level-all": "cualce nivel", + "undelete": "Restora pajes sutraeda", + "undeletepage": "Regarda e restora pajes sutraeda", + "undeletepagetitle": "La seguente es composada de revisas sutraeda de [[:$1|$1]].", + "viewdeletedpage": "Regarda pajes sutraeda", + "undeletepagetext": "La {{PLURAL:$1|paje|$1 pajes}} seguente es sutraeda ma ancora en la arcivo e pote es rejistrada.\nLa arcivo es cisa periodal vacuida.", + "undelete-fieldset-title": "Restora revisas", + "undeleteextrahelp": "Per restora la istoria intera de la paje, desmarca tota caxas e clica {{int:undeletebtn}}.\nPer fa un restora partal, marca la caxas corespondente a la revisas cual tu vole restora, e clica {{int:undeletebtn}}.", + "undeleterevisions": "$1 {{PLURAL:$1|revisa|revisas}} sutraeda", + "undeletehistory": "Si tu restora la paje, tota revisas va es restorada a la istoria.\nSi un paje nova con la mesma nom ia es creada pos la sutrae, la revisas restorada va apare en la istoria presedente.", + "undeleterevdel": "Desutrae no va aveni si lo ta fa ce la revisa la plu resente de la paje o fix va es partal sutraeda.\n En tal casos, tu debe deseleje o desasconde la revisa sutraeda la plu resente.", + "undeletehistorynoadmin": "Esta paje es sutraeda.\nLa razona de sutrae es mostrada en la resoma a su, con ance detalias de la usores ci ia edita esta paje ante la sutrae.\nLa testo mesma de esta revisas sutraeda es sola disponable a dirijores.", + "undelete-revision": "Revisa sutraeda de $1 (a $4, a $5) par $3:", + "undeleterevision-missing": "Revisa nonvalida o mancante.\nTu ave cisa un mal lia, o cisa la revisa ia es restorada o sutraeda de la arcivo.", + "undeleterevision-duplicate-revid": "{{PLURAL:$1|One revisa|$1 revisas}} no ia pote es restorada, car sua rev_id ia es ja usada.", + "undelete-nodiff": "No revisa presedente ia es trovada.", "undeletebtn": "Restora", + "undeletelink": "regarda/restora", + "undeleteviewlink": "regarda", + "undeleteinvert": "Inversa la eleje", + "undeletecomment": "Razona:", + "cannotundelete": "Alga o tota de la desutrae ia fali:\n$1", + "undeletedpage": "$1 ia es restorada\n\nConsulta la [[Special:Log/delete|rejistra de sutraes]] per un lista de sutraes e restoras resente.", + "undelete-header": "Regarda [[Special:Log/delete|la rejistra de sutraes]] per pajes resente sutraeda.", + "undelete-search-title": "Xerca en pajes sutraeda", + "undelete-search-box": "Xerca en pajes sutraeda", + "undelete-search-prefix": "Mostra pajes comensante con:", + "undelete-search-full": "Mostra titulos de paje cual conteni:", "undelete-search-submit": "Xerca", + "undelete-no-results": "No pajes conteninte ia es trovada en la arcivo de sutraes.", + "undelete-filename-mismatch": "La revisa de fix con ora $1 no pote es desutraeda: Noncoresponde de nom de fix.", + "undelete-bad-store-key": "La revisa de fix con ora $1 no pote es desutraeda: Fix ia manca ante sutrae.", + "undelete-cleanup-error": "Era en sutrae fix arcivida nonusada \"$1\".", + "undelete-missing-filearchive": "La fix arcivida con numero $1 no pote es restorada car lo no es en la banco de datos.\nCisa lo es ja desutraeda.", + "undelete-error": "Era en desutrae paje", + "undelete-error-short": "Era en desutrae fix: $1", + "undelete-error-long": "Eras ia aveni en desutrae la fix:\n\n$1", + "undelete-show-file-confirm": "Esce tu es serta ce tu vole regarda la revisa sutraeda de la fix \"$1\" de $2 a $3?", + "undelete-show-file-submit": "Si", "namespace": "Spasio de nom:", "invert": "Inversa la eleje", "tooltip-invert": "Marca esta caxa per asconde cambias a pajes en la spasio elejeda (e ance la spasio asosiada si acel es marcada)", + "tooltip-whatlinkshere-invert": "Marca esta caxa per asconde lias de pajes en la spasio de nom elejeda.", "namespace_association": "Spasio de nom asosiada", "tooltip-namespace_association": "Marca esta caxa per inclui ance la spasio de discute o tema asosiada con la spasio elejeda", "blanknamespace": "(Xef)", - "contributions": "Contribuis par {{GENDER:$1|usor}}", + "contributions": "Contribuis de {{GENDER:$1|usor}}", "contributions-title": "Contribuis de usor per $1", "mycontris": "Mea contribuis", "anoncontribs": "Contribuis", "contribsub2": "Per {{GENDER:$3|$1}} ($2)", - "nocontribs": "No cambias coresponde a esta criterios.", + "contributions-userdoesnotexist": "Conta de usor \"$1\" no es rejistrada.", + "nocontribs": "No cambias corespondente a esta criterios ia es trovada.", "uctop": "(aora)", "month": "De mense (e plu vea):", "year": "De anio (e plu vea):", - "sp-contributions-newbies": "Mostra sola contribuis par contas nova", + "sp-contributions-newbies": "Mostra sola contribuis de contas nova", "sp-contributions-newbies-sub": "Per contas nova", - "sp-contributions-blocklog": "impedi arcivo", + "sp-contributions-newbies-title": "Contribuis de usor per contas nova", + "sp-contributions-blocklog": "rejistra de impedis", + "sp-contributions-suppresslog": "contribuis supresada de {{GENDER:$1|usor}}", + "sp-contributions-deleted": "contribuis sutraeda de {{GENDER:$1|usor}}", "sp-contributions-uploads": "cargas", - "sp-contributions-logs": "Lista de arcivos", + "sp-contributions-logs": "rejistras", "sp-contributions-talk": "discute", - "sp-contributions-userrights": "Dirije de la diretos de usores", + "sp-contributions-userrights": "Maneja de diretos de {{GENDER:$1|usor}}", + "sp-contributions-blocked-notice": "Esta usor es impedida a presente.\nLa entrada la plu resente de la rejistra de impedis es mostrada a su per clari:", + "sp-contributions-blocked-notice-anon": "Esta adirije IP es impedida a presente.\nLa entrada la plu resente de la rejistra de impedis es mostrada a su per clari:", "sp-contributions-search": "Xerca contribuis", - "sp-contributions-username": "Adirije de IP o nom de usor:", + "sp-contributions-username": "Adirije IP o nom de usor:", "sp-contributions-toponly": "Mostra sola editas cual es revisas la plu resente.", "sp-contributions-newonly": "Mostra sola editas cual es creas de pajes", + "sp-contributions-hideminor": "Asconde editas minor", "sp-contributions-submit": "Xerca", + "sp-contributions-outofrange": "No resultas pote es mostrada. La estende IP solisitada es plu grande\nce la limita CIDR de /$1.", "whatlinkshere": "Lias a esta paje", "whatlinkshere-title": "Pajes cual lia a \"$1\"", "whatlinkshere-page": "Paje:", "linkshere": "La pajes seguente lia a [[:$1]]:", - "nolinkshere": "No pajes lia a '''[[:$1]]'''.", + "nolinkshere": "No pajes lia a [[:$1]].", + "nolinkshere-ns": "No pajes lia a [[:$1]] en la spasio de nom elejeda.", "isredirect": "paje redirijente", "istemplate": "transclui", "isimage": "lia de fix", @@ -794,117 +2330,420 @@ "whatlinkshere-hidelinks": "$1 lias", "whatlinkshere-hideimages": "$1 lias de fix", "whatlinkshere-filters": "Filtros", - "blockip": "Impedi usor", + "whatlinkshere-submit": "Vade", + "autoblockid": "Autoimpedi #$1", + "block": "Impedi usor", + "unblock": "Desimpedi usor", + "blockip": "Impedi {{GENDER:$1|usor}}", + "blockip-legend": "Impedi usor", + "blockiptext": "Usa la formulario a su per impedi asedes scrivente de un adirije IP o nom de usor spesifada.\nOn debe fa esta sola per preveni vandalsime, e longo la [[{{MediaWiki:Policy-url}}|politica]].\nSpesifa un razona a su (per esemplo, indicante pajes individua cual ia es vandalida).\nPer impedi adirijes IP, on pote usa la sintatica [https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing CIDR]; la estende la plu grande permeteda es /$1 per IPv4 e /$2 per IPv6.", + "ipaddressorusername": "Adirije IP o nom de usor:", + "ipbexpiry": "Desvalidi:", "ipbreason": "Razona:", + "ipbreason-dropdown": "*Razonas comun de impedi\n** Ajunta de informas falsa\n** Sutrae de contenida de pajes\n** Spam liante a pajerias esterna\n** Ajunta de asurdas/babela a pajes\n** Condui menasante/molestante\n** Malusa de multe contas\n** Nom de usor nonasetable", + "ipb-hardblock": "Preveni usores autenticida de edita de esta adirije IP", + "ipbcreateaccount": "Preveni crea de contas", + "ipbemailban": "Preveni ce la usor envia epostas", + "ipbenableautoblock": "Impedi automata la adirije IP la plu resente usada par esta usor, e cualce adirijes IP de cual los atenta edita en futur", "ipbsubmit": "Impedi esta usor", + "ipbother": "Otra tempo:", "ipboptions": "2 oras:2 hours,1 dia:1 day,3 dias:3 days,1 semana:1 week,2 semanas:2 weeks,1 mense:1 month,3 menses:3 months,6 menses:6 months,1 anio:1 year,infinita:infinite", - "blockipsuccesssub": "La impedi susede", - "ipusubmit": "Desimpedi esta adirije", - "ipblocklist": "Liste de adirijes de IP e usores impedida", + "ipbhidename": "Asconde nom de usor de editas e listas", + "ipbwatchuser": "Monitori la pajes de usor e discute de esta usor", + "ipb-disableusertalk": "Preveni ce esta usor edita sua propre paje de discute cuando el es impedida", + "ipb-change-block": "Reimpedi la usor con esta ajustas", + "ipb-confirm": "Confirma impedi", + "badipaddress": "Adirije IP nonvalida", + "blockipsuccesssub": "Impedi ia susede", + "blockipsuccesstext": "[[Special:Contributions/$1|$1]] es impedida.
    \nVide la [[Special:BlockList|lista de impedis]] per esamina impedis.", + "ipb-blockingself": "Tu es a punto de impedi tu mesma! Esce tu es serta ce tu vole fa esta?", + "ipb-confirmhideuser": "Tu es a punto de impedi un usor per ci \"asconde usor\" es comutada. Esta va supresa la nom de la usor en tota listas e rejistras. Esce tu es serta ce tu vole fa esta?", + "ipb-confirmaction": "Si tu es serta ce tu vole vera fa esta, marca la campo \"{{int:ipb-confirm}}\" a su, per favore.", + "ipb-edit-dropdown": "Edita razonas de impedi", + "ipb-unblock-addr": "Desimpedi $1", + "ipb-unblock": "Desimpedi un nom de usor o adirije IP", + "ipb-blocklist": "Regarda impedis esistente", + "ipb-blocklist-contribs": "Contribuis per $1", + "ipb-blocklist-duration-left": "$1 resta", + "unblockip": "Desimpedi usor", + "unblockiptext": "Usa la formulario a su per restora asedes scrivente a un adirije IP o nom de usor impedida en la pasada.", + "ipusubmit": "Sutrae esta impedi", + "unblocked": "[[User:$1|$1]] es desimpedida.", + "unblocked-range": "$1 es desimpedida.", + "unblocked-id": "Impedi $1 es sutraeda.", + "unblocked-ip": "[[Special:Contributions/$1|$1]] es desimpedida.", + "blocklist": "Usores impedida", + "autoblocklist": "Autoimpedis", + "autoblocklist-submit": "Xerca", + "autoblocklist-legend": "Lista autoimpedis", + "autoblocklist-localblocks": "{{PLURAL:$1|Autoimpedi|Autoimpedis}} local", + "autoblocklist-total-autoblocks": "Cuantia intera de autoimpedis: $1", + "autoblocklist-empty": "La lista de autoimpedis es vacua.", + "autoblocklist-otherblocks": "Otra {{PLURAL:$1|autoimpedi|autoimpedis}}", + "ipblocklist": "Usores impedida", + "ipblocklist-legend": "Trova un usor impedida", + "blocklist-userblocks": "Asconde impedis de conta", + "blocklist-tempblocks": "Asconde impedis tempora", + "blocklist-addressblocks": "Asconde impedis de IP individua", + "blocklist-rangeblocks": "Asconde impedis de estendes IP", + "blocklist-timestamp": "Ora", + "blocklist-target": "Ojeto", + "blocklist-expiry": "Desvalidi", + "blocklist-by": "Dirijor impedinte", + "blocklist-params": "Parametres de impedi", + "blocklist-reason": "Razona", "ipblocklist-submit": "Xerca", + "ipblocklist-localblock": "Impedi local", + "ipblocklist-otherblocks": "Otra {{PLURAL:$1|impedi|impedis}}", "infiniteblock": "infinita", + "expiringblock": "desvalidi a $1 a $2", + "anononlyblock": "sola anonim", + "noautoblockblock": "autoimpedi descomutada", + "createaccountblock": "crea de contas descomutada", + "emailblock": "epostas descomutada", + "blocklist-nousertalk": "no pote edita sua propre paje de discute", + "ipblocklist-empty": "La lista de impedis es vacua.", + "ipblocklist-no-results": "La adirije IP o nom de usor spesifada no es impedida.", "blocklink": "impedi", "unblocklink": "desimpedi", + "change-blocklink": "cambia impedi", "contribslink": "contribuis", - "blocklogpage": "Impedi arcivo", + "emaillink": "envia eposta", + "autoblocker": "Autoimpedida car tua adirije IP ia es resente usada par \"[[User:$1|$1]]\".\nLa razona donada per la impedi de $1 es \"$2\"", + "blocklogpage": "Rejistra de impedis", + "blocklog-showlog": "Esta usor ia es impedida a ante.\nLa rejistra de impedis es mostrada a su per claria:", + "blocklog-showsuppresslog": "Esta usor ia es impedida e ascondeda a ante.\nLa rejistra de supresas es mostrada a su per claria:", "blocklogentry": "impedi [[$1]] per desvalidi a $2 $3", "reblock-logentry": "cambia la impedi de [[$1]] per desvalidi a $2 $3", - "block-log-flags-nocreate": "crea de contas descapasida", - "proxyblocker": "Blocador de proxis", + "blocklogtext": "Esta es un rejistra de atas de impedi e desimpedi usores.\nAdirijes IP automata impedida no es listada.\nVide la [[Special:BlockList|lista de impedis]] per la lista de proibis e impedis funsionante a presente.", + "unblocklogentry": "desimpedi $1", + "block-log-flags-anononly": "sola usores anonim", + "block-log-flags-nocreate": "crea de contas descomutada", + "block-log-flags-noautoblock": "autoimpedi descomutada", + "block-log-flags-noemail": "eposta descomutada", + "block-log-flags-nousertalk": "no pote edita sua propre paje de discute", + "block-log-flags-angry-autoblock": "autoimpedida bonida comutada", + "block-log-flags-hiddenname": "nom de usor ascondeda", + "range_block_disabled": "La capasia de dirijores de crea impedis de estendes IP es descomutada.", + "ipb_expiry_invalid": "Tempo de desvalidi es nonvalida.", + "ipb_expiry_old": "Tempo de desvalidi ia pasa ja.", + "ipb_expiry_temp": "Impedis de nomes ascondeda debe es permanente.", + "ipb_hide_invalid": "Esta conta no pote es supresada; lo ave plu ca {{PLURAL:$1|un edita|$1 editas}}.", + "ipb_already_blocked": "\"$1\" es ja impedida.", + "ipb-needreblock": "$1 es ja impedida. Esce tu vole cambia la ajustas?", + "ipb-otherblocks-header": "Otra {{PLURAL:$1|impedi|impedis}}", + "unblock-hideuser": "Tu no pote desimpedi esta usor, car sua nom de usor es ascondeda.", + "ipb_cant_unblock": "Era: La impedi con numero $1 no ia es trovada. Cisa on ia desimpedi ja lo.", + "ipb_blocked_as_range": "Era: La adirije IP $1 no es direta impedida e no pote es desimpedida.\nMa lo es impedida como parte de la estende $2, cual pote es desimpedida.", + "ip_range_invalid": "Estende nonvalida de adirijes IP.", + "ip_range_toolarge": "Impedis de estendes IP plu grande ca /$1 no es permeteda.", + "proxyblocker": "Impedador de proxis", + "proxyblockreason": "Tua adirije IP es impedida car lo es un proxi abrida.\nPer favore, contata tua furnor de servi de interede o la suporta tecnical de tua organiza e informa los de esta problem major de securia.", + "sorbsreason": "Tua adirije IP es listada como un proxi abrida en la DNSBL usada par {{SITENAME}}.", + "sorbs_create_account_reason": "Tua adirije IP es listada como un proxi abrida en la DNSBL usada par {{SITENAME}}.\nTu no pote crea un conta.", + "softblockrangesreason": "Contribuis anonim no es permeteda de tua adirije IP ($1). Autentici, per favore.", + "xffblockreason": "Un adirije IP en la xapo X-Forwarded-For, o la tua o lo de un proxi cual tu usa, es impedida. La razona orijinal de impedi ia es: $1", + "cant-see-hidden-user": "La usor ci tu atenta impedi es ja impedida e ascondeda.\nCar tu no ave la direto \"hideuser\", tu no pote vide o edita la impedi de la usor.", + "ipbblocked": "Tu no pote impedi o desimpedi otra usores, car tu mesma es impedida.", + "ipbnounblockself": "Tu no es permeteda a desimpedi tu mesma.", + "lockdb": "Clavi banco de datos", + "unlockdb": "Desclavi banco de datos", + "lockdbtext": "Si tu clavi la banco de datos, esta va suspende la capasia de tota usores de edita pajes, cambia sua preferes, edita sua listas de pajes monitorida, e otra cosas cual funsiona par cambia la datos.\nPer favore, confirma ce esta es lo cual tu intende fa, e ce tu va desclavi la banco de datos cuando tua manteni es completida.", + "unlockdbtext": "Si tu desclavi la banco de datos, esta va restora la capasia de tota usores de edita pajes, cambia sua preferes, edita sua listas de pajes monitorida, e otra cosas cual funsiona par cambia la datos.\nPer favore, confirma ce esta es lo cual tu intende fa.", + "lockconfirm": "Si, me vole vera clavi la banco de datos.", + "unlockconfirm": "Si, me vole vera desclavi la banco de datos.", + "lockbtn": "Clavi banco de datos", + "unlockbtn": "Desclavi banco de datos", + "locknoconfirm": "Tu no ia marca la caxa de confirma.", + "lockdbsuccesssub": "La banco de datos es clavida", + "unlockdbsuccesssub": "La banco de datos es desclavida", + "lockdbsuccesstext": "La banco de datos es clavida.
    \nNo oblida [[Special:UnlockDB|desclavi lo]] cuando tua manteni es completida.", + "unlockdbsuccesstext": "La banco de datos es desclavida.", + "lockfilenotwritable": "La fix de semafor de banco de datos no es scrivable.\nPer clavi o desclavi la datos, esta nesesa es scrivable per la servador.", + "databaselocked": "La banco de datos es ja clavida.", + "databasenotlocked": "La banco de datos no es clavida.", + "lockedbyandtime": "(par {{GENDER:$1|$1}} a $2 a $3)", + "move-page": "Move $1", "move-page-legend": "Move paje", - "movepagetext": "Usa la forma a su va cambia la nom de un paje, e va move tota se istoria a la nom nova.\nLa titulo vea va deveni un paje de redirije a la titulo nova.\nLias a la titulo de la paje vea no va es cambiada;\nTu debe vide serta ce es redirijes duple o rompeda.\nTu es respondable per es serta ce la lias va continua vade a la locas intendeda.\n\nNota ce la paje '''no''' va es moveda si es ja un paje a la titulo nova, sin el es vacua o un redirije e no ave un istoria de editas presedente.\nEsta sinifia ce tu pote cambia la nom de un paje a la loca presedente si tu era, e tu no pote scrive supra un paje ce esiste ja.\n\n'''AVISA!'''\nEsta pote es un cambia dramos e nonespetada per un paje poplal;\nper favore, es serta ce tu comprende la resulta de esta ata ante tu continua.", - "movepagetalktext": "La paje de discuta de esta paje va es moveda automatica con el '''eseta si:'''\n*Un paje de discuta ce no es vacua esiste ja su la nom nova, o\n*Tu cambia la indica en la caxa su.\n\nEn esta casos, tu va nesesa move o fusa la paje per mano, si desirada.", + "movepagetext": "Si tu usa la formulario a su, esta va cambia la nom de un paje, e va move tota sua istoria a la nom nova.\nLa titulo vea va deveni un paje de redirije a la titulo nova.\nTu pote ajusta automata redirijes cual punta a la titulo orijinal.\nSi tu eleje no fa esta, tu debe serti ce redirijes no deveni [[Special:DoubleRedirects|duplida]] o [[Special:BrokenRedirects|rompeda]].\nTu debe es serta ce lias continua punta a sua locas intendeda.\n\nNota ce la paje no va es moveda si on ave ja un paje con la titulo nova, estra si lo es un redirije e no ave un istoria de editas pasada.\nEsta vole dise ce tu pote renomi un paje a sua titulo presedente si tu era, e tu no pote suprascrive un paje esistente.\n\nNota:\nEsta pote es un cambia dramosa e nonespetada per un paje popular;\nper favore, serti ce tu comprende la resulta de esta ante continua.", + "movepagetext-noredirectfixer": "Si tu usa la formulario a su, esta va cambia la nom de un paje, e va move tota sua istoria a la nom nova.\nLa titulo vea va deveni un paje de redirije a la titulo nova.\nTu debe serti ce redirijes no deveni [[Special:DoubleRedirects|duplida]] o [[Special:BrokenRedirects|rompeda]].\nTu debe es serta ce lias continua punta a sua locas intendeda.\n\nNota ce la paje no va es moveda si on ave ja un paje con la titulo nova, estra si lo es un redirije e no ave un istoria de editas pasada.\nEsta vole dise ce tu pote renomi un paje a sua titulo presedente si tu era, e tu no pote suprascrive un paje esistente.\n\nNota:\nEsta pote es un cambia dramosa e nonespetada per un paje popular;\nper favore, serti ce tu comprende la resulta de esta ante continua.", + "movepagetalktext": "Si tu marca esta caxa, la paje de discute asosiada con esta paje va es automata moveda a la titulo nova, estra si un paje nonvacua de discute esiste ja ala.\n\nEn esta situa, tu va debe move o fusa la paje par mano, si desirada.", + "moveuserpage-warning": "Avisa: Tu es a punto de move un paje de usor. Per favore, nota ce sola la paje va es moveda; la usor no va es renomida.", + "movecategorypage-warning": "Avisa: Tu es a punto de move un paje de categoria. Per favore, nota ce sola la paje va es moveda; cualce pajes en la categoria vea no va es recategorida a la nova.", + "movenologintext": "Tu debe es un usor rejistrada e [[Special:UserLogin|autenticida]] per move un paje.", + "movenotallowed": "Tu no es permeteda a move pajes.", + "movenotallowedfile": "Tu no es permeteda a move fixes.", + "cant-move-user-page": "Tu no es permeteda a move pajes de usor (estra supajes).", + "cant-move-to-user-page": "Tu no es permeteda a move un paje a un paje de usor (estra a un supaje de usor).", + "cant-move-category-page": "Tu no es permeteda a move pajes de categoria.", + "cant-move-to-category-page": "Tu no es permeteda a move un paje a un paje de categoria.", + "cant-move-subpages": "Tu no es permeteda a move supajes.", + "namespace-nosubpages": "Spasio de nom \"$1\" no permete supajes.", "newtitle": "Titulo nova:", - "move-watch": "Oserva esta paje", + "move-watch": "Monitori paje fontal e paje destinal", "movepagebtn": "Move paje", "pagemovedsub": "La move ia susede", - "movepage-moved": "'''\"$1\" ia es moveda a \"$2\"'''", - "articleexists": "Un paje con acel nom esiste ja, o la nom ce tu ia eleje no es un nom legal. Per favore, eleje un otra nom.", - "movetalk": "Move la paje de discutes ance", - "movelogpage": "Move arcivo", - "movelogpagetext": "A su es un lista de pajes moveda", + "movepage-moved": "\"$1\" ia es moveda a \"$2\"", + "movepage-moved-redirect": "Un redirije ia es creada.", + "movepage-moved-noredirect": "La crea de un redirije ia es supresada.", + "articleexists": "Un paje con acel nom esiste ja, o la nom cual tu ia eleje no es un nom valida.\nPer favore, eleje un otra nom.", + "cantmove-titleprotected": "Tu no pote move un paje a esta loca, car la titulo nova es protejeda contra crea.", + "movetalk": "Move la paje de discute asosiada", + "move-subpages": "Move supajes (asta $1)", + "move-talk-subpages": "Move supajes de paje de discute (asta $1)", + "movepage-page-exists": "La paje $1 esiste ja e no pote es automata suprascriveda.", + "movepage-page-moved": "La paje $1 ia es moveda a $2.", + "movepage-page-unmoved": "La paje $1 no ia pote es moveda a $2.", + "movepage-max-pages": "La masima de $1 {{PLURAL:$1|paje|pajes}} ia es moveda, e no plu va es automata moveda.", + "movelogpage": "Rejistra de moves", + "movelogpagetext": "A su es un lista de pajes moveda.", + "movesubpage": "{{PLURAL:$1|Supaje|Supajes}}", + "movesubpagetext": "Esta paje ave $1 {{PLURAL:$1|supaje|supajes}} mostrada a su.", + "movesubpagetalktext": "La paje corespondente de discute ave $1 {{PLURAL:$1|supaje|subpajes}} mostrada a su.", + "movenosubpage": "Esta paje ave no supajes.", "movereason": "Razona:", - "revertmove": "retro", + "revertmove": "reversa", + "delete_and_move_text": "La paje destinal \"[[:$1]]\" esiste ja.\nEsce tu vole sutrae lo per crea un spasio per la move?", + "delete_and_move_confirm": "Si, sutrae la paje", + "delete_and_move_reason": "Sutraeda per crea un spasio per move de \"[[$1]]\"", + "selfmove": "Titulos fontal e destinal es la mesma;\nun paje no pote moveda a la mesma paje.", + "immobile-source-namespace": "Pajes en spasio de nom \"$1\" no pote es moveda.", + "immobile-target-namespace": "Pajes no pote es moveda a en spasio de nom \"$1\".", + "immobile-target-namespace-iw": "Lia intervical no es un destina valida per move de paje.", + "immobile-source-page": "Esta paje no es movable.", + "immobile-target-page": "Un paje no pote es moveda a acel titulo destinal.", + "bad-target-model": "La destina desirada usa un otra model de contenida. On no pote converti de $1 a $2.", + "imagenocrossnamespace": "Un fix no pote es moveda a un nom de spasio per nonfixes.", + "nonfile-cannot-move-to-file": "Un nonfix no pote es moveda a un nom de spasio per fixes.", + "imagetypemismatch": "La sufisa nova de fix no coresponde a sua tipo.", + "imageinvalidfilename": "La nom de fix destinal es nonvalida.", + "fix-double-redirects": "Ajusta cualce redirijes cual punta a la titulo orijinal", + "move-leave-redirect": "Lasa un redirije", + "protectedpagemovewarning": "Avisa: Esta paje es protejeda, tal ce sola usores con permetes dirijal pote move lo.\nLa entrada la plu resente de rejistra es mostrada a su per claria:", + "semiprotectedpagemovewarning": "Avisa: Esta paje es protejeda, tal ce sola usores rejistrada pote move lo.\nLa entrada la plu resente de rejistra es mostrada a su per claria:", + "move-over-sharedrepo": "[[:$1]] esiste en un arciveria compartida. Si tu move un fix a esta titulo, tu va suprascrive la fix compartida.", + "file-exists-sharedrepo": "La nom de fix elejeda es ja usada en un arciveria compartida.\nPer favore, eleje un otra nom.", "export": "Esporta pajes", - "allmessages": "Notas de sistem", + "exporttext": "Tu pote esporta la testo e istoria de editas de un paje individua o un colie de pajes, pacida en XML.\nMediaWiki pote emporta esta a un otra vici par la [[Special:Import|paje de emporta]].\n\nPer esporta pajes, tape la titulos en la caxa de testo a su, con un titulo per linia, e eleje esce tu vole la revisa la plu resente como ance tota revisas vea, con la linias de istoria de paje, o la revisa presente con informas sur la edita la plu resente.\n\nEn la caso du, tu pote usa ance un lia, per esemplo [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] per la paje \"[[{{MediaWiki:Mainpage}}]]\".", + "exportall": "Esporta tota pajes", + "exportcuronly": "Inclui sola la revisa presente, no la istoria completa", + "exportnohistory": "----\nNota: Esporta la istoria completa de pajes tra esta formulario es descomutada per razonas de rapidia.", + "exportlistauthors": "Inclui un lista completa de contribuores per esta paje", + "export-submit": "Esporta", + "export-addcattext": "Ajunta pajes de categoria:", + "export-addcat": "Ajunta", + "export-addnstext": "Ajunta pajes de spasio de nom:", + "export-addns": "Ajunta", + "export-download": "Fisa como fix", + "export-templates": "Inclui stensiles", + "export-pagelinks": "Inclui pajes liada asta profondia de:", + "export-manual": "Ajunta pajes par mano:", + "allmessages": "Mesajes de sistem", + "allmessagesname": "Nom", + "allmessagesdefault": "Testo inisial de mesaje", + "allmessagescurrent": "Testo presente de mesaje", + "allmessagestext": "Esta es un lista de mesajes de sistem disponable en la spasio de nom MediaWiki.\nSi tu vole contribui a la tradui jeneral de MediaWiki, per favore visita [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation Locali de MediaWiki] e [https://translatewiki.net translatewiki.net].", + "allmessagesnotsupportedDB": "Esta paje no pote es usada car $wgUseDatabaseMessages es descomutada.", + "allmessages-filter-legend": "Filtri", + "allmessages-filter": "Filtri par state de ajusta", + "allmessages-filter-unmodified": "Nonalterada", + "allmessages-filter-all": "Tota", + "allmessages-filter-modified": "Alterada", + "allmessages-prefix": "Filtri par prefisa", + "allmessages-language": "Lingua:", + "allmessages-filter-submit": "Vade", + "allmessages-filter-translate": "Tradui", "thumbnail-more": "Grandi", + "filemissing": "Fix manca", "thumbnail_error": "Era en crea la imajeta: $1", + "thumbnail_error_remote": "Era de $1:\n$2", + "djvu_page_error": "Paje DjVu estra estende", + "djvu_no_xml": "XML per fix DjVu no pote es retraeda", + "thumbnail-temp-create": "Fix tempora de imajeta no pote es creada", + "thumbnail-dest-create": "Imajeta no pote es fisada a destina", + "thumbnail_invalid_params": "Parametres nonvalida de imajeta", + "thumbnail_toobigimagearea": "Fix con dimensiones plu grande ca $1", + "thumbnail_dest_directory": "Arcivo destinal no pote es creada", + "thumbnail_image-type": "Tipo nonsuportada de imaje", + "thumbnail_gd-library": "Ajusta noncompleta de biblioteca GD: Funsiona $1 manca", + "thumbnail_image-missing": "Fix pare manca: $1", + "thumbnail_image-failure-limit": "Tro multe atentas resente ($1 o plu) ia fali rendere esta imajeta. Atenta denova plu tarda, per favore.", "import": "Emporta pajes", - "importlogpage": "Importa arcivo", - "tooltip-pt-userpage": "{{GENDER:|Tua}} page de usor", - "tooltip-pt-mytalk": "{{GENDER:|Tua}} paje de discutes", + "importinterwiki": "Emporta de un otra vici", + "import-interwiki-text": "Eleje un vici e titulo de paje per emporta.\nDatas de revisas e nomes de editores va es conservada.\nTota emportas de otra vicis es rejistrada en la [[Special:Log/import|rejistra de emportas]].", + "import-interwiki-sourcewiki": "Vici fontal:", + "import-interwiki-sourcepage": "Paje fontal:", + "import-interwiki-history": "Copia tota revisas istorial de esta paje", + "import-interwiki-templates": "Inclui tota stensiles", + "import-interwiki-submit": "Emporta", + "import-mapping-default": "Emporta a locas implicada", + "import-mapping-namespace": "Emporta a un spasio de nom:", + "import-mapping-subpage": "Emporta como supajes de la paje seguente:", + "import-upload-filename": "Nom de fix:", + "import-comment": "Comenta:", + "importtext": "Per favore, esporta la fix de la vici fontal par usa la [[Special:Export|util de esporta]].\nFisa lo a tu computador e carga lo asi.", + "importstart": "Emportante pajes...", + "import-revision-count": "$1 {{PLURAL:$1|revisa|revisas}}", + "importnopages": "No pajes per emporta.", + "imported-log-entries": "$1 {{PLURAL:$1|entrada|entradas}} de rejistra ia es emportada.", + "importfailed": "Emporta ia fali: $1", + "importunknownsource": "Tipo nonconoseda de fonte de emporta", + "importcantopen": "Fix de emporta no ia pote es abrida", + "importbadinterwiki": "Mal lia intervical", + "importsuccess": "Emporta ia fini!", + "importnosources": "No vicis de cual on pote emporta es definida, e cargas direta de istoria es descomutada.", + "importnofile": "No fix de emporta ia es cargada.", + "importuploaderrorsize": "Carga de fix de emporta ia fali.\nLa fix es plu grande ca permeteda per cargas.", + "importuploaderrorpartial": "Carga de fix de importa ia fali.\nSola un parte de la fix ia es cargada.", + "importuploaderrortemp": "Carga de fix de importa ia fali.\nUn arcivo tempora manca.", + "import-parse-failure": "La analise de la XML de la emporta ia fali", + "import-noarticle": "No paje per emporta!", + "import-nonewrevisions": "No revisas ia es emportada (tota ia es o ja presente, o ometeda par causa de eras).", + "xml-error-string": "$1 a linia $2, colona $3 (bait $4): $5", + "import-upload": "Carga datos XML", + "import-token-mismatch": "Datos de sesion es perdeda.\n\nCisa tu ia deveni desautenticida. '''Per favore, serti ce tu es ancora autenticida e atenta denova.'''\nSi lo ancora no funsiona, proba [[Special:UserLogout|desautentici]] e reautentici, e serti ce tua surfador permete cucis de esta pajeria.", + "import-invalid-interwiki": "On no pote emporta de la vici spesifada.", + "import-error-edit": "Paje \"$1\" no ia es emportada car tu no es permeteda a edita lo.", + "import-error-create": "Paje \"$1\" no ia es emportada car tu no es permeteda a crea lo.", + "import-error-interwiki": "Paje \"$1\" no ia es emportada car sua nom es reservada per lia esterna (intervical).", + "import-error-special": "Paje \"$1\" no ia es emportada car lo parteni a un nom de spasio spesial cual no permete pajes.", + "import-error-invalid": "Paje \"$1\" no ia es emportada car la nom a cual lo ta es emportada es nonvalida en esta vici.", + "import-error-unserialize": "Revisa $2 de paje \"$1\" no ia pote es deserialida. La revisa ia es emportada per usa model de contenida $3 serialida como $4.", + "import-error-bad-location": "Revisa $2 usante model de contenida $3 no pote es conservada en \"$1\" en esta vici, car acel model no es suportada en acel paje.", + "import-options-wrong": "{{PLURAL:$2|eleje|elejes}} noncoreta: $1", + "import-rootpage-invalid": "La paje de radis spesifada es un titulo nonvalida.", + "import-rootpage-nosubpage": "Spasio de nom \"$1\" de la paje de radis no permete supajes.", + "importlogpage": "Rejistra de emportas", + "importlogpagetext": "Emportas dirijal de pajes con istoria de editas de otra vicis.", + "import-logentry-upload-detail": "$1 {{PLURAL:$1|revisa|revisas}} emportada", + "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|revisa|revisas}} emportada de $2", + "javascripttest": "Proba de JavaScript", + "javascripttest-pagetext-unknownaction": "Ata nonconoseda \"$1\".", + "javascripttest-qunit-intro": "Vide [$1 documentos sur probas] en mediawiki.org.", + "tooltip-pt-userpage": "{{GENDER:|Tua}} paje de usor", + "tooltip-pt-anonuserpage": "La paje de usor per la adirije IP como cual tu edita", + "tooltip-pt-mytalk": "{{GENDER:|Tua}} paje de discute", + "tooltip-pt-anontalk": "Discute sur editas de esta adirije IP", "tooltip-pt-preferences": "{{GENDER:|Tua}} preferes", "tooltip-pt-watchlist": "Un lista de pajes cual tu monitori per cambias", "tooltip-pt-mycontris": "Un lista de tua contribuis", - "tooltip-pt-login": "Nos prefere ce tu identifia tu, ma esta no es no obligante", - "tooltip-pt-logout": "Desidentifia", - "tooltip-pt-createaccount": "Nos recomenda ce tu crea un conta e identifia tu, ma esta no es obligante", - "tooltip-ca-talk": "Discute de la paje de contenida", + "tooltip-pt-anoncontribs": "Un lista de editas fada de esta adirije IP", + "tooltip-pt-login": "Nos recomenda ce tu autentici, ma esta no es no obligante", + "tooltip-pt-login-private": "Tu nesesa autentici per usa esta vici", + "tooltip-pt-logout": "Desautentici", + "tooltip-pt-createaccount": "Nos recomenda ce tu crea un conta e autentici, ma esta no es obligante", + "tooltip-ca-talk": "Discute sur la paje de contenida", "tooltip-ca-edit": "Edita esta paje", - "tooltip-ca-addsection": "Inisia un sesion nova", - "tooltip-ca-viewsource": "Esta paje es protejeda. Tu pote regarda sua fonte", + "tooltip-ca-addsection": "Comensa un parte nova", + "tooltip-ca-viewsource": "Esta paje es protejeda.\nTu pote regarda sua fonte", "tooltip-ca-history": "Revisas pasada de esta paje", "tooltip-ca-protect": "Proteje esta paje", + "tooltip-ca-unprotect": "Cambia la proteje de esta paje", "tooltip-ca-delete": "Sutrae esta paje", + "tooltip-ca-undelete": "Restora la editas fada a esta paje ante cuando on ia sutrae lo", "tooltip-ca-move": "Move esta paje", - "tooltip-ca-watch": "Ajunta esta paje a tua lista de pajes monitorida", - "tooltip-ca-unwatch": "Sutrae esta paje de tua lista de pajes monitorida", - "tooltip-search": "Xerca {{SITENAME}}", + "tooltip-ca-watch": "Ajunta esta paje a tua pajes monitorida", + "tooltip-ca-unwatch": "Sutrae esta paje de tua pajes monitorida", + "tooltip-search": "Xerca en {{SITENAME}}", "tooltip-search-go": "Vade a un paje con esata esta nom si lo esiste", "tooltip-search-fulltext": "Xerca esta testo en la pajes", "tooltip-p-logo": "Visita la paje xef", "tooltip-n-mainpage": "Visita la paje xef", "tooltip-n-mainpage-description": "Visita la paje xef", - "tooltip-n-portal": "Sur la projeta, la modos de aida e la locas de cosas", - "tooltip-n-currentevents": "Trova informa fondal sur avenis corente", + "tooltip-n-portal": "Sur la projeta, modos de aida e locas de cosas", + "tooltip-n-currentevents": "Trova informas fondal sur avenis corente", "tooltip-n-recentchanges": "Un lista de cambias resente en la vici", "tooltip-n-randompage": "Visita un paje acaso", - "tooltip-n-help": "La loca per descovre.", + "tooltip-n-help": "La loca de descovre", "tooltip-t-whatlinkshere": "Un lista de tota pajes de vici cual lia a esta paje", "tooltip-t-recentchangeslinked": "Cambias resente en pajes a cual esta paje lia", + "tooltip-feed-rss": "Flue RSS per esta paje", "tooltip-feed-atom": "Flue Atom per esta paje", "tooltip-t-contributions": "Un lista de contribuis par {{GENDER:$1|esta usor}}", - "tooltip-t-emailuser": "Envia un e-posta a {{GENDER:$1|esta usor}}", + "tooltip-t-emailuser": "Envia un eposta a {{GENDER:$1|esta usor}}", + "tooltip-t-info": "Plu informas sur esta paje", "tooltip-t-upload": "Carga fixes", "tooltip-t-specialpages": "Un lista de tota pajes spesial", "tooltip-t-print": "Varia primable de esta paje", "tooltip-t-permalink": "Lias permanente a esta revisa de la paje", - "tooltip-ca-nstab-main": "Mostra la paje de contenida", - "tooltip-ca-nstab-user": "Mostra la paje de usor", - "tooltip-ca-nstab-special": "Esta es un paje special e on no pote edita lo.", - "tooltip-ca-nstab-project": "Mostra la paje de projeta", - "tooltip-ca-nstab-image": "Mostra la paje de fix", - "tooltip-ca-nstab-mediawiki": "Mostra la mesaje de sistem", - "tooltip-ca-nstab-template": "Mostra la stensil", - "tooltip-ca-nstab-help": "Vide la paje de aida", - "tooltip-ca-nstab-category": "Mostra la paje de categoria", + "tooltip-ca-nstab-main": "Regarda la paje de contenida", + "tooltip-ca-nstab-user": "Regarda la paje de usor", + "tooltip-ca-nstab-media": "Regarda la paje de media", + "tooltip-ca-nstab-special": "Esta es un paje spesial e on no pote edita lo.", + "tooltip-ca-nstab-project": "Regarda la paje de projeta", + "tooltip-ca-nstab-image": "Regarda la paje de fix", + "tooltip-ca-nstab-mediawiki": "Regarda la mesaje de sistem", + "tooltip-ca-nstab-template": "Regarda la stensil", + "tooltip-ca-nstab-help": "Regarda la paje de aida", + "tooltip-ca-nstab-category": "Regarda la paje de categoria", "tooltip-minoredit": "Marca esta como un edita minor", - "tooltip-save": "Fisa tu cambias", + "tooltip-save": "Fisa tua cambias", + "tooltip-publish": "Publici tua cambias", "tooltip-preview": "Previde tua cambias. Usa esta ante fisa, per favore.", - "tooltip-diff": "Mostra la cambias cual tu ia fa a la testo.", - "tooltip-compareselectedversions": "Regarda la diferes entre la du revisas elejeda de esta paje.", - "tooltip-watch": "Ajunta esta paje a tua lista de pajes monitorida", - "tooltip-rollback": "\"Reversa\" desfa direta la edita(s) par la contribuor la plu resente a esta paje", + "tooltip-diff": "Mostra la cambias cual tu ia fa a la testo", + "tooltip-compareselectedversions": "Regarda la diferes entre la du revisas elejeda de esta paje", + "tooltip-watch": "Ajunta esta paje a tua pajes monitorida", + "tooltip-watchlistedit-normal-submit": "Sutrae titulos", + "tooltip-watchlistedit-raw-submit": "Cambia pajes monitorida", + "tooltip-recreate": "Recrea la paje an si on ia sutrae lo", + "tooltip-upload": "Comensa carga", + "tooltip-rollback": "\"Reversa\" desfa la edita(s) par la contribuor la plu resente a esta paje, par sola un clica", "tooltip-undo": "\"Desfa\" reversa esta edita e abri la formulario de edita en moda de previde, permetente ajunta un razona en la resoma.", + "tooltip-preferences-save": "Fisa preferes", "tooltip-summary": "Ajunta un resoma corta", + "common.css": "/* CSS poneda asi va es aplicada a tota peles */", + "print.css": "/* CSS poneda asi va afeta la esflue primida */", + "noscript.css": "/* CSS poneda asi va afeta usores per ci JavaScript es descomutada */", + "group-autoconfirmed.css": "/* CSS poneda asi va afeta sola usores autoconfirmada */", + "group-user.css": "/* CSS poneda asi va afeta sola usores rejistrada */", + "group-bot.css": "/* CSS poneda asi va afeta sola botes */", + "group-sysop.css": "/* CSS poneda asi va afeta sola dirijores */", + "group-bureaucrat.css": "/* CSS poneda asi va afeta sola burocratas */", + "common.js": "/* Cualce JavaScript asi va es cargada per tota usores a cada carga de paje. */", + "group-autoconfirmed.js": "/* Cualce JavaScript asi va es cargada sola per usores autoconfirmada */", + "group-user.js": "/* Cualce JavaScript asi va es cargada sola per usores rejistrada */", + "group-bot.js": "/* Cualce JavaScript asi va es cargada sola per botes */", + "group-sysop.js": "/* Cualce JavaScript asi va es cargada sola per dirijores */", + "group-bureaucrat.js": "/* Cualce JavaScript asi va es cargada sola per burocratas */", + "anonymous": "{{PLURAL:$1|usor|usores}} anonim de {{SITENAME}}", + "siteuser": "Usor $1 de {{SITENAME}}", + "anonuser": "Usor anonim $1 de {{SITENAME}}", + "lastmodifiedatby": "La edita la plu resente de esta paje ia es a $2, $1 par $3.", + "othercontribs": "Fundida sur labora par $1.", "others": "otras", + "siteusers": "{{PLURAL:$2|usor|usores}} $1 de {{SITENAME}}", + "anonusers": "{{PLURAL:$2|usor|usores}} anonim $1 de {{SITENAME}}", + "creditspage": "Atribuis de paje", + "nocredits": "No informa atribuinte es disponable per esta paje.", + "spamprotectiontitle": "Filtro protejente contra spam", + "spamprotectiontext": "La testo cual tu ia vole fisa ia es blocida par la filtro de spam.\nEsta es probable causada par un lia a un loca esterna en la lista negra.", + "spamprotectionmatch": "La testo seguente es lo cual ia ativi nosa filtro de spam: $1", + "spambot_username": "Antispam de MediaWiki", + "spam_reverting": "Reversa a la revisa la plu resente cual no conteni lias a $1", + "spam_blanking": "Tota revisas ia conteni lias a $1; vacuinte", + "spam_deleting": "Tota revisas ia conteni lias a $1; sutraente", "simpleantispam-label": "Antispam. No completi esta!", "pageinfo-title": "Informa per \"$1\"", + "pageinfo-not-current": "Regretable, esta informa no es disponable per revisas vea.", "pageinfo-header-basic": "Informa fundal", "pageinfo-header-edits": "Edita la istoria", "pageinfo-header-restrictions": "Proteje de paje", "pageinfo-header-properties": "Proprias de paje", "pageinfo-display-title": "Mostra la titulo", - "pageinfo-default-sort": "Clave de ordina implicada", + "pageinfo-default-sort": "Modo de ordina inisial", "pageinfo-length": "Longia de paje (en baites)", "pageinfo-article-id": "Numero de paje", "pageinfo-language": "Lingua de contenida de paje", + "pageinfo-language-change": "cambia", "pageinfo-content-model": "Model de contenida de paje", + "pageinfo-content-model-change": "cambia", "pageinfo-robot-policy": "Catalogi par robotes", "pageinfo-robot-index": "Permeteda", "pageinfo-robot-noindex": "Proibida", "pageinfo-watchers": "Cuantia de usores ci monitori esta paje", + "pageinfo-visiting-watchers": "Cuantia de usores monitorinte ci ia visita editas resente", "pageinfo-few-watchers": "Min ca $1 {{PLURAL:$1|usor|usores}} monitorinte", + "pageinfo-few-visiting-watchers": "Cisa o cisa no, un usor monitorinte visita editas resente", "pageinfo-redirects-name": "Cuantia de redirijes a esta paje", "pageinfo-subpages-name": "Cuantia de supajes de esta paje", "pageinfo-subpages-value": "$1 ($2 {{PLURAL:$2|redirije|redirijes}}; $3 {{PLURAL:$3|nonredirije|nonredirijes}})", @@ -919,55 +2758,594 @@ "pageinfo-magic-words": "{{PLURAL:$1|parola|parolas}} majiosa ($1)", "pageinfo-hidden-categories": "{{PLURAL:$1|Categoria|Categorias}} ascondeda ($1)", "pageinfo-templates": "{{PLURAL:$1|stensil|stensiles}} transcluida ($1)", + "pageinfo-transclusions": "{{PLURAL:$1|Paje|Pajes}} transcluida en ($1)", "pageinfo-toolboxlink": "Informa de paje", + "pageinfo-redirectsto": "Redirije a", + "pageinfo-redirectsto-info": "info", "pageinfo-contentpage": "Tratada como paje de contenida", "pageinfo-contentpage-yes": "Si", + "pageinfo-protect-cascading": "Protejes cascade de asi", + "pageinfo-protect-cascading-yes": "Si", + "pageinfo-protect-cascading-from": "Protejes cascade de", + "pageinfo-category-info": "Informa de categoria", + "pageinfo-category-total": "Cuantia intera de membros", + "pageinfo-category-pages": "Cuantia de pajes", + "pageinfo-category-subcats": "Cuantia de sucategorias", + "pageinfo-category-files": "Cuantia de fixes", + "pageinfo-user-id": "Numero de usor", + "markaspatrolleddiff": "Marca como patruliada", + "markaspatrolledtext": "Marca esta paje como patruliada", + "markaspatrolledtext-file": "Marca esta varia de fix como patruliada", + "markedaspatrolled": "Marcada como patruliada", + "markedaspatrolledtext": "La revisa elejeda de [[:$1]] es marcada como patruliada.", + "rcpatroldisabled": "Patrulia de cambias resente es descomutada", + "rcpatroldisabledtext": "La funsiona de patrulia cambias resente es descomutada a presente.", + "markedaspatrollederror": "La marca como patruliable no es posible", + "markedaspatrollederrortext": "Tu nesesa spesifa cual revisa tu vole marca como patruliada.", + "markedaspatrollederror-noautopatrol": "Tu no es permeteda a marca tua propre cambias como patruliada.", + "markedaspatrollednotify": "Esta cambia a $1 es marcada como patruliada.", + "markedaspatrollederrornotify": "La marca como patruliada ia fali.", "patrol-log-page": "Arcivo de patrulias", + "patrol-log-header": "Esta es un rejistra de revisas patruliada.", + "log-show-hide-patrol": "$1 rejistra de patrulias", + "log-show-hide-tag": "$1 rejistra de eticetas", + "confirm-markpatrolled-button": "Oce", + "confirm-markpatrolled-top": "Marca revisa $3 de $2 como patruliada?", + "deletedrevision": "Sutrae revisa vea $1", + "filedeleteerror-short": "Era en sutrae fix: $1", + "filedeleteerror-long": "Eras ia aveni en desutrae la fix:\n\n$1", + "filedelete-missing": "La fix \"$1\" no pote es sutraeda car lo no esiste.", + "filedelete-old-unregistered": "La revisa spesifada de fix \"$1\" no es en la banco de datos.", + "filedelete-current-unregistered": "La fix spesifada \"$1\" no es en la banco de datos.", + "filedelete-archive-read-only": "La arciveria \"$1\" no es scrivable per la servador.", "previousdiff": "← Edita plu vea", "nextdiff": "Edita plu nova →", + "mediawarning": "Avisa: Esta tipo de fix pote conteni codigo malvolente.\nSi tu esecuta lo, tu risca perili tua sistem.", + "imagemaxsize": "Limita de grandia de imaje:
    (per pajes de descrive de fix)", + "thumbsize": "Grandia de imajeta:", "widthheightpage": "$1 × $2, $3 {{PLURAL:$3|paje|pajes}}", + "file-info": "grandia de fix: $1, tipo MIME: $2", "file-info-size": "$1 × $2 pixeles, grandia de fix: $3, tipo MIME: $4", "file-info-size-pages": "$1 × $2 pixeles, grandia de fix: $3, tipo MIME: $4, $5 {{PLURAL:$5|paje|pajes}}", "file-nohires": "No densia plu alta es disponable.", "svg-long-desc": "fix svg, densia: $1 × $2 pixeles, grandia: $3", + "svg-long-desc-animated": "Fix SVG animada, densia: $1 × $2 pixeles, grandia: $3", + "svg-long-error": "Fix SVG nonvalida: $1", "show-big-image": "Fix orijinal", "show-big-image-preview": "Grandia de esta previde: $1", + "show-big-image-preview-differ": "Grandia de esta previde $3 de esta fix $2: $1.", "show-big-image-other": "Otra {{PLURAL:$2|densia|densias}}: $1.", "show-big-image-size": "$1 × $2 pixeles", + "file-info-gif-looped": "siclinte", + "file-info-gif-frames": "$1 {{PLURAL:$1|imaje|imajes}}", + "file-info-png-looped": "siclinte", + "file-info-png-repeat": "juada a $1 {{PLURAL:$1|ves|veses}}", + "file-info-png-frames": "$1 {{PLURAL:$1|imaje|imajes}}", + "file-no-thumb-animation": "Nota: Par causa de limitas tecnical, imajetas de esta fix no va es animada.", + "file-no-thumb-animation-gif": "Nota: Par causa de limitas tecnical, imajetas de imajes GIF de densia alta, como esta, no va es animada.", "newimages": "Imajes nova", + "imagelisttext": "A su es un lista de $1 {{PLURAL:$1|fix|fixes}} ordinada $2.", + "newimages-summary": "Esta paje spesial mostra la fixes la plu resente cargada.", + "newimages-legend": "Filtri", + "newimages-label": "Nom de fix (o un parte de lo):", + "newimages-user": "Adirije IP o nom de usor", + "newimages-newbies": "Mostra contribuis sola de contas nova", + "newimages-showbots": "Mostra cargas par botes", + "newimages-hidepatrolled": "Asconde cargas patruliada", + "newimages-mediatype": "Tipo de media:", + "noimages": "No cosas per vide.", + "gallery-slideshow-toggle": "Alterna imajetas", "ilsubmit": "Xerca", + "bydate": "par data", + "sp-newimages-showfrom": "Mostra fixes nova comensante de $2, $1", + "seconds": "{{PLURAL:$1|$1 secondo|$1 secondos}}", + "minutes": "{{PLURAL:$1|$1 minuto|$1 minutos}}", + "hours": "{{PLURAL:$1|$1 ora|$1 oras}}", + "days": "{{PLURAL:$1|$1 dia|$1 dias}}", + "weeks": "{{PLURAL:$1|$1 semana|$1 semanas}}", + "months": "{{PLURAL:$1|$1 mense|$1 menses}}", + "years": "{{PLURAL:$1|$1 anio|$1 anios}}", + "ago": "a $1 ante aora", + "just-now": "presente", + "hours-ago": "a $1 {{PLURAL:$1|ora|oras}} ante aora", + "minutes-ago": "a $1 {{PLURAL:$1|minuto|minutos}} ante aora", + "seconds-ago": "a $1 {{PLURAL:$1|secondo|secondos}} ante aora", + "monday-at": "en lundi a $1", + "tuesday-at": "en martedi a $1", + "wednesday-at": "en mercurdi a $1", + "thursday-at": "en jovedi a $1", + "friday-at": "en venerdi a $1", + "saturday-at": "en saturdi a $1", + "sunday-at": "en soldi a $1", + "yesterday-at": "ier a $1", "bad_image_list": "La forma es la seguente:\n\nSola linias de un lista (ce comensa con *) es considerada.\nLa lia prima a la linia nesesa es un lia a un mal fix.\nCada lias seguente a la mesma linia es considerada es esetas, ce es, la pajes do la fix pote aveni enlinia.", "metadata": "Metadatos", "metadata-help": "Esta fix conteni plu informa, posable ajuntada de la camera o scanador usada per crea o dijitali lo.\nSi la fix ia cambia de sua state orijinal, cisa alga detalias no pertine bon a la fix cambiada.", "metadata-expand": "Mostra detalias estendente", "metadata-collapse": "Asconde detalias estendeda", "metadata-fields": "Metadatos de imaje listada en esta mesaje va es incluida cuando la table de metadatos es minimida.\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": "Largia", + "exif-imagelength": "Altia", + "exif-bitspersample": "Bitios per composante", + "exif-compression": "Scema de densi", + "exif-photometricinterpretation": "Composa de pixeles", "exif-orientation": "Orienta", + "exif-samplesperpixel": "Cuantia de composantes", + "exif-planarconfiguration": "Posa de datos", + "exif-ycbcrsubsampling": "Proportio susamplal de Y a C", + "exif-ycbcrpositioning": "Posa de Y e C", "exif-xresolution": "Densia orizonal", "exif-yresolution": "Densia vertical", + "exif-stripoffsets": "Loca de datos de imaje", + "exif-rowsperstrip": "Cuantia de linias per banda", + "exif-stripbytecounts": "Baites per banda compresada", + "exif-jpeginterchangeformat": "Desloca a SOI JPEG", + "exif-jpeginterchangeformatlength": "Baites de datos JPEG", + "exif-whitepoint": "Cromaticia de punto blanca", + "exif-primarychromaticities": "Cromaticias de colores xef", + "exif-ycbcrcoefficients": "Fatores de matris de transforma de spasio de color", + "exif-referenceblackwhite": "Duple de valuas referal monocromata", "exif-datetime": "Data e ora de cambia de fix", + "exif-imagedescription": "Titulo de imaje", "exif-make": "Fabricor de camera", "exif-model": "Model de camera", "exif-software": "Program usada", + "exif-artist": "Autor", + "exif-copyright": "Autor con diretos", "exif-exifversion": "Varia de Exif", + "exif-flashpixversion": "Varia suportada de Flashpix", "exif-colorspace": "Spasio de color", + "exif-componentsconfiguration": "Sinifia de cada composante", + "exif-compressedbitsperpixel": "Moda de densi de imaje", + "exif-pixelxdimension": "Largia de imaje", + "exif-pixelydimension": "Altia de imaje", + "exif-usercomment": "Comentas de usor", + "exif-relatedsoundfile": "Fix audio relatada", "exif-datetimeoriginal": "Data e ora de jenera de datos", "exif-datetimedigitized": "Data e ora de dijitali", + "exif-subsectime": "Susecondos de datetime", + "exif-subsectimeoriginal": "Susecondos de datetimeoriginal", + "exif-subsectimedigitized": "Susecondos de DateTimeDigitized", + "exif-exposuretime": "Tempo de esposa", "exif-exposuretime-format": "$1 sec. ($2)", + "exif-fnumber": "Numero F", + "exif-exposureprogram": "Program de esposa", + "exif-spectralsensitivity": "Sensosia spetral", + "exif-isospeedratings": "Gradi ISO de rapidia", + "exif-shutterspeedvalue": "Rapidida APEX de cluador", + "exif-aperturevalue": "Abri APEX", + "exif-brightnessvalue": "Brilia APEX", + "exif-exposurebiasvalue": "Compensa APEX de esposa", + "exif-maxaperturevalue": "Masima de abri de lente", + "exif-subjectdistance": "Distantia de sujeto", + "exif-meteringmode": "Moda de determina esposa", + "exif-lightsource": "Fonte de lus", + "exif-flash": "Flaxador", + "exif-focallength": "Distantia focal de lente", + "exif-subjectarea": "Area de sujeto", + "exif-flashenergy": "Enerjia de flaxador", + "exif-focalplanexresolution": "Densia X de plana focal", + "exif-focalplaneyresolution": "Densia Y de plana focal", + "exif-focalplaneresolutionunit": "Unia de densia de plana focal", + "exif-subjectlocation": "Loca de sujeto", + "exif-exposureindex": "Indise de esposa", + "exif-sensingmethod": "Metodo de sensa", + "exif-filesource": "Fonte de fix", + "exif-scenetype": "Tipo de sena", + "exif-customrendered": "Trata spesial de imaje", + "exif-exposuremode": "Moda de esposa", + "exif-whitebalance": "Ecuilibra blanca", + "exif-digitalzoomratio": "Proportio de zuma dijital", + "exif-focallengthin35mmfilm": "Distantia focal en filma de 35 mm", + "exif-scenecapturetype": "Tipo de catura de sena", + "exif-gaincontrol": "Controla de brilia", + "exif-contrast": "Contrasta", + "exif-saturation": "Satura", + "exif-sharpness": "Agia", + "exif-devicesettingdescription": "Descrive de ajustas de aparato", + "exif-subjectdistancerange": "Estende de distantia de sujeto", + "exif-imageuniqueid": "Numero unica de imaje", + "exif-gpsversionid": "Varia de eticeta GPS", + "exif-gpslatituderef": "Latitude norde o sude", + "exif-gpslatitude": "Latitude", + "exif-gpslongituderef": "Lonjitude este o ueste", + "exif-gpslongitude": "Lonjitude", + "exif-gpsaltituderef": "Refere de altia", + "exif-gpsaltitude": "Altia", + "exif-gpstimestamp": "Ora GPS (orolojo atomal)", + "exif-gpssatellites": "Satelites usada per mesura", + "exif-gpsstatus": "State de resetador", + "exif-gpsmeasuremode": "Moda de mesura", + "exif-gpsdop": "Esatia de mesura", + "exif-gpsspeedref": "Unia de rapidia", + "exif-gpsspeed": "Rapidia de resetador GPS", + "exif-gpstrackref": "Refere per dirije de move", + "exif-gpstrack": "Dirije de move", + "exif-gpsimgdirectionref": "Refere per dirije de imaje", + "exif-gpsimgdirection": "Dirije de imaje", + "exif-gpsmapdatum": "Datos jeodesial usada", + "exif-gpsdestlatituderef": "Refere per latitude de destina", + "exif-gpsdestlatitude": "Latitude de destina", + "exif-gpsdestlongituderef": "Refere per lonjitude de destina", + "exif-gpsdestlongitude": "Lonjitude de destina", + "exif-gpsdestbearingref": "Refere per dirije de destina", + "exif-gpsdestbearing": "Dirije de destina", + "exif-gpsdestdistanceref": "Refere per distantia a destina", + "exif-gpsdestdistance": "Distantia a destina", + "exif-gpsprocessingmethod": "Nom de metodo de trata GPS", + "exif-gpsareainformation": "Nom de area GPS", + "exif-gpsdatestamp": "Data GPS", + "exif-gpsdifferential": "Coreti diferensial GPS", + "exif-jpegfilecomment": "Comenta de fix JPEG", + "exif-keywords": "Parolas de clave", + "exif-worldregioncreated": "Rejion de mundo en cual la foto ia es fada", + "exif-countrycreated": "Pais en cual la foto ia es fada", + "exif-countrycodecreated": "Codigo per la pais en cual la foto ia es fada", + "exif-provinceorstatecreated": "Provinse o state en cual la foto ia es fada", + "exif-citycreated": "Site en cual la foto ia es fada", + "exif-sublocationcreated": "Parte de la site en cual la foto ia es fada", + "exif-worldregiondest": "Rejion de mundo mostrada", + "exif-countrydest": "Pais mostrada", + "exif-countrycodedest": "Codigo per pais mostrada", + "exif-provinceorstatedest": "Provinse o state mostrada", + "exif-citydest": "Site mostrada", + "exif-sublocationdest": "Parte de site mostrada", + "exif-objectname": "Titulo corta", + "exif-specialinstructions": "Instruis spesial", + "exif-headline": "Slogan", + "exif-credit": "Atribui/Furnor", + "exif-source": "Fonte", + "exif-editstatus": "State edital de imaje", + "exif-urgency": "Urjentia", + "exif-fixtureidentifier": "Nom de fisada", + "exif-locationdest": "Loca imajida", + "exif-locationdestcode": "Codigo de loca imajida", + "exif-objectcycle": "Parte de dia per cual la media es intendeda", + "exif-contact": "Informa de contata", + "exif-writer": "Scrivor", + "exif-languagecode": "Lingua", + "exif-iimversion": "Varia IIM", + "exif-iimcategory": "Categoria", + "exif-iimsupplementalcategory": "Categorias aumental", + "exif-datetimeexpires": "No usa pos", + "exif-datetimereleased": "Relasada a", + "exif-originaltransmissionref": "Codigo de loca de transmete orijinal", + "exif-identifier": "Identifiante", + "exif-lens": "Lente usada", + "exif-serialnumber": "Numero serial de camera", + "exif-cameraownername": "Posesor de camera", + "exif-label": "Eticeta", + "exif-datetimemetadata": "Data de cambia la plu resente de metadatos", + "exif-nickname": "Nom nonformal de imaje", + "exif-rating": "Gradi (asta 5)", + "exif-rightscertificate": "Documento de maneja de diretos", + "exif-copyrighted": "State de direto de autor", + "exif-copyrightowner": "Autor con diretos", + "exif-usageterms": "Restrinjes de usa", + "exif-webstatement": "Declara enlinia de diretos de autor", + "exif-originaldocumentid": "Numero unica de documento orijinal", + "exif-licenseurl": "URL per lisensa de direto de autor", + "exif-morepermissionsurl": "Informa lisensal alternativa", + "exif-attributionurl": "Si tu reusa esta obra, per favore lia a", + "exif-preferredattributionname": "Si tu reusa esta obra, per favore atribui lo a", + "exif-pngfilecomment": "Comenta de fix PNG", + "exif-disclaimer": "Renunsia", + "exif-contentwarning": "Averti sur contenida", + "exif-giffilecomment": "Comenta de fix GIF", + "exif-intellectualgenre": "Tipo de cosa", + "exif-subjectnewscode": "Codigo de sujeto", + "exif-scenecode": "Codigo de sena IPTC", + "exif-event": "Aveni imajida", + "exif-organisationinimage": "Organiza imajida", + "exif-personinimage": "Person imajida", + "exif-originalimageheight": "Altia de imaje ante corti", + "exif-originalimagewidth": "Largia de imaje ante corti", + "exif-compression-1": "No densida", + "exif-compression-2": "CCITT Group 3 1-Dimensional Modified Huffman run length encoding", + "exif-compression-3": "CCITT Group 3 fax encoding", + "exif-compression-4": "CCITT Group 4 fax encoding", + "exif-copyrighted-true": "Su direto de autor", + "exif-copyrighted-false": "State de direto de autor no es definida", + "exif-photometricinterpretation-1": "Blanca-negra (negra es 0)", + "exif-unknowndate": "Data nonconoseda", "exif-orientation-1": "Normal", + "exif-orientation-2": "Orizonal mirorida", + "exif-orientation-3": "Jirada par 180°", + "exif-orientation-4": "Vertical mirorida", + "exif-orientation-5": "Nonorolojin jirada par 90° e vertical mirorida", + "exif-orientation-6": "Nonorolojin jirada par 90°", + "exif-orientation-7": "Orolojin jirada 90° e vertical mirorida", + "exif-orientation-8": "Orolojin jirada 90°", + "exif-planarconfiguration-1": "chunky format", + "exif-planarconfiguration-2": "planar format", + "exif-colorspace-65535": "Colores nonajustada", + "exif-componentsconfiguration-0": "no esiste", + "exif-exposureprogram-0": "No definida", + "exif-exposureprogram-1": "Par mano", + "exif-exposureprogram-2": "Program normal", + "exif-exposureprogram-3": "Primia de abri", + "exif-exposureprogram-4": "Primia de cluador", + "exif-exposureprogram-5": "Program creosa (favorente profondia de campo)", + "exif-exposureprogram-6": "Program ativa (favorente rapidia de cluador)", + "exif-exposureprogram-7": "Orienta vertical (per fotos prosima con fondo nonfocada)", + "exif-exposureprogram-8": "Orienta vertical (per fotos prosima con fondo nonfocada)", + "exif-subjectdistance-value": "$1 metres", + "exif-meteringmode-0": "Nonconoseda", + "exif-meteringmode-1": "Promedia", + "exif-meteringmode-2": "Promedia favorente la sentro", + "exif-meteringmode-3": "Punto", + "exif-meteringmode-4": "Multipuntal", + "exif-meteringmode-5": "Motif", + "exif-meteringmode-6": "Partal", + "exif-meteringmode-255": "Otra", + "exif-lightsource-0": "Nonconoseda", + "exif-lightsource-1": "Lus de dia", + "exif-lightsource-2": "Fluoresente", + "exif-lightsource-3": "Uolfram (lus incandesente)", + "exif-lightsource-4": "Flax", + "exif-lightsource-9": "Clima bela", + "exif-lightsource-10": "Clima nubosa", + "exif-lightsource-11": "Ombra", + "exif-lightsource-12": "Lus de dia fluoresente (D 5700 – 7100K)", + "exif-lightsource-13": "Dia blanca fluoresente (N 4600 – 5400K)", + "exif-lightsource-14": "Fresca blanca fluoresente (W 3900 – 4500K)", + "exif-lightsource-15": "Blanca fluoresente (WW 3200 – 3700K)", + "exif-lightsource-17": "Lus normal A", + "exif-lightsource-18": "Lus normal B", + "exif-lightsource-19": "Lus normal C", + "exif-lightsource-24": "Uolfram de studio ISO", + "exif-lightsource-255": "Otra fonte de lus", + "exif-flash-fired-0": "Flaxador no ia funsiona", + "exif-flash-fired-1": "Flaxador ia funsiona", + "exif-flash-return-0": "no strobe return detection function", + "exif-flash-return-2": "strobe return light not detected", + "exif-flash-return-3": "strobe return light detected", + "exif-flash-mode-1": "compulsory flash firing", + "exif-flash-mode-2": "compulsory flash suppression", + "exif-flash-mode-3": "auto mode", + "exif-flash-function-1": "Funsiona flax manca", + "exif-flash-redeye-1": "moda desrojinte", + "exif-focalplaneresolutionunit-2": "ditones", + "exif-sensingmethod-1": "Nondefinida", + "exif-sensingmethod-2": "One-chip color area sensor", + "exif-sensingmethod-3": "Two-chip color area sensor", + "exif-sensingmethod-4": "Three-chip color area sensor", + "exif-sensingmethod-5": "Color sequential area sensor", + "exif-sensingmethod-7": "Trilinear sensor", + "exif-sensingmethod-8": "Color sequential linear sensor", + "exif-filesource-3": "Camera de fotos dijital", + "exif-scenetype-1": "Un imaje direta fotografida", + "exif-customrendered-0": "Trata normal", + "exif-customrendered-1": "Trata spesial", + "exif-exposuremode-0": "Esposa automata", + "exif-exposuremode-1": "Esposa par mano", + "exif-exposuremode-2": "Braseti automata", + "exif-whitebalance-0": "Ecuilibra blanca automata", + "exif-whitebalance-1": "Ecuilibra blanca par mano", + "exif-scenecapturetype-0": "Normal", + "exif-scenecapturetype-1": "Vista", + "exif-scenecapturetype-2": "Person", + "exif-scenecapturetype-3": "Sena de note", + "exif-gaincontrol-0": "No", + "exif-gaincontrol-1": "Aumenta de brilia basa", + "exif-gaincontrol-2": "Aumenta de brilia alta", + "exif-gaincontrol-3": "Redui de brilia basa", + "exif-gaincontrol-4": "Redui de brilia alta", + "exif-contrast-0": "Normal", + "exif-contrast-1": "Mol", + "exif-contrast-2": "Dur", + "exif-saturation-0": "Normal", + "exif-saturation-1": "Satura basa", + "exif-saturation-2": "Satura alta", + "exif-sharpness-0": "Normal", + "exif-sharpness-1": "Mol", + "exif-sharpness-2": "Dur", + "exif-subjectdistancerange-0": "Nonconoseda", + "exif-subjectdistancerange-1": "Macro", + "exif-subjectdistancerange-2": "Prosima", + "exif-subjectdistancerange-3": "Distante", + "exif-gpslatitude-n": "Latitude norde", + "exif-gpslatitude-s": "Latitude sude", + "exif-gpslongitude-e": "Lonjitude este", + "exif-gpslongitude-w": "Lonjitude ueste", + "exif-gpsaltitude-above-sealevel": "$1 {{PLURAL:$1|metre|metres}} supra nivel de mar", + "exif-gpsaltitude-below-sealevel": "$1 {{PLURAL:$1|metre|metres}} su nivel de mar", + "exif-gpsstatus-a": "Mesura progresante", + "exif-gpsstatus-v": "Interopera de mesura", + "exif-gpsmeasuremode-2": "Mesura de du dimensiones", + "exif-gpsmeasuremode-3": "Mesura de tre dimensiones", + "exif-gpsspeed-k": "Cilometres per ora", + "exif-gpsspeed-m": "Milias per ora", + "exif-gpsspeed-n": "Milias maral per ora", + "exif-gpsdestdistance-k": "Cilometres", + "exif-gpsdestdistance-m": "Milias", + "exif-gpsdestdistance-n": "Milias maral", + "exif-gpsdop-excellent": "Eselente ($1)", + "exif-gpsdop-good": "Bon ($1)", + "exif-gpsdop-moderate": "Moderada ($1)", + "exif-gpsdop-fair": "Asetable ($1)", + "exif-gpsdop-poor": "Povre ($1)", + "exif-objectcycle-a": "Sola matina", + "exif-objectcycle-p": "Sola sera", + "exif-objectcycle-b": "Matina e sera", + "exif-gpsdirection-t": "Dirije vera", + "exif-gpsdirection-m": "Dirije magnetal", + "exif-ycbcrpositioning-1": "Sentrida", + "exif-ycbcrpositioning-2": "Cosituada", + "exif-dc-contributor": "Contribuores", + "exif-dc-coverage": "Estende spasial o tempal de media", + "exif-dc-date": "Data(s)", + "exif-dc-publisher": "Publicor", + "exif-dc-relation": "Medias relatada", + "exif-dc-rights": "Diretos", + "exif-dc-source": "Media fontal", + "exif-dc-type": "Tipo de media", + "exif-rating-rejected": "Rejetada", + "exif-isospeedratings-overflow": "Plu ca 65535", + "exif-iimcategory-ace": "Artes, cultur e diverti", + "exif-iimcategory-clj": "Crimin e lege", + "exif-iimcategory-dis": "Desastres e asidentes", + "exif-iimcategory-fin": "Economia e comersia", + "exif-iimcategory-edu": "Educa", + "exif-iimcategory-evn": "Ambiente", + "exif-iimcategory-hth": "Sania", + "exif-iimcategory-hum": "Interesa umana", + "exif-iimcategory-lab": "Labora", + "exif-iimcategory-lif": "Vive e osio", + "exif-iimcategory-pol": "Politica", + "exif-iimcategory-rel": "Relijio e crede", + "exif-iimcategory-sci": "Siensa e tecnolojia", + "exif-iimcategory-soi": "Problemes sosial", + "exif-iimcategory-spo": "Sportes", + "exif-iimcategory-war": "Gera, disputa e turba", + "exif-iimcategory-wea": "Clima", + "exif-urgency-normal": "Normal ($1)", + "exif-urgency-low": "Basa ($1)", + "exif-urgency-high": "Alta ($1)", + "exif-urgency-other": "Primia definida par usor ($1)", "namespacesall": "tota", "monthsall": "tota", + "confirmemail": "Confirma adirije eposta", + "confirmemail_noemail": "No adirije valida de eposta es definida en tua [[Special:Preferences|preferes de usor]].", + "confirmemail_text": "{{SITENAME}} nesesa ce tu validi tua adirije de eposta ante usa funsionas de eposta.\nUsa la boton a su per envia un eposta de confirma a tua adirije.\nLa eposta va inclui un lia conteninte un codigo;\nsegue la lia en tua surfador per confirma ce tua adirije de eposta es valida.", + "confirmemail_pending": "Un codigo de confirma ia es ja epostada a tu;\nsi tu ia crea resente tua conta, cisa tu ta vole espeta sua ariva per alga minutos ante demanda per un codigo nova.", + "confirmemail_send": "Eposta un codigo de confirma", + "confirmemail_sent": "Eposta de confirma enviada.", + "confirmemail_oncreate": "Un codigo de confirma ia es epostada a tua adirije de eposta.\nEsta codigo no es nesesada per autentici, ma tu va nesesa furni lo ante comuta cualce funsionas epostal en la vici.", + "confirmemail_sendfailed": "{{SITENAME}} no ia pote envia tua eposta de confirma.\nPer favore, esamina tua adirije de eposta per sinias nonvalida.\n\nEpostador ia dise: $1", + "confirmemail_invalid": "Codigo de confirma nonvalida.\nCisa la codigo es tro vea.", + "confirmemail_needlogin": "Per favore, $1 per confirma tua adirije de eposta.", + "confirmemail_success": "Tua adirije de eposta es confirmada.\nTu pote aora [[Special:UserLogin|autentici]] e usa la vici.", + "confirmemail_loggedin": "Tua adirije de eposta es aora confirmada.", + "confirmemail_subject": "Confirma de adirije de eposta per {{SITENAME}}", + "confirmemail_body": "Algun, probable tu, de adirije IP $1,\nia rejistra un conta \"$2\" con esta adirije de eposta en {{SITENAME}}.\n\nPer confirma ce esta conta parteni vera a tu e per ativi\nfunsionas epostal en {{SITENAME}}, abri esta lia en tua surfador:\n\n$3\n\nSi tu *no* ia rejistra la conta, segue esta lia\nper cansela la confirma de adirije de eposta:\n\n$5\n\nEsta codigo de confirma va desvalidi a $4.", + "confirmemail_body_changed": "Algun, probable tu, de adirije IP $1,\nia cambia la adirije de eposta de la conta \"$2\" en {{SITENAME}} a esta adirije.\n\nPer confirma ce esta conta parteni vera a tu e per reativi\nfunsionas epostal en {{SITENAME}}, abri esta lila en tua surfador:\n\n$3\n\nSi la conta *no* parteni a tu, segue esta lia\nper cansela la confirma de adirije de eposta:\n\n$5\n\nEsta codigo de confirma va desvalidi a $4.", + "confirmemail_body_set": "Algun, probable tu, de adirije IP $1,\nia defini la adirije de eposta de la conta \"$2\" en {{SITENAME}} a esta adirije.\n\nPer confirma ce esta conta parteni vera a tu e per ativi\nfunsionas de eposta en {{SITENAME}}, abri esta lia en tua surfador:\n\n$3\n\nSi la conta *no* parteni a tu, segue esta lia\nper cansela la confirma de adirije de eposta:\n\n$5\n\nEsta codigo de confirma va desvalidi a $4.", + "confirmemail_invalidated": "Confirma de adirije de eposta canselada", + "invalidateemail": "Cansela confirma de eposta", + "notificationemail_subject_changed": "Adirije de eposta rejistrada per {{SITENAME}} es cambiada", + "notificationemail_subject_removed": "Adirije de eposta rejistrada per {{SITENAME}} es sutraeda", + "notificationemail_body_changed": "Algun, probable tu, de adirije IP $1,\nia cambia la adirije de eposta de la conta \"$2\" a \"$3\" en {{SITENAME}}.\n\nSi esta no ia es tu, contata direta un dirijor de la pajeria.", + "notificationemail_body_removed": "Algun, probable tu, de adirije IP $1,\nia sutrae la adirije de eposta de la conta \"$2\" en {{SITENAME}}.\n\nSi esta no ia es tu, contata direta un dirijor de la pajeria.", + "scarytranscludedisabled": "[Transcluis intervical es descomutada]", + "scarytranscludefailed": "[Retrae de stensil ia fali per $1]", + "scarytranscludefailed-httpstatus": "[Retrae de stensil ia fali per $1: HTTP $2]", + "scarytranscludetoolong": "[URL es tro longa]", + "deletedwhileediting": "Avisa: Esta paje ia es sutraeda pos cuando tu ia comensa edita!", + "confirmrecreate": "Usor [[User:$1|$1]] ([[User talk:$1|discute]]) ia {{GENDER:$1|sutrae}} esta paje pos cuando tu ia comensa edita, con razona:\n: $2\nPer favore, confirma ce tu vole vera recrea esta paje.", + "confirmrecreate-noreason": "Usor [[User:$1|$1]] ([[User talk:$1|discute]]) ia {{GENDER:$1|sutrae}} esta paje pos cuando tu ia comensa edita. Per favore, confirma ce tu vole vera recrea esta paje.", + "recreate": "Recrea", + "confirm-purge-title": "Purga esta paje", "confirm_purge_button": "Oce", + "confirm-purge-top": "Vacui la prememoria de esta paje?", + "confirm-purge-bottom": "Un purga de paje vacui la prememoria e forsa ce la revisa la plu resente apare.", + "confirm-watch-button": "Oce", + "confirm-watch-top": "Ajunta esta paje a tua lista monitorida?", + "confirm-unwatch-button": "Oce", + "confirm-unwatch-top": "Sutrae esta paje de tua lista monitorida?", + "confirm-rollback-button": "Oce", + "confirm-rollback-top": "Reversa editas a esta paje?", + "quotation-marks": "$1", + "imgmultipageprev": "← paje presedente", "imgmultipagenext": "paje seguente →", "imgmultigo": "Vade!", "imgmultigoto": "Vade a paje $1", - "watchlisttools-clear": "Vacui la lista de pajes monitorida.", + "img-lang-default": "(lingua inisial)", + "img-lang-info": "Render esta imaje en $1. $2", + "img-lang-go": "Vade", + "ascending_abbrev": "asen", + "descending_abbrev": "desen", + "table_pager_next": "Paje seguente", + "table_pager_prev": "Paje presedente", + "table_pager_first": "Paje prima", + "table_pager_last": "Paje final", + "table_pager_limit": "Mostra $1 puntos per paje", + "table_pager_limit_label": "Puntos per paje:", + "table_pager_limit_submit": "Vade", + "table_pager_empty": "No resultas", + "autosumm-blank": "Paje vacuida", + "autosumm-replace": "Contenida sustituida par \"$1\"", + "autoredircomment": "Paje redirijeda a [[$1]]", + "autosumm-new": "Paje creada con \"$1\"", + "autosumm-newblank": "Paje vacua creada", + "lag-warn-normal": "Cambias plu resente ca $1 {{PLURAL:$1|secondo|secondos}} ante aora es cisa no mostrada en esta lista.", + "lag-warn-high": "Par causa de retarda alta de la servador de datos, cambias plu resente ca $1 {{PLURAL:$1|secondo|secondos}} ante aora es cisa no mostrada en esta lista.", + "watchlistedit-normal-title": "Edita pajes monitorida", + "watchlistedit-normal-legend": "Sutrae pajes de lista monitorida", + "watchlistedit-normal-explain": "Titulos en tua lista de pajes monitorida es mostrada a su.\nPer sutrae un titulo, marca la caxa a lado e clica \"{{int:Watchlistedit-normal-submit}}\".\nTu pote ance [[Special:EditWatchlist/raw|edita la lista cru]].", + "watchlistedit-normal-submit": "Sutrae titulos", + "watchlistedit-normal-done": "{{PLURAL:$1|Un titulo|$1 titulos}} ia es sutraeda de tua lista de pajes monitorida:", + "watchlistedit-raw-title": "Edita lista cru de pajes monitorida", + "watchlistedit-raw-legend": "Edita lista cru de pajes monitorida", + "watchlistedit-raw-explain": "Titulos en tua lista de pajes monitorida es mostrada a su, e pote es editada par ajunta a e sutrae de la lista;\nun titulo per linia. Cuando tu ia fini, clica \"{{int:Watchlistedit-raw-submit}}\".\nTu pote ance [[Special:EditWatchlist|usa la editador normal]].", + "watchlistedit-raw-titles": "Titulos:", + "watchlistedit-raw-submit": "Fisa la lista", + "watchlistedit-raw-done": "Tua lista de pajes monitorida es cambiada.", + "watchlistedit-raw-added": "{{PLURAL:$1|1 titulo|$1 titulos}} ia es ajuntada:", + "watchlistedit-raw-removed": "{{PLURAL:$1|1 titulo|$1 titulos}} ia es sutraeda:", + "watchlistedit-clear-title": "Vacui la lista de pajes monitorida", + "watchlistedit-clear-legend": "Vacui la lista de pajes monitorida", + "watchlistedit-clear-explain": "Tota titulos va es sutraeda de tua lista monitorida", + "watchlistedit-clear-titles": "Titulos:", + "watchlistedit-clear-submit": "Vacui la lista (Esta es permanente!)", + "watchlistedit-clear-done": "Tua lista de pajes monitorida es vacuida.", + "watchlistedit-clear-removed": "{{PLURAL:$1|1 titulo|$1 titulos}} ia es sutraeda:", + "watchlistedit-too-many": "La lista ave tro multe pajes per mostra asi.", + "watchlisttools-clear": "Vacui la lista monitorida.", "watchlisttools-view": "Mostra cambias pertinente", - "watchlisttools-edit": "Mostra e edita la lista de pajes monitorida", + "watchlisttools-edit": "Mostra e edita la lista monitorida", "watchlisttools-raw": "Edita la lista cru de pajes monitorida", "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|discute]])", + "timezone-local": "Local", + "duplicate-defaultsort": "Avisa: Metodo de ordina \"$2\" supresa la metodo plu temprana \"$1\".", + "duplicate-displaytitle": "Avisa: Titulo vidable \"$2\" supresa la titulo plu temprana \"$1\".", + "restricted-displaytitle": "Avisa: Titulo vidable \"$1\" ia es iniorada car lo no coresponde a la titulo vera de la paje \"$1\".", + "invalid-indicator-name": "Era: La atribuida name de la indicador de state de paje no pote es vacua.", "version": "Varia", + "version-extensions": "Estendentes instalada", + "version-skins": "Peles instalada", + "version-specialpages": "Pajes spesial", + "version-parserhooks": "Estendentes de analisador sintatical", + "version-variables": "Variables", + "version-antispam": "Preveni de spam", + "version-other": "Otra", + "version-mediahandlers": "Tratadores de media", + "version-hooks": "Estendentes", + "version-parser-extensiontags": "Eticetas estendente de analisador sintatical", + "version-parser-function-hooks": "Estendentes funsional de analisador sintatical", + "version-hook-name": "Nom de estendente", + "version-hook-subscribedby": "Subscribed by", "version-version": "($1)", + "version-no-ext-name": "[no nom]", + "version-license": "Lisensa de MediaWiki", + "version-ext-license": "Lisensa", + "version-ext-colheader-name": "Estendente", + "version-skin-colheader-name": "Pel", + "version-ext-colheader-version": "Revisa", + "version-ext-colheader-license": "Lisensa", + "version-ext-colheader-description": "Descrive", + "version-ext-colheader-credits": "Autores", + "version-license-title": "Lisensa per $1", + "version-license-not-found": "No informas detaliada de lisensa ia es trovada per esta estendente.", + "version-credits-title": "\nAtribuis per $1", + "version-credits-not-found": "No informas detaliosa de atribui ia es trovada per esta estendente.", + "version-poweredby-credits": "Esta vici es realida par [https://www.mediawiki.org/ MediaWiki], su direto de autor © 2001-$1 $2.", + "version-poweredby-others": "otras", + "version-poweredby-translators": "traduores a translatewiki.net", + "version-credits-summary": "Nos desira reconose la persones seguente per sua contribuis a [[Special:Version|MediaWiki]].", + "version-license-info": "MediaWiki es un program libre; tu pote redistribui lo e/o altera lo su la restrinjes de la Lisensa Publica Jeneral GNU como publicida par la Funda de Programes Libre (Free Software Foundation); o revisa 2 de la Lisensa, o (si tu prefere) cualce revisa plu tarda.\n\nMediaWiki es distribuida con la espera ce lo va es usosa, ma CON NO GARANTIA; lo an no ave la garantia implicada de CONVENI PER VENDE (merchantability) or CONVENI PER UN INTENDE SPESIFADA (fitness for a particular purpose). Vide la Lisensa Publica Jeneral GNU per plu detalias.\n\nEsperable tu ia reseta [{{SERVER}}{{SCRIPTPATH}}/COPYING un copia de la Lisensa Publica Jeneral GNU] con esta program; si no, scrive a Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA o [//www.gnu.org/licenses/old-licenses/gpl-2.0.html leje lo enlinia].", + "version-software": "Programes instalada", + "version-software-product": "Produida", + "version-software-version": "Revisa", + "version-entrypoints": "URLes de puntos de entra", + "version-entrypoints-header-entrypoint": "Punto de entra", + "version-entrypoints-header-url": "URL", + "version-libraries": "Bibliotecas instalada", + "version-libraries-library": "Biblioteca", + "version-libraries-version": "Revisa", + "version-libraries-license": "Lisensa", + "version-libraries-description": "Descrive", + "version-libraries-authors": "Autores", "redirect": "Redirije par fix, usor, paje, revisa o numero de arcivo", "redirect-summary": "Esta paje spesial redirije a un fix (si on spesifa un nom), un paje (si on spesifa un numero de revisa o de paje), un paje de usor (si on spesida un numero de usor), o un article de arcivo (si on spesifia un numero). Esemplos: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]], or [[{{#Special:Redirect}}/logid/186]].", "redirect-submit": "Vade", @@ -977,27 +3355,551 @@ "redirect-page": "Numero de paje", "redirect-revision": "Revisa de paje", "redirect-file": "Nom de fix", + "redirect-logid": "Numero de entrada de rejistra", + "redirect-not-exists": "Valua no trovada", + "fileduplicatesearch": "Xerca fixes duplida", + "fileduplicatesearch-summary": "Xerca fixes duplida, usante valuas axida.", + "fileduplicatesearch-filename": "Nom de fix:", "fileduplicatesearch-submit": "Xerca", + "fileduplicatesearch-info": "$1 × $2 pixeles
    Grandia de fix: $3
    Tipo MIME: $4", + "fileduplicatesearch-result-1": "La fix \"$1\" ave no duplis identica.", + "fileduplicatesearch-result-n": "La fix \"$1\" ave {{PLURAL:$2|1 dupli identica|$2 duplis identica}}.", + "fileduplicatesearch-noresults": "No fix nomida \"$1\" ia es trovada.", "specialpages": "Pajes spesial", + "specialpages-note-top": "Esplica", + "specialpages-note-restricted": "* Pajes spesial normal.\n* Pajes spesial restrinjeda.", + "specialpages-group-maintenance": "Reportas de manteni", + "specialpages-group-other": "Otra pajes spesial", + "specialpages-group-login": "Autentici / crea conta", + "specialpages-group-changes": "Cambias resente e rejistras", + "specialpages-group-media": "Reportas de media e cargas", + "specialpages-group-users": "Usores e diretos", + "specialpages-group-highuse": "Pajes de usa alta", + "specialpages-group-pages": "Listas de pajes", + "specialpages-group-pagetools": "Utiles de paje", + "specialpages-group-wiki": "Datos e utiles", + "specialpages-group-redirects": "Pajes spesial redirijente", + "specialpages-group-spam": "Utiles de spam", + "specialpages-group-developer": "Utiles de developor", + "blankpage": "Paje vacua", + "intentionallyblankpage": "On intende ce esta paje es vacua.", + "external_image_whitelist": "#Lasa esta linia esata como lo es
    \n#Pone fratos de regex (sola la parte cual apare entre //) a su\n#Estas va es comparada con la URLes de imajes esterna (liada)\n#Los cual coresponde va es mostrada como imajes; per la otras, sola un lia a la imaje va es mostrada\n#Linias comensante con # es tratada como comentas\n#Esta es sieca a leteras major\n\n#Pone tota fratos de regex supra esta linia. Lasa esta linia esata como lo es
    ", + "tags": "Eticetas valida de cambia", "tag-filter": "Filtro par [[Special:Tags|eticeta]]:", + "tag-filter-submit": "Filtri", "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Eticeta|Eticetas}}]]: $2)", + "tag-mw-contentmodelchange": "cambia de model de contenida", + "tag-mw-contentmodelchange-description": "Editas cual [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:ChangeContentModel cambia la model de contenida] de un paje", + "tags-title": "Eticetas", + "tags-intro": "Esta paje lista la eticetas con cual la program pote marca un edita, e sua sinifias.", + "tags-tag": "Nom de eticeta", + "tags-display-header": "Apare en listas de cambias", + "tags-description-header": "Descrive plen de sinifia", + "tags-source-header": "Fonte", + "tags-active-header": "Ativa?", + "tags-hitcount-header": "Cambias eticetida", + "tags-actions-header": "Atas", "tags-active-yes": "Si", "tags-active-no": "No", + "tags-source-extension": "Definida par la program", + "tags-source-manual": "Aplicada par mano par usores e botes", + "tags-source-none": "No plu usada", + "tags-edit": "edita", + "tags-delete": "sutrae", + "tags-activate": "ativi", + "tags-deactivate": "desativi", "tags-hitcount": "$1 {{PLURAL:$1|cambia|cambias}}", + "tags-manage-no-permission": "Tu no es permeteda a maneja eticetas de cambia.", + "tags-manage-blocked": "Tu no pote maneja eticetas de cambia cuando {{GENDER:$1|tu}} es impedida.", + "tags-create-heading": "Crea un eticeta nova", + "tags-create-explanation": "Inisial, eticetas nova creada va deveni disponable per usa par usores e botes.", + "tags-create-tag-name": "Nom de eticeta:", + "tags-create-reason": "Razona:", + "tags-create-submit": "Crea", + "tags-create-no-name": "Tu debe spesifa un nom de eticeta.", + "tags-create-invalid-chars": "Nomes de eticeta no pote conteni virgulas (,), baras vertical (|), o baras inclinada (/).", + "tags-create-invalid-title-chars": "Nomes de eticeta no pote conteni sinias cual on no pote usa en titulos de pajes.", + "tags-create-already-exists": "La eticeta \"$1\" esiste ja.", + "tags-create-warnings-above": "La {{PLURAL:$2|avisa|avisas}} seguente ia es encontrada en atenta crea la eticeta \"$1\":", + "tags-create-warnings-below": "Esce tu vole continua crea la eticeta?", + "tags-delete-title": "Sutrae eticeta", + "tags-delete-explanation-initial": "Tu es a punto de sutrae la eticeta \"$1\" de la banco de datos.", + "tags-delete-explanation-in-use": "Lo va es sutraeda de {{PLURAL:$2|$2 revisa o entrada|tota $2 revisas e/o entradas}} de rejistra a cual lo pertine aora.", + "tags-delete-explanation-warning": "Esta ata es nonreversable e no pote es desfada, an no par dirijores de banco de datos. Es serta ce esta es la eticeta cual tu intende sutrae.", + "tags-delete-explanation-active": "La eticeta \"$1\" es ancora ativa, e va continua es aplicada en la futur. Per preveni esta, vade a la loca(s) do la aplica de la eticeta es definida, e descomuta lo ala.", + "tags-delete-reason": "Razona:", + "tags-delete-submit": "Sutrae nonreversable esta eticeta", + "tags-delete-not-allowed": "Eticetas definida par un estendente no pote es sutraeda estra si la estendente permete lo.", + "tags-delete-not-found": "La eticeta \"$1\" no esiste.", + "tags-delete-too-many-uses": "La eticeta \"$1\" es aplicada a plu ca $2 {{PLURAL:$2|revisa|revisas}}, e donce lo no pote es sutraeda.", + "tags-delete-warnings-after-delete": "La eticeta \"$1\" ia es sutraeda, ma la {{PLURAL:$2|avisa|avisas}} seguente ia es encontrada:", + "tags-delete-no-permission": "Tu no es permeteda a sutrae eticetas de cambia.", + "tags-activate-title": "Ativi eticeta", + "tags-activate-question": "Tu es a punto de ativi la eticeta \"$1\".", + "tags-activate-reason": "Razona:", + "tags-activate-not-allowed": "Ativi de la eticeta \"$1\" no es posible.", + "tags-activate-not-found": "La eticeta \"$1\" no esiste.", + "tags-activate-submit": "Ativi", + "tags-deactivate-title": "Desativi eticeta", + "tags-deactivate-question": "Tu es a punto de desativi la eticeta \"$1\".", + "tags-deactivate-reason": "Razona:", + "tags-deactivate-not-allowed": "Desativi de la eticeta \"$1\" no es posible.", + "tags-deactivate-submit": "Desativi", + "tags-apply-no-permission": "Tu no es permeteda a aplica eticetas de cambia con tua cambias.", + "tags-apply-blocked": "Tu no pote aplica eticetas de cambia con tua cambias cuando {{GENDER:$1|tu}} es impedida.", + "tags-apply-not-allowed-one": "La eticeta \"$1\" no permete ce on aplica lo par mano.", + "tags-apply-not-allowed-multi": "La {{PLURAL:$2|eticeta|eticetas}} seguente no permete ce on aplica los par mano: $1", + "tags-update-no-permission": "Tu no es permeteda a ajunta o sutrae eticetas de cambia de revisas o entradas de rejistra individua.", + "tags-update-blocked": "Tu no pote ajunta o sutrae eticetas de cambia cuando {{GENDER:$1|tu}} es impedida.", + "tags-update-add-not-allowed-one": "La eticeta \"$1\" no permete ce on ajunta lo par mano.", + "tags-update-add-not-allowed-multi": "La {{PLURAL:$2|eticeta|eticetas}} seguente no permete ce on ajunta los par mano: $1", + "tags-update-remove-not-allowed-one": "La eticeta \"$1\" no permete ce on sutrae lo.", + "tags-update-remove-not-allowed-multi": "La {{PLURAL:$2|eticeta|eticetas}} seguente no permete ce on sutrae los par mano: $1", + "tags-edit-title": "Edita eticetas", + "tags-edit-manage-link": "Maneja eticetas", + "tags-edit-revision-selected": "{{PLURAL:$1|Revisa elejeda|Revisas elejeda}} de [[:$2]]:", + "tags-edit-logentry-selected": "{{PLURAL:$1|Entrada|Entradas}} elejeda de rejistra:", + "tags-edit-revision-legend": "Ajunta o sutrae eticetas en {{PLURAL:$1|esta revisa|tota $1 revisas}}", + "tags-edit-logentry-legend": "Ajunta o sutrae eticetas en {{PLURAL:$1|esta entrada|tota $1 entradas}} de rejistra", + "tags-edit-existing-tags": "Eticetas esistente:", + "tags-edit-existing-tags-none": "Zero", + "tags-edit-new-tags": "Eticetas nova:", + "tags-edit-add": "Ajunta esta eticetas:", + "tags-edit-remove": "Ajunta esta eticetas:", + "tags-edit-remove-all-tags": "(sutrae tota eticetas)", + "tags-edit-chosen-placeholder": "Eleje alga eticetas", + "tags-edit-chosen-no-results": "No eticetas corespondente ia es trovada", + "tags-edit-reason": "Razona:", + "tags-edit-revision-submit": "Aplica cambias a {{PLURAL:$1|esta revisa|$1 revisas}}", + "tags-edit-logentry-submit": "Aplica cambias a {{PLURAL:$1|esta entrada|$1 entradas}} de rejistra", + "tags-edit-success": "La cambias ia es aplicada.", + "tags-edit-failure": "La cambias no ia pote es aplicada:\n$1", + "tags-edit-nooldid-title": "Revisa destinal nonvalida", + "tags-edit-nooldid-text": "O tu no ia spesifa a cual revisa esta funsiona va aplica, o la revisa spesifada no esiste.", + "tags-edit-none-selected": "Eleje a la min un eticeta per ajunta o sutrae, per favore.", + "comparepages": "Compara pajes", + "compare-page1": "Paje 1", + "compare-page2": "Paje 2", + "compare-rev1": "Revisa 1", + "compare-rev2": "Revisa 2", + "compare-submit": "Compara", + "compare-invalid-title": "La titulo spesifada no es valida.", + "compare-title-not-exists": "La titulo spesifada no esiste.", + "compare-revision-not-exists": "La revisa spesifada no esiste.", + "diff-form": "Diferes", + "diff-form-oldid": "Numero de revisa vea (si desirada)", + "diff-form-revid": "Numero de revisa de difere", + "diff-form-submit": "Mostra diferes", + "permanentlink": "Lia permanente", + "permanentlink-revid": "Numero de revisa", + "permanentlink-submit": "Vade a revisa", + "dberr-problems": "Pardona! Esta pajeria esperia problemes tecnical.", + "dberr-again": "Per favore, pausa per alga minutos e recarga.", + "dberr-info": "(Banco de datos no es asedable: $1)", + "dberr-info-hidden": "(Banco de datos no es asedable)", + "dberr-usegoogle": "Tu pote usa Google per xerca entretempo.", + "dberr-outofdate": "Nota ce sua catalogos de nosa contenida es cisa nonfresca.", + "dberr-cachederror": "Esta es un copia prememorida de la paje solisitada, e es cisa nonfresca.", + "htmlform-invalid-input": "Alga de tua enflue ave problemes.", + "htmlform-select-badoption": "La valua spesifada no es un eleje valida.", + "htmlform-int-invalid": "La valua spesifada no es un entero.", + "htmlform-float-invalid": "La valua spesifada no es un cuantia numeral.", + "htmlform-int-toolow": "La valua spesifada es min ca la minima, $1.", + "htmlform-int-toohigh": "La valua spesifada es plu ca la masima, $1.", + "htmlform-required": "Esta valua es nesesada.", + "htmlform-submit": "Envia", + "htmlform-reset": "Desfa cambias", + "htmlform-selectorother-other": "Otra", + "htmlform-no": "No", + "htmlform-yes": "Si", + "htmlform-chosen-placeholder": "Eleje", + "htmlform-cloner-create": "Ajunta plu", + "htmlform-cloner-delete": "Sutrae", + "htmlform-cloner-required": "A la min un valua es nesesada.", + "htmlform-date-placeholder": "YYYY-MM-DD", + "htmlform-time-placeholder": "HH:MM:SS", + "htmlform-datetime-placeholder": "YYYY-MM-DD HH:MM:SS", + "htmlform-date-invalid": "La valua spesifada no es reconoseda como un data. Proba la formato YYYY-MM-DD.", + "htmlform-time-invalid": "La valua spesifada no es reconoseda como un ora. Proba la formato HH:MM:SS.", + "htmlform-datetime-invalid": "La valua spesifada no es reconoseda como un data e ora. Proba la formato YYYY-MM-DD HH:MM:SS.", + "htmlform-date-toolow": "La valua spesifada es ante la data la plu temprana permeteda, $1.", + "htmlform-date-toohigh": "La valua spesifada es pos la data la plu tarda permeteda, $1.", + "htmlform-time-toolow": "La valua spesifada es ante la ora la plu temprana permeteda, $1.", + "htmlform-time-toohigh": "La valua spesifada es pos la ora la plu tarda permeteda, $1.", + "htmlform-datetime-toolow": "La valua spesifada es ante la data e ora la plu temprana permeteda, $1.", + "htmlform-datetime-toohigh": "La valua spesifada es pos la data e ora la plu tarda permeteda, $1.", + "htmlform-title-badnamespace": "[[:$1]] no es en la spasio de nom \"{{ns:$2}}\".", + "htmlform-title-not-creatable": "\"$1\" no es un titulo de paje creable", + "htmlform-title-not-exists": "$1 no esiste.", + "htmlform-user-not-exists": "$1 no esiste.", + "htmlform-user-not-valid": "$1 no es un nom valida de usor", "logentry-delete-delete": "$1 {{GENDER:$2|sutrae}} paje $3", + "logentry-delete-delete_redir": "\n$1 {{GENDER:$2|sutrae}} redirije $3 par suprascrive", "logentry-delete-restore": "$1 {{GENDER:$2|restora}} paje $3 ($4)", + "logentry-delete-restore-nocount": "$1 {{GENDER:$2|restora}} paje $3", + "restore-count-revisions": "{{PLURAL:$|1 revisa|$1 revisas}}", + "restore-count-files": "{{PLURAL:$|1 fix|$1 fixes}}", + "logentry-delete-event": "$1 {{GENDER:$2|cambia}} la vidablia de {{PLURAL:$5|un entrada|$5 entradas}} de rejistra en $3: $4", "logentry-delete-revision": "$1 {{GENDER:$2|cambia}} la vidablia de {{PLURAL:$5|un revisa|$5 revisas}} en paje $3: $4", + "logentry-delete-event-legacy": "$1 {{GENDER:$2|cambia}} la vidablia de entradas de rejistra en $3", + "logentry-delete-revision-legacy": "$1 {{GENDER:$2|cambia}} la vidablia de revisas en $3", + "logentry-suppress-delete": "$1 {{GENDER:$2|supresa}} paje $3", + "logentry-suppress-event": "$1 {{GENDER:$2|cambia}} secreta la vidablia de {{PLURAL:$5|un entrada|$5 entradas}} de rejistra en $3: $4", + "logentry-suppress-revision": "$1 {{GENDER:$2|cambia}} secreta la vidablia de {{PLURAL:$5|un revisa|$5 revisas}} en $3: $4", + "logentry-suppress-event-legacy": "$1 {{GENDER:$2|cambia}} secreta la vidablia de entradas de rejistra en $3", + "logentry-suppress-revision-legacy": "$1 {{GENDER:$2|cambia}} secreta la vidablia de revisas en paje $3", "revdelete-content-hid": "contenida ascondeda", + "revdelete-summary-hid": "asconde de resoma de edita", + "revdelete-uname-hid": "asconde de nom de usor", + "revdelete-content-unhid": "desasconde de contenida", + "revdelete-summary-unhid": "desasconde de resoma de edita", + "revdelete-uname-unhid": "desasconde de nom de usor", + "revdelete-restricted": "aplica de restrinjes a dirijores", + "revdelete-unrestricted": "sutrae de restrinjes per dirijores", + "logentry-block-block": "$1 {{GENDER:$2|impedi}} {{GENDER:$4|$3}} con tempo de desvalidi $5 $6", + "logentry-block-unblock": "$1 {{GENDER:$2|desimpedi}} {{GENDER:$4|$3}}", + "logentry-block-reblock": "$1 {{GENDER:$2|cambia}} ajustas de impedi per {{GENDER:$4|$3}} con tempo de desvalidi $5 $6", + "logentry-suppress-block": "$1 {{GENDER:$2|impedi}} {{GENDER:$4|$3}} con tempo de desvalidi $5 $6", + "logentry-suppress-reblock": "$1 {{GENDER:$2|cambia}} ajustas de impedi per {{GENDER:$4|$3}} con tempo de desvalidi $5 $6", + "logentry-import-upload": "$1 {{GENDER:$2|emporta}} $3 par carga de fix", + "logentry-import-upload-details": "$1 {{GENDER:$2|emporta}} $3 par carga de fix ($4 {{PLURAL:$4|revisa|revisas}})", + "logentry-import-interwiki": "$1 {{GENDER:$2|emporta}} $3 de un otra vici", + "logentry-import-interwiki-details": "$1 {{GENDER:$2|emporta}} $3 de $5 ($4 {{PLURAL:$4|revisa|revisas}})", + "logentry-merge-merge": "$1 {{GENDER:$2|fusa}} $3 a $4 (revisas asta $5)", "logentry-move-move": "$1 {{GENDER:$2|move}} paje $3 a $4", "logentry-move-move-noredirect": "$1 {{GENDER:$2|move}} la paje $3 a $4 sin lasa un redirije", "logentry-move-move_redir": "$1 {{GENDER:$2|move}} la paje $3 a $4 con redirije", + "logentry-move-move_redir-noredirect": "$1 {{GENDER:$2|move}} la paje $3 a $4 supra un redirije sin lasa un redirije", + "logentry-patrol-patrol": "$1 {{GENDER:$2|marca}} revisa $4 de paje $3 como patruliada", "logentry-patrol-patrol-auto": "$1 {{GENDER:$2|marca}} automata la revisa $4 de paje $3 como patruliada", + "logentry-newusers-newusers": "Conta de usor $1 es {{GENDER:$2|creada}}", "logentry-newusers-create": "Conta de usor $1 ia es {{GENDER:$2|creada}}", + "logentry-newusers-create2": "Conta de usor $3 es {{GENDER:$2|creada}} par $1", + "logentry-newusers-byemail": "Conta de usor $3 es {{GENDER:$2|creada}} par $1; clave enviada par eposta", "logentry-newusers-autocreate": "Conta de usor $1 es automata {{GENDER:$2|creada}}", + "logentry-protect-move_prot": "$1 {{GENDER:$2|move}} ajustas de proteje de $4 a $3", + "logentry-protect-unprotect": "$1 {{GENDER:$2|sutrae}} proteje de $3", + "logentry-protect-protect": "$1 {{GENDER:$2|proteje}} $3 $4", + "logentry-protect-protect-cascade": "$1 {{GENDER:$2|proteje}} $3 $4 [cascadin]", + "logentry-protect-modify": "$1 {{GENDER:$2|cambia}} nivel de proteje per $3 $4", + "logentry-protect-modify-cascade": "$1 {{GENDER:$2|cambia}} nivel de proteje per $3 $4 [cascadin]", + "logentry-rights-rights": "$1 {{GENDER:$2|cambia}} membria de grupo per {{GENDER:$6|$3}} de $4 a $5", + "logentry-rights-rights-legacy": "$1 {{GENDER:$2|cambia}} membria de grupo per $3", + "logentry-rights-autopromote": "$1 es automata altida de $4 a $5", "logentry-upload-upload": "$1 {{GENDER:$2|carga}} $3", "logentry-upload-overwrite": "$1 {{GENDER:$2|carga}} un varia nova de $3", + "logentry-upload-revert": "$1 {{GENDER:$2|carga}} $3", + "log-name-managetags": "Rejistra de maneja de eticetas", + "log-description-managetags": "Esta paje lista taxes relatada a [[Special:Tags|eticetas]]. La rejistra conteni sola atas fada par mano par un dirijor; eticetas pote es creada o sutraeda par la program de vici sin ajunta un entrada a esta rejistra.", + "logentry-managetags-create": "$1 {{GENDER:$2|crea}} la eticeta \"$4\"", + "logentry-managetags-delete": "$1 {{GENDER:$2|sutrae}} la eticeta \"$4\" (sutrae de $5 {{PLURAL:$5|revisa o entrada|revisas e/o entradas}} de rejistra)", + "logentry-managetags-activate": "$1 {{GENDER:$2|ativi}} la eticeta \"$4\" per usa par usores e botes", + "logentry-managetags-deactivate": "$1 {{GENDER:$2|desativi}} la eticeta \"$4\" per usa par usores e botes", + "log-name-tag": "Rejistra de eticetas", + "log-description-tag": "Esta paje mostra cuando usores ia ajunta o sutrae [[Special:Tags|eticetas]] de revisas o entradas de rejistra individua. La rejistra no lista atas de eticeta cuando los aveni como parte de un edita, sutrae o otra ata simil.", + "logentry-tag-update-add-revision": "$1 {{GENDER:$2|ajunta}} la {{PLURAL:$7|eticeta|eticetas}} $6 a revisa $4 de paje $3", + "logentry-tag-update-add-logentry": "$1 {{GENDER:$2|ajunta}} la {{PLURAL:$7|eticeta|eticetas}} $6 a entrada de rejistra $5 de paje $3", + "logentry-tag-update-remove-revision": "$1 {{GENDER:$2|sutrae}} la {{PLURAL:$9|eticeta|eticetas}} $8 de revisa $4 de paje $3", + "logentry-tag-update-remove-logentry": "$1 {{GENDER:$2|sutrae}} la {{PLURAL:$9|eticeta|eticetas}} $8 de entrada de rejistra $5 de paje $3", + "logentry-tag-update-revision": "$1 {{GENDER:$2|ajusta}} eticetas en revisa $4 de paje $3 ({{PLURAL:$7|ajunta}} $6; {{PLURAL:$9|sutrae}} $8)", + "logentry-tag-update-logentry": "$1 {{GENDER:$2|ajusta}} eticetas en entrada de rejistra $5 de paje $3 ({{PLURAL:$7|ajunta}} $6; {{PLURAL:$9|sutrae}} $8)", + "rightsnone": "(zero)", + "rightslogentry-temporary-group": "$1 (tempora, asta $2)", + "feedback-adding": "Ajuntante comenta a paje...", + "feedback-back": "Retro", + "feedback-bugcheck": "Bon! Ma serti ce lo no es ja un de la [$1 defetos conoseda], per favore.", + "feedback-bugnew": "Me es serta. Reporta un defeto nova", + "feedback-bugornote": "Si tu vole descrive la detalias de un problem tecnical, [$1 reporta un defeto], per favore.\nSi no, tu pote usa la formulario fasil a su. Tua comenta va es ajuntada a la paje \"[$3 $2]\", con ance tua nom de usor.", + "feedback-cancel": "Cansela", + "feedback-close": "Fada", + "feedback-external-bug-report-button": "Envia un report tecnical", + "feedback-dialog-title": "Envia comenta", + "feedback-dialog-intro": "Tu pote usa la formulario a su per envia tua comenta. Tua comenta va es ajuntada a la paje \"$1\", con ance tua nom de usor.", + "feedback-error1": "Era: Resulta nonreconoseda de API", + "feedback-error2": "Era: Fali de edita", + "feedback-error3": "Era: API no responde", + "feedback-error4": "Era: Envia a la titulo comental spesifada no es posible", + "feedback-message": "Mesaje:", + "feedback-subject": "Tema:", + "feedback-submit": "Envia", + "feedback-terms": "Me comprende ce mea informa de surfador inclui informas esata sur mea revisa de surfador e sistem de opera, e va es publica compartida con mea comenta.", + "feedback-termsofuse": "Me acorda furni un comenta longo la Restrinjes de Usa.", + "feedback-thanks": "Grasias! Tua comenta apare en la paje \"[$2 $1]\".", + "feedback-thanks-title": "Grasias!", + "feedback-useragent": "Surfador:", "searchsuggest-search": "Xerca {{SITENAME}}", + "searchsuggest-containing": "conteninte...", + "api-error-badtoken": "Era interna: Mal marca.", + "api-error-emptypage": "La crea de pajes nova e vacua no es permeteda.", + "api-error-publishfailed": "Era interna: la servador ia fali publici un fix tempora.", + "api-error-stashfailed": "Era interna: la servador ia fali fisa un fix tempora.", + "api-error-unknown-warning": "Avisa nonconoseda: \"$1\".", + "api-error-unknownerror": "Era nonconoseda: \"$1\".", + "duration-seconds": "$1 {{PLURAL:$1|secondo|secondos}}", + "duration-minutes": "$1 {{PLURAL:$1|minuto|minutos}}", + "duration-hours": "{{PLURAL:$1|ora|oras}}", "duration-days": "$1 {{PLURAL:$1|dia|dias}}", + "duration-weeks": "$1 {{PLURAL:$1|semana|semanas}}", + "duration-years": "$1 {{PLURAL:$1|anio|anios}}", + "duration-decades": "$1 {{PLURAL:$1|desenio|desenios}}", + "duration-centuries": "$1 {{PLURAL:$1|sentenio|sentenios}}", + "duration-millennia": "$1 {{PLURAL:$1|milenio|milenios}}", + "rotate-comment": "Jira de imaje par $1 {{PLURAL:$1|grado|grados}} orolojin", + "limitreport-title": "Datos profilinte de analisador sintatical", + "limitreport-cputime": "Usa de tempo par prosedador", + "limitreport-cputime-value": "$1 {{PLURAL:$1|secondo|secondos}}", + "limitreport-walltime": "Usa de tempo real", + "limitreport-walltime-value": "$1 {{PLURAL:$1|secondo|secondos}}", + "limitreport-ppvisitednodes": "Cuantia de nodas visitada par preprosedador", + "limitreport-ppgeneratednodes": "Cuantia de nodas jenerada par preprosedador", + "limitreport-postexpandincludesize": "Grandia de inclui pos despaci", + "limitreport-postexpandincludesize-value": "$1/$2 {{PLURAL:$2|bait|baites}}", + "limitreport-templateargumentsize": "Grandia de parametres de stensil", + "limitreport-templateargumentsize-value": "$1/$2 {{PLURAL:$2|bait|baites}}", + "limitreport-expansiondepth": "Profondia la plu grande de despaci", + "limitreport-expensivefunctioncount": "Cuantia de funsionas custosa de analisador sintatical", + "expandtemplates": "Despaci stensiles", + "expand_templates_intro": "Esta paje spesial prende testo e despaci tota stensiles en lo, en modo recorsante.\nLo despaci ance funsionas suportada de analisador sintatical como\n{{#language:…}} e variables como\n{{CURRENTDAY}}.\nEn fato, lo despaci cuasi tota cosas entre brasetas risa duple.", + "expand_templates_title": "Titulo de contesto, per {{FULLPAGENAME}}, etc.:", + "expand_templates_input": "Testo enflual:", + "expand_templates_output": "Resulta", + "expand_templates_xml_output": "Esflue XML", + "expand_templates_html_output": "Esflue HTML cru", "expand_templates_ok": "Oce", - "randomrootpage": "Paje acaso de radis" + "expand_templates_remove_comments": "Sutrae comentas", + "expand_templates_remove_nowiki": "Supresa eticetas en resulta", + "expand_templates_generate_xml": "Mostra arbor de analise XML", + "expand_templates_generate_rawhtml": "Mostra HTML cru", + "expand_templates_preview": "Previde", + "expand_templates_preview_fail_html": "Car HTML cru es comutada en {{SITENAME}} e datos de sesion ia es perdeda, la previde es ascondeda per preveni atacas par JavaScript.\n\nSi esta es un atenta valida de previde, atenta denova, per favore.\nSi lo ancora no funsiona, proba [[Special:UserLogout|desautentici]] e reautentici, e serti ce tua surfador permete cucis de esta pajeria.", + "expand_templates_preview_fail_html_anon": "\nCar HTML cru es comutada en {{SITENAME}} e tu no es autenticida, la previde es ascondeda per preveni atacas par JavaScript.\n\nSi esta es un atenta valida de previde, [[Special:UserLogin|autentici]] e atenta denova, per favore.", + "expand_templates_input_missing": "Tu debe furni a la min alga testo enflual.", + "pagelanguage": "Cambia lingua de paje", + "pagelang-name": "Paje", + "pagelang-language": "Lingua", + "pagelang-use-default": "Usa lingua inisial", + "pagelang-select-lang": "Eleje lingua", + "pagelang-reason": "Razona", + "pagelang-submit": "Envia", + "pagelang-nonexistent-page": "La paje $1 no esiste.", + "pagelang-unchanged-language": "La paje $1 ave ja la lingua $2.", + "pagelang-unchanged-language-default": "La paje $1 ave ja la lingua inisial de contenida de la vici.", + "pagelang-db-failed": "La banco de datos ia fali cambia la lingua de paje.", + "right-pagelang": "Cambia lingua de paje", + "action-pagelang": "cambia la lingua de paje", + "log-name-pagelang": "Rejistra de cambias de lingua", + "log-description-pagelang": "Esta es un rejistra de cambias de linguas de paje.", + "logentry-pagelang-pagelang": "$1 {{GENDER:$2|cambia}} la lingua de $3 de $4 a $5", + "default-skin-not-found": "\nOp! La pel inisial per tua vici, definida en $wgDefaultSkin como $1, no es disponable.\n\nTua instala pare inclui la {{PLURAL:$4|pel|peles}} seguente. Vide [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Ajusta de pel] per informa sur la metodo de comuta {{PLURAL:$4|lo|los e eleje la inisial}}.\n\n$2\n\n; Si tu veni de instala MediaWiki:\n: Tu ia instala probable de Git, o direta de la codigo fontal par alga otra metodo. Esta es espetada. Proba instala alga peles de [https://www.mediawiki.org/wiki/Category:All_skins la arcivo de peles a mediawiki.org], par:\n:* Descarga la [https://www.mediawiki.org/wiki/Download instalador de fix tar], cual es acompaniada par alga peles e estendentes. Tu pote copia e cola la arcivo skins/ de lo.\n:* Descarga fixes tar de peles individua de [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Usa Git per descarga peles].\n: Esta no debe interfere con tua arciveria Git si tu es un developor de MediaWiki.\n\n; Si tu veni de renovi MediaWiki:\n: MediaWiki 1.24 e plu novas no plu comuta automata la peles instalada (vide [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual: Autodescovre de peles]). Tu pote cola la {{PLURAL:$5|linia|linias}} seguente a LocalSettings.php per comuta {{PLURAL:$5|la pel|tota peles}} instalada:\n\n
    $3
    \n\n; Si tu veni de edita LocalSettings.php:\n: Esamina la nomes de pel per maltapes.", + "default-skin-not-found-no-skins": "\nOp! La pel inisial per tua vici, definida en $wgDefaultSkin como $1, no es disponable.\n\nTu ave no peles instalada.\n\n; Si tu veni de instala MediaWiki:\n: Tu ia instala probable de Git, o direta de la codigo fontal par alga otra metodo. Esta es espetada. MediaWiki 1.24 e plu novas no inclui peles en la arciveria xef. Proba instala alga peles de [https://www.mediawiki.org/wiki/Category:All_skins la arcivo de peles a mediawiki.org], par:\n:* Descarga la [https://www.mediawiki.org/wiki/Download instalador de fix tar], cual es acompaniada par alga peles e estendentes. Tu pote copia e cola la arcivo skins/ de lo.\n:* Descarga fixes tar de peles individua de [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Usa Git per descarga peles].\n: Esta no debe interfere con tua arciveria Git si tu es un developor de MediaWiki. Vide [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Ajusta de pel] per informa sur la metodo de comuta los e eleje la inisial.", + "default-skin-not-found-row-enabled": "* $1 / $2 (comutada)", + "default-skin-not-found-row-disabled": "* $1 / $2 (descomutada)", + "mediastatistics": "Statisticas de medias", + "mediastatistics-summary": "Statisticas sur tipos de fix cargada. Esta inclui sola la revisa la plu resente de un fix. Revisas vea o sutraeda de fixes es escluida.", + "mediastatistics-nbytes": "{{PLURAL:$1|$1 byte|$1 bytes}} ($2; $3%)", + "mediastatistics-bytespertype": "Grandia intera de fix per esta parte: {{PLURAL:$1|$1 bait|$1 baites}} ($2; $3%).", + "mediastatistics-allbytes": "\nGrandia intera de fix per tota fixes: {{PLURAL:$1|$1 bait|$1 baites}} ($2).", + "mediastatistics-table-mimetype": "Tipo MIME", + "mediastatistics-table-extensions": "Estendentes posible", + "mediastatistics-table-count": "Cuantia de fixes", + "mediastatistics-table-totalbytes": "Grandia combinada", + "mediastatistics-header-unknown": "Nonconoseda", + "mediastatistics-header-bitmap": "Imajes matrisin", + "mediastatistics-header-drawing": "Desinias (imajes vetoral)", + "mediastatistics-header-audio": "Audio", + "mediastatistics-header-video": "Videos", + "mediastatistics-header-multimedia": "Medias rica", + "mediastatistics-header-office": "Ofisia", + "mediastatistics-header-text": "Testo", + "mediastatistics-header-executable": "Esecutables", + "mediastatistics-header-archive": "Formatos compresada", + "mediastatistics-header-total": "Tota fixes", + "json-warn-trailing-comma": "$1 {{PLURAL:$1|virgula|virgulas}} codal ia es sutraeda de JSON", + "json-error-unknown": "La JSON ia ave un problem. Era: $1", + "json-error-depth": "La profondia masima de pila es esededa", + "json-error-state-mismatch": "JSON nonvalida o malformida", + "json-error-ctrl-char": "Era de sinia controlante, cisa noncoreta codigida", + "json-error-syntax": "Era de sintatica", + "json-error-utf8": "Sinias UTF-8 malformida, cisa noncoreta codigida", + "json-error-recursion": "La valua per codigi conteni un o plu referes recorsante", + "json-error-inf-or-nan": "La valua per codigi conteni un o plu valuas NAN o INF", + "json-error-unsupported-type": "Un valua de un tipo noncodigable ia es donada", + "headline-anchor-title": "Lia a esta parte", + "special-characters-group-latin": "Latina", + "special-characters-group-latinextended": "Latina estendeda", + "special-characters-group-ipa": "AFI", + "special-characters-group-symbols": "Simboles", + "special-characters-group-greek": "Elinica", + "special-characters-group-greekextended": "Elinica estendeda", + "special-characters-group-cyrillic": "Cirilica", + "special-characters-group-arabic": "Arabi", + "special-characters-group-arabicextended": "Arabi estendeda", + "special-characters-group-persian": "Farsi", + "special-characters-group-hebrew": "Ivri", + "special-characters-group-bangla": "Bangla", + "special-characters-group-tamil": "Tamil", + "special-characters-group-telugu": "Telugu", + "special-characters-group-sinhala": "Sinala", + "special-characters-group-gujarati": "Gudjarati", + "special-characters-group-devanagari": "Devanagari", + "special-characters-group-thai": "Tai", + "special-characters-group-lao": "Lau", + "special-characters-group-khmer": "Cmer", + "special-characters-group-canadianaboriginal": "Canadian orijinal", + "special-characters-title-endash": "duilinia orizonal", + "special-characters-title-emdash": "linia orizonal", + "special-characters-title-minus": "sinia negativa", + "mw-widgets-dateinput-no-date": "No data elejeda", + "mw-widgets-mediasearch-input-placeholder": "Xerca medias", + "mw-widgets-mediasearch-noresults": "No resultas trovada.", + "mw-widgets-titleinput-description-new-page": "paje ancora no esiste", + "mw-widgets-titleinput-description-redirect": "redirije a $1", + "mw-widgets-categoryselector-add-category-placeholder": "Ajunta un categoria...", + "mw-widgets-usersmultiselect-placeholder": "Ajunta un categoria...", + "date-range-from": "De data:", + "date-range-to": "Asta data:", + "sessionmanager-tie": "Tipos multiple de autentici de solisita no pote es combinada: $1.", + "sessionprovider-generic": "sesiones de $1", + "sessionprovider-mediawiki-session-cookiesessionprovider": "sesiones con cucis", + "sessionprovider-nocookies": "Cucis es cisa descomutada. Serti ce tu ia comuta cucis e comensa denova.", + "randomrootpage": "Paje acaso de radis", + "log-action-filter-block": "Tipo de impedi:", + "log-action-filter-contentmodel": "Tipo de cambia de model de contenida:", + "log-action-filter-delete": "Tipo de sutrae:", + "log-action-filter-import": "Tipo de emporta:", + "log-action-filter-managetags": "Tipo de ata de maneja de eticeta:", + "log-action-filter-move": "Tipo de move:", + "log-action-filter-newusers": "Tipo de crea de conta:", + "log-action-filter-patrol": "Tipo de patrulia:", + "log-action-filter-protect": "Tipo de proteje:", + "log-action-filter-rights": "Tipo de cambia de direto:", + "log-action-filter-suppress": "Tipo de supresa:", + "log-action-filter-upload": "Tipo de carga:", + "log-action-filter-all": "Tota", + "log-action-filter-block-block": "Impedi", + "log-action-filter-block-reblock": "Ajusta de impedi", + "log-action-filter-block-unblock": "Desimpedi", + "log-action-filter-contentmodel-change": "Cambia de model de contenida", + "log-action-filter-contentmodel-new": "Crea de paje con model de contenida noninisial", + "log-action-filter-delete-delete": "Sutrae de paje", + "log-action-filter-delete-delete_redir": "Suprascrive de redirije", + "log-action-filter-delete-restore": "Desutrae de paje", + "log-action-filter-delete-event": "Sutrae de entrada de rejistra", + "log-action-filter-delete-revision": "Sutrae de revisa", + "log-action-filter-import-interwiki": "Emporta intervical", + "log-action-filter-import-upload": "Emporta par carga de XML", + "log-action-filter-managetags-create": "Crea de eticeta", + "log-action-filter-managetags-delete": "Sutrae de eticeta", + "log-action-filter-managetags-activate": "Ativi de eticeta", + "log-action-filter-managetags-deactivate": "Desativi de eticeta", + "log-action-filter-move-move": "Move sin suprascrive de redirijes", + "log-action-filter-move-move_redir": "Move con suprascrive de redirijes", + "log-action-filter-newusers-create": "Crea par usor anonim", + "log-action-filter-newusers-create2": "Crea par usor rejistrada", + "log-action-filter-newusers-autocreate": "Crea automata", + "log-action-filter-newusers-byemail": "Crea con clave enviada par eposta", + "log-action-filter-patrol-patrol": "Patrulia par mano", + "log-action-filter-patrol-autopatrol": "Patrulia automata", + "log-action-filter-protect-protect": "Proteje", + "log-action-filter-protect-modify": "Ajusta de proteje", + "log-action-filter-protect-unprotect": "Desproteje", + "log-action-filter-protect-move_prot": "Move de proteje", + "log-action-filter-rights-rights": "Cambia par mano", + "log-action-filter-rights-autopromote": "Cambia automata", + "log-action-filter-suppress-event": "Supresa de entrada de rejistra", + "log-action-filter-suppress-revision": "Supresa de revisa", + "log-action-filter-suppress-delete": "Supresa de paje", + "log-action-filter-suppress-block": "Supresa de usor par impedi", + "log-action-filter-suppress-reblock": "Supresa de usor par reimpedi", + "log-action-filter-upload-upload": "Carga nova", + "log-action-filter-upload-overwrite": "Recarga", + "authmanager-authn-not-in-progress": "Autentici no aveni, o datos de sesion es perdeda. Per favore, comensa denova.", + "authmanager-authn-no-primary": "La identia furnida no ia pote es autenticida.", + "authmanager-authn-no-local-user": "La identia furnida no es asosiada con un usor de esta vici.", + "authmanager-authn-no-local-user-link": "La identia furnida es valida ma no es asosiada con un usor de esta vici. Autentici en un otra modo, o crea un usor nova, e tu va ave la posible de junta tua identia presedente a acel conta.", + "authmanager-authn-autocreate-failed": "La crea automata de un conta local ia fali: $1", + "authmanager-change-not-supported": "La identia furnida no pote es cambiada, car no cosa ta usa lo.", + "authmanager-create-disabled": "La crea de contas es descomutada.", + "authmanager-create-from-login": "Per crea tua conta, completi la campos, per favore.", + "authmanager-create-not-in-progress": "Crea de conta no aveni, o datos de sesion es perdeda. Per favore, comensa denova.", + "authmanager-create-no-primary": "La identia furnida no pote es usada per crea un conta.", + "authmanager-link-no-primary": "La identia furnida no pote es usada per junta de conta.", + "authmanager-link-not-in-progress": "Junta de conta no aveni, o datos de sesion es perdeda. Per favore, comensa denova.", + "authmanager-authplugin-setpass-failed-title": "Cambia de clave ia fali", + "authmanager-authplugin-setpass-failed-message": "La estendente de autentici ia rejeta la cambia de clave.", + "authmanager-authplugin-create-fail": "La estendente de autentici ia rejeta la crea de conta.", + "authmanager-authplugin-setpass-denied": "La estendente de autentici no permete cambia claves.", + "authmanager-authplugin-setpass-bad-domain": "Domina nonvalida.", + "authmanager-autocreate-noperm": "La crea automata de contas no es permeteda.", + "authmanager-autocreate-exception": "La crea automata de contas es tempora descomutada par causa de eras presedente.", + "authmanager-userdoesnotexist": "Conta de usor \"$1\" no es rejistrada.", + "authmanager-userlogin-remembermypassword-help": "Esce la clave debe es memorida pos la sesion.", + "authmanager-username-help": "Nom de usor per autentici.", + "authmanager-password-help": "Clave per autentici.", + "authmanager-domain-help": "Domina per autentici esterna.", + "authmanager-retype-help": "Clave denova per confirma.", + "authmanager-email-label": "Eposta", + "authmanager-email-help": "Adirije de eposta", + "authmanager-realname-label": "Nom vera", + "authmanager-realname-help": "Nom vera de la usor", + "authmanager-provider-password": "Autentici par clave", + "authmanager-provider-password-domain": "Autentici par clave e domina", + "authmanager-provider-temporarypassword": "Clave tempora", + "authprovider-confirmlink-message": "Pos tua atentas resente de autentici, la contas seguente pote es juntada a tua conta de vici. Lia los permete autentici par acel contas. Per favore, eleje los cual tu vole lia.", + "authprovider-confirmlink-request-label": "Contas cual debe es juntada", + "authprovider-confirmlink-success-line": "$1: Junta ia susede.", + "authprovider-confirmlink-failed": "Junta de conta no ia susede completa: $1", + "authprovider-confirmlink-ok-help": "Continua pos mostra mesajes de fali de junta.", + "authprovider-resetpass-skip-label": "Omete", + "authprovider-resetpass-skip-help": "Omete reinisia la clave.", + "authform-nosession-login": "La autentici ia susede, ma tua surfador no pote \"recorda\" la autentici.\n\n$1", + "authform-nosession-signup": "La conta ia es creada, ma tua surfador no pote \"recorda\" la autentici.\n\n$1", + "authform-newtoken": "Marca manca. $1", + "authform-notoken": "Marca manca", + "authform-wrongtoken": "Marca noncoreta", + "specialpage-securitylevel-not-allowed-title": "No permeteda", + "specialpage-securitylevel-not-allowed": "Pardona: tu no es permeteda a usa esta paje car tua identia no pote es sertida.", + "authpage-cannot-login": "Autentici no pote comensa.", + "authpage-cannot-login-continue": "Autentici no pote continua. Tua sesion ia abandona, probable.", + "authpage-cannot-create": "Crea de conta no pote comensa.", + "authpage-cannot-create-continue": "Crea de conta no pote continua. Tua sesion ia abandona, probable.", + "authpage-cannot-link": "Junta de conta no pote comensa.", + "authpage-cannot-link-continue": "Junta de conta no pote continua. Tua sesion ia abandona, probable.", + "cannotauth-not-allowed-title": "Permete refusada", + "cannotauth-not-allowed": "Tu no es permeteda a usa esta paje", + "changecredentials": "Cambia detalias de autentici", + "changecredentials-submit": "Cambia detalias de autentici", + "changecredentials-invalidsubpage": "$1 no es un tipo valida de autentici", + "changecredentials-success": "Tua detalias de autentici es cambiada.", + "removecredentials": "Sutrae detalias de autentici", + "removecredentials-submit": "Sutrae detalias de autentici", + "removecredentials-invalidsubpage": "$1 no es un tipo valida de autentici", + "removecredentials-success": "Tua detalias de autentici es sutraeda.", + "credentialsform-provider": "Tipo de autentici:", + "credentialsform-account": "Nom de conta:", + "cannotlink-no-provider-title": "No contas es juntable", + "cannotlink-no-provider": "No contas es juntable", + "linkaccounts": "Junta contas", + "linkaccounts-success-text": "La conta ia es juntada.", + "linkaccounts-submit": "Junta contas", + "unlinkaccounts": "Dejunta contas", + "unlinkaccounts-success": "La conta ia es dejuntada.", + "authenticationdatachange-ignored": "La cambia de datos de autentici no susede. Cisa no furnador es definida?", + "userjsispublic": "Nota per favore: Supajes de JavaScript debe no conteni datos privata, car los es regardable par otra usores.", + "usercssispublic": "Nota per favore: Supajes de CSS debe no conteni datos privata, car los es regardable par otra usores.", + "restrictionsfield-badip": "Adirije o estende IP nonvalida: $1", + "restrictionsfield-label": "Estendes IP permeteda:", + "restrictionsfield-help": "Un adirije IP o estende CIDR per linia: Per comuta tota, usa:
    0.0.0.0/0\n::/0
    ", + "revid": "revisa $1", + "pageid": "numero de paje $1", + "rawhtml-notallowed": "Eticetas <html> no pote es usada estra pajes normal.", + "gotointerwiki": "Partinte de {{SITENAME}}", + "gotointerwiki-invalid": "La titulo spesifada es nonvalida.", + "gotointerwiki-external": "Tu es a punto de parti de {{SITENAME}} per visita [[$2]], cual es un pajeria separada.\n\n'''[$1 Continua a $1]'''", + "undelete-cantedit": "Tu no pote desutrae esta paje car tu no es permeteda a edita esta paje.", + "undelete-cantcreate": "Tu no pote desutrae esta paje car no paje esiste con esta nom e tu no es permeteda a crea esta paje.", + "pagedata-title": "Datos de paje", + "pagedata-text": "Esta paje furni un interfas a datos de pajes. Per favore, furni la titulo de paje en la URL, usante la sintatica de supajes.\n* Negosia de contenida segue la xapo Accept de tua surfador. Esta vole dise ce la datos de paje va es furnida en la formato prefereda par tua surfador.", + "pagedata-not-acceptable": "No formato conveninte ia es trovada. Tipos MIME suportada: $1", + "pagedata-bad-title": "Titulo nonvalida: $1." } diff --git a/languages/i18n/li.json b/languages/i18n/li.json index 4f5870aa42..356154dc91 100644 --- a/languages/i18n/li.json +++ b/languages/i18n/li.json @@ -48,13 +48,14 @@ "tog-shownumberswatching": "'t Aantal gebroekers tuine die dees pagina volg", "tog-oldsig": "Dien bestaonde ongerteikening:", "tog-fancysig": "Es wikiteks behanjele (zonder autematische verwiezing)", - "tog-uselivepreview": "\"live veurbesjouwing\" gebroeke", + "tog-uselivepreview": "Tuin veurbesjoewing zónger de pagina te herlaje", "tog-forceeditsummary": "'n Melding gaeve bie 'n laeg samevatting", "tog-watchlisthideown": "Eige bewirkinge verberge op mien volglies", "tog-watchlisthidebots": "Botbewirkinge op mien volglies verberge", "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", @@ -174,6 +175,7 @@ "tagline": "Van {{SITENAME}}", "help": "Hölp", "search": "Zeuke", + "search-ignored-headings": " #
    \n# Köp die waere genegeerdj tiejes 't zeuke.\n# Verangeringe waere van kraf wen 'ne kop wuuertj geïndexeerd.\n# Doe kins oppernuuj indexere aafdwinge door 't oetveure van 'n laeg bewirking.\n# De syntaxis is es volg:\n#   * Alle teks vanaaf 't teike \"#\" tot 't ènj van de regel weurt gezeen es 'n opmerking;\n#   * Edere neet-laege regel is de precieze te negere kop, inclusief hooflittergebroek en dergelike.\nReferenties\nExtern links\nZuuch ouch\n #
    ", "searchbutton": "Zeuk", "go": "OK", "searcharticle": "Gank", @@ -212,7 +214,7 @@ "viewhelppage": "Hulppagina tuine", "categorypage": "Categoriepagina tuine", "viewtalkpage": "Euverlèk tuine", - "otherlanguages": "Anger tale", + "otherlanguages": "In anger spraoke", "redirectedfrom": "(Doorverweze van $1)", "redirectpagesub": "Doorverwiespagina", "redirectto": "Doorverwieze nao:", @@ -308,14 +310,16 @@ "databaseerror-query": "Zeukopdrach: $1", "databaseerror-function": "Functie: $1", "databaseerror-error": "Fout: $1", + "transaction-duration-limit-exceeded": "Dees transactie ($1) is aafgebraoke ómdet de limiet van $2 {{PLURAL:$2|sekónd}} is bereik. Hiemit waere groeate achterstenj bie 't replicere verkómme. \nWens se mieë items tegeliekertied bewirks, perbeer 't den in mieër klein opdrachte te doon.", "laggedslavemode": "Waarsjoewing: de pagina kin verauwerd zien.", "readonly": "Database geblokkeerd", "enterlockreason": "Gaef 'n rae veur de blokkering en wie lank 't dinkelik zal dore. De ingegaeve rae zal aan de gebroekers getuind waere.", - "readonlytext": "De database van {{SITENAME}} is geblokkeerd veur bewirkinge, waorsjienelik veur besjtandsongerhaud. Nao aafloup waert de functionaliteit weer hersteld.\n\nDe verantwoordelike systeembeheerder gaof de volgende rae op:\n

    $1", + "readonlytext": "De database van is geblokkeerd veur bewirkinge, waorsjienelik veur besjtandsongerhaud. Nao aafloup waert de functionaliteit weer hersteld.\n\nDe verantwoordelike systeembeheerder gaof de volgende rae op: $1", "missing-article": "In de database is gein inhaud aangetróffe veur de pagina \"$1\" die d'r wel zou mote zien ($2).\n\nDit kan veurkómme as doe 'n auwer verwiezing nao 't versjil tösje twee versies van ein pagina volgs of 'n versie opvreugs die is eweggesjaf.\n\nEs dit neet 't geval is, höbs doe mesjins 'n fout in de software gevónje.\nMaak hievan melding bie 'ne [[Special:ListUsers/sysop|systeembeheerder]] van {{SITENAME}} en vermeld daobie de URL van dees pagina.", "missingarticle-rev": "(versienummer: $1)", "missingarticle-diff": "(Wijziging: $1, $2)", "readonly_lag": "De database is autematis vergrendeld terwiel de ongergesjikte databaseservers synchronisere mit de huidserver.", + "nonwrite-api-promise-error": "De HTTP-header 'Promise-Non-Write-API-Action' waas mitgesjik, mer 't verzeuk góng euver 'n API-sjriefverzeuk.", "internalerror": "Interne fout", "internalerror_info": "Interne fout: $1", "internalerror-fatal-exception": "Fatale fout van type \"$1\"", @@ -332,8 +336,18 @@ "cannotdelete": "Kós de pagina of 't besjtand \"$1\" neet ewegsjaffe.\nMesjiens haet emes angers det al gedaon.", "cannotdelete-title": "Pagina \"$1\" kin neet gewösj waere", "delete-hook-aborted": "'t Wösje is aafgebroke door 'ne 'hook'.\nD'r is gein toelichting besjikbaar.", + "no-null-revision": "Kós gein laeg nuuj versie make veure pagina \"$1\"", "badtitle": "Óngeljige paginatitel", "badtitletext": "De opgevraogde pagina is neet besjikbaar of laeg.", + "title-invalid-empty": "De opgevraogdje paginanaam is laeg of bevatj de naam van 'n naamruumdje.", + "title-invalid-utf8": "De opgevraogdje paginanaam bevatj 'nen óngeljige UFT-8-rits.", + "title-invalid-interwiki": "De aangevraogdje paginanaam bevatj 'nen interwiki dae neet kan waere gebroek in paginaname.", + "title-invalid-talk-namespace": "De aangevraogdje paginanaam verwies nao 'n euverlègkpagina die neet kan bestaon.", + "title-invalid-characters": "De aangevraogdje paginanaam bevatj óngeljige teikes: \"$1\".", + "title-invalid-relative": "De paginanaam bevatj e rilletief paag. Rilletief paginaname (\"./\", \"../\") zeen óngeljig ómdet ze dök ónbereikbaar zeen es de browser van 'ne gebroeker dees toupas.", + "title-invalid-magic-tilde": "De aangevraogdje paginanaam bevatj 'n óngeljige volgrie van magische tildes (~~~~).", + "title-invalid-too-long": "De aangevraogdje paginanaam is te lank. Dees moog neet langer zeen es $1 {{PLURAL:$1|byte|bytes}} in UTF-8-codering.", + "title-invalid-leading-colon": "De aangevraogdje paginanaam bevatj 'n óngeljige dóbbel puntj ane begin.", "perfcached": "De gegaeves koume oet 'n cache en zeen mäögelik neet actueel. 't Geuf {{PLURAL:$1|maximaal ei rizzeltaot|maximaal $1 rizzeltaote}} inne cache.", "perfcachedts": "De getuunde gegaeves komme oet 'n cache en zeen veur 't letst biejgewèrk op $1. Maximaal guuef 't {{PLURAL:$4|ei rizzeltaot|$4 rizzeltaote}} inne cache.", "querypage-no-updates": "Deze pagina kin op 't memènt neet biegewirk waere. Deze gegaeves waere neet verfrisj.", @@ -341,30 +355,40 @@ "viewsource-title": "Bekiek brón van $1", "actionthrottled": "Hanjeling taengegehauwe", "actionthrottledtext": "Es maotregel taege spam is 't aantal keer per tiedseinheid dets te dees hanjeling kèns verrichte beperk. De höbs de limiet euversjreje. Perbeer 't euver 'n aantal minute obbenuuj.", - "protectedpagetext": "Dees pagina is beveilig. Bewirke is neet meugelik.", + "protectedpagetext": "Dees pagina is beveilig. Bewirke of anger hanjelinge is neet meugelik.", "viewsourcetext": "De kans de brónteks van dees pagina bekieke en kopiëre.", - "viewyourtext": "Doe kans \"dien bewèrkinge\" ane brónteks van dees pagina bekieke en euverkopiëre:", - "protectedinterface": "Deze pagina bevat teks veur berichte van de software en is beveilig om misbroek te veurkomme.", + "viewyourtext": "Doe kans dien bewèrkinge ane brónteks van dees pagina bekieke en euverkopiëre.", + "protectedinterface": "Dees pagina bevat teks veur berichte van de software op deze wiki en is beveilig om misbroek te veurkomme. Gebroek [https://translatewiki.net/ translatewiki.net], 't euverzèttingsprojek veur MediaWiki, veur euverzèttinge veur alle wiki's tou te veuge of te verangere.", "editinginterface": "'''Waarsjoewing:''' Doe bewirks 'n pagina die gebroek waert door de software. Bewirkinge op dees pagina beïnvlode de gebroekersinterface van jederein. Euverwaeg veur euverzèttinge [https://translatewiki.net/wiki/Main_Page?setlang=li translatewiki.net] te gebroeke, 't euverzèttingssprojek veur MediaWiki.", - "cascadeprotected": "Deze pagina kin neet bewirk waere, omdet zie is opgenome in de volgende {{PLURAL:$1|pagina|pagina's}} die beveilig {{PLURAL:$1|is|zeen}} mèt de kaskaad-optie:\n$2", + "translateinterface": "Veur euverzèttinge veur alle wiki's tou te veuge of te verangere kans se gebroek make van [https://translatewiki.net/ translatewiki.net], 't euverzèttingsprojek veur MediaWiki.", + "cascadeprotected": "Dees pagina kin neet bewirk waere, omdet zie is opgenome in de volgende {{PLURAL:$1|pagina|pagina's}} die beveilig {{PLURAL:$1|is|zeen}} mèt de kaskaad-optie:\n$2", "namespaceprotected": "Doe höbs gein rechte om pagina's in de naamruumde '''$1''' te bewirke.", "customcssprotected": "De kèns dees CSS-pagina neet bewirke ómdet die persuunlike insjtèllinge van 'ne angere gebroeker bevat.", "customjsprotected": "De kèns dees javapagina neet bewirke ómdet die persuunlike insjtèllinge van 'ne angere gebroeker bevat.", + "mycustomcssprotected": "Doe höbs gein rechte veur dees CSS-pagina te bewirke.", + "mycustomjsprotected": "Doe höbs gein rechte veur dees JavaScript-pagina te bewirke.", + "myprivateinfoprotected": "Doe höbs gein rechte veur dien privaatgegaeves te bewirke.", + "mypreferencesprotected": "Doe höbs gein rechte veur dien veurkäöre bie te stèlle.", "ns-specialprotected": "Pagina's in de naamruumde \"{{ns:special}}\" kinne neet bewirk waere.", "titleprotected": "'t aanmake van deze pagina is beveilig door [[User:$1|$1]].\nDe gegaeve ree is $2.", - "filereadonlyerror": "'t Waar neet meugelik óm 't bestandj \"$1\" aan te passe went de bestandjsrepositoir \"$2\" steit noe op allein-laeze.\n\nd'n Opgegaeve raej vanne sloetendje admin waar \"''$3''\".", + "filereadonlyerror": "'t Waar neet meugelik óm 't bestandj \"$1\" aan te passe went de bestandjsrepositoir \"$2\" steit noe op allein-laeze.\n\nd'n Opgegaeve raej vanne sloetendje admin waar: \"''$3''\".", "invalidtitle-knownnamespace": "Óngèljige titel mit naamruumdje \"$2\" en teks \"$3\"", "invalidtitle-unknownnamespace": "Óngèljige titel mit ónbekèndj naamruumdenómmer $1 en teks \"$2\"", "exception-nologin": "Neet aangemèld", - "exception-nologin-text": "Óm dees pagina te betrachte of dees hanjeling te kinne doon mós se aangemèldj zeen bie deze wiki.", + "exception-nologin-text": "Melj dich aan veur dees pagina te betrachte of dees hanjeling oet te veure.", + "exception-nologin-text-manual": "Doe mós $1 veur dees pagina te kónne betrachte of de hanjeling oet te veure.", "virus-badscanner": "Slechte configuratie: onbekenge virusscanner: ''$1''", "virus-scanfailed": "scanne is mislukt (code $1)", "virus-unknownscanner": "onbekeng antivirus:", - "logouttext": "'''De bis noe aafgemeld.'''\n\nDe kèns {{SITENAME}} noe anoniem (mit vermeljing van IP-adres) gebroeke, of [$1 opnuuj aanmelde] ónger dezelfde of 'ne angere naam.\nMäögelik waert nog 'n deil pagina's getuind esofs te nog aangemeld bis pès te de cache van diene browser laeg maaks.", + "logouttext": "De bis noe aafgemeld.\n\nMäögelik waert nog 'n deil pagina's getuind esofs te nog aangemeld bis pès te de cache van diene browser laeg maaks.", + "cannotlogoutnow-title": "Doe kans dich noe neet aafmelje", + "cannotlogoutnow-text": "Aafmelje is neet meugelik bie 't gebroek van $1.", "welcomeuser": "Wilkóm, $1!", + "welcomecreation-msg": "Diene gebroeker is aangemaak.\nWen gewunsj kans se dien [[Special:Preferences|veurkäöre]] veur {{SITENAME}} biestèlle.", "yourname": "Diene gebroekersnaam", "userlogin-yourname": "Gebroekersnaam", "userlogin-yourname-ph": "Veur diene gebroekersnaam in", + "createacct-another-username-ph": "Veur de gebroekersnaam in", "yourpassword": "Die wachwaord", "userlogin-yourpassword": "Wachwaord", "userlogin-yourpassword-ph": "Veur dien wachwaord in", @@ -373,9 +397,18 @@ "createacct-yourpasswordagain": "Bevestig wachwaord", "createacct-yourpasswordagain-ph": "Veur 't wachwaord oppernuuj in", "userlogin-remembermypassword": "Haaj mich aangemeldj", + "userlogin-signwithsecure": "Gebroek beveiligdje verbinjing", + "cannotlogin-title": "Kan zich neet aanmelje", + "cannotlogin-text": "Aanmelje is neet meugelik.", + "cannotloginnow-title": "Kan zich noe neet aanmelje", + "cannotloginnow-text": "Aanmelje is neet meugelik bie 't gebroek van $1.", + "cannotcreateaccount-title": "Kan gein gebroekers aanmake", + "cannotcreateaccount-text": "'t Drek aanmake van 'ne gebroeker is oetgezatj op deze wiki.", "yourdomainname": "Die domein", + "password-change-forbidden": "Doe kans die wachwaord neet verangere op deze wiki.", "externaldberror": "d'r Is 'n fout opgetraoje biej 't aanmelje biej de database of doe höbs gén toesjtömming diene externe gebroeker biej te wèrke.", "login": "Aanmèlde", + "login-security": "Kóntroleer dien identiteit", "nav-login-createaccount": "Aanmelje / registrere", "logout": "Aafmelde", "userlogout": "Aafmelde", @@ -385,96 +418,177 @@ "createaccount": "Nuuj gebroekersprofiel aanmake.", "userlogin-resetpassword-link": "Wachwaord kwiet?", "userlogin-helplink2": "Hölp mit 't aanmelje", + "userlogin-loggedin": "Doe bös al aangemeldj es {{GENDER:$1|$1}}.\nBroek 't formeleer hie-ónger veur dich es 'nen angere gebroek aan te melje.", + "userlogin-reauth": "Doe mós dich oppernuuj aanmelje óm te bevestige det se {{GENDER:$1|$1}} bös.", + "userlogin-createanother": "Maak 'nen angere gebroeker", + "createacct-emailrequired": "E-mailadres", "createacct-emailoptional": "E-mailadres (optioneel)", "createacct-email-ph": "Veur dien e-mailadres in", - "createaccountmail": "via de e-mail", + "createacct-another-email-ph": "Veur e-mailadres in", + "createaccountmail": "Gebroek e tiejelik willekäörig wachwaord en sjik 't nao 't opgegaove e-mailadres", + "createaccountmail-help": "Kan waere gebroek veur 't aanmake van 'ne gebroeker veur emes anges zónger 't wachwaord te lieëre.", + "createacct-realname": "Echte naam (optioneel)", + "createacct-reason": "Raeje", + "createacct-reason-ph": "Woveur se 'nen angere gebroeker aanmaaks", + "createacct-reason-help": "Getoeandj berich in 't logbestandj van aangemaakdje gebroekers", "createacct-submit": "Maak diene gebroeker aan", + "createacct-another-submit": "Maak 'ne gebroeker aan", + "createacct-continue-submit": "Gank door mit 't make van 'ne gebroeker", + "createacct-another-continue-submit": "Gank door mit 't make van 'ne gebroeker", "createacct-benefit-heading": "{{SITENAME}} wuuertj gemaak door luuj wie dich.", "createacct-benefit-body1": "{{PLURAL:$1|bewèrking|bewèrkinge}}", "createacct-benefit-body2": "{{PLURAL:$1|pazjena|pazjena's}}", "createacct-benefit-body3": "recènte {{PLURAL:$1|biedrager|biedragers}}", "badretype": "De ingeveurde wachwäörd versjille vanein.", + "usernameinprogress": "'t Aanmake van 'ne gebroeker mit daen naam is al ane geng.\nWach efkes estebleef.", "userexists": "De gebroekersnaam dae se höbs ingeveurd weurt al gebroek.\n\nKees estebleef 'ne angere naam.", "loginerror": "Inlogfout", + "createacct-error": "Fout bie 't aanmake van gebroeker", "createaccounterror": "Kós gebroeker neet aanmake: $1", "nocookiesnew": "De gebroeker is aangemaak mèr neet aangemeld. {{SITENAME}} gebroek cookies veur 't aanmelje van gebroekers. Sjakel die a.u.b. in en meld dao nao aan mèt diene nuje gebroekersnaam en wachwaord.", "nocookieslogin": "{{SITENAME}} gebroek cookies veur 't aanmelje van gebroekers. Doe accepteers gén cookies. Sjakel deze optie a.u.b. in en perbeer 't oppernuuj.", "nocookiesfornew": "De gebroeker is neet aangemaak ómdet de bron neet bevestig kos waere.\nZörg deveur dats te cookies höbs ingesjakeld, herlaaj dees pagina en perbeer 't obbenuuts.", + "createacct-loginerror": "De gebroeker is succesvol aangemaak gewaore, meh doe kós dich neet autematis aanmelje. Gank nao [[Special:UserLogin|handjmaesig aanmelje]].", "noname": "De mos 'n gebroekersnaam opgaeve.", - "loginsuccesstitle": "Aanmèlde geluk.", + "loginsuccesstitle": "Aangemeldj", "loginsuccess": "Doe bis noe es \"$1\" aangemeld bie {{SITENAME}}.", - "nosuchuser": "D'r besjteit geine gebroeker mit de naam \"$1\".\nDie seen huidlettegevullig\nControleer dien spelling, of gebroek ongersjtaond formuleer om 'n [[Special:CreateAccount|nuuj]] gebroekersprofiel aan te make.", + "nosuchuser": "D'r besjteit geine gebroeker mit de naam \"$1\".\nGebroekersname zeen huidlettergeveulig\nControleer dien spelling, [[Special:CreateAccount|maak 'ne nuuje gebroeker aan]].", "nosuchusershort": "De gebroeker \"$1\" besjteit neet. Konterleer de sjriefwieze.", "nouserspecified": "Doe deens 'ne gebroekersnaam op te gaeve.", "login-userblocked": "Deze gebroeker steit geblokkeerd. Aanmèlje is neet toegestange.", "wrongpassword": "'t Ingegaeve wachwaord is neet zjus. Perbeer 't obbenuujts.", "wrongpasswordempty": "'t Ingegaeve wachwoord waor laeg. Perbeer 't obbenuujts.", "passwordtooshort": "Dien wachwaord is te kort. 't Mót minstes oet {{PLURAL:$1|1 teike|$1 teikes}} besjtaon.", + "passwordtoolong": "Wachwäörd kónne neet lenger zeen es {{PLURAL:$1|ei teike| $1 teikes}}.", + "passwordtoopopular": "Dök-gekaoze wachwäörd kan me neet gebroeke. Kees 'n eigener wachwaord.", "password-name-match": "Die wachwaord mót anges zeen es diene gebroekersnaam.", "password-login-forbidden": "'t Gebroek van deze gebroekersnaam mit dit wachwoord is neet toegesjtange.", - "mailmypassword": "Sjik mich 'n nuuj wachwaord", + "mailmypassword": "Mail mich e nuuj wachwaord", "passwordremindertitle": "Nuuj tiedelik wachwaord van {{SITENAME}}", "passwordremindertext": "Emes (waorsjienlik dich zelf) haet vanaaf IP-adres $1 'n nuuj wachwoord veur {{SITENAME}} ($4) verzoch. 't Nuuj wachwoord veur gebroeker \"$2\" is \"$3\". Es dat dien bedoeling waor, mèl diech daan noe aan en kees 'n nuuj wachwoord. 't Tiedelik wachwoord verluip euver {{PLURAL:$5|$5 daag|$5 daag}}.\n\nEs emes anders dit verzeuk heet gedoon, of wens te diech dien wachwoord weer herinners en 't neet mie wèls wiezige, negeer dan dit berich en blief dien aud wachwoord gebroeke.", "noemail": "D'r is gein geregistreerd e-mailadres veur \"$1\".", "noemailcreate": "Doe mós e geljig e-mailadres ópgaeve.", "passwordsent": "D'r is 'n nuui wachwaord verzonde nao 't e-mailadres dat geregistreerd sjtit veur \"$1\".\nGelieve na ontvangst opnieuw aan te melden.", "blocked-mailpassword": "Dien IP-adres is geblokkeerd veur 't make van verangeringe. Om misbroek te veurkomme is 't neet meugelik om 'n nuuj wachwaord aan te vraoge.", - "eauthentsent": "Dao is 'ne bevèstigingse-mail nao 't genomineerd e-mailadres gesjik.\nIedat anger mail nao dat account versjik kan weure, mós te de insjtructies in daen e-mail volge,\nóm te bevèstige dat dit wirkelik dien account is.", + "eauthentsent": "Dao is 'ne bevèstigingse-mail nao 't opgegaeve e-mailadres gesjik.\nIedat anger mail nao dat account versjik kan weure, mós te de insjtructies in daen e-mail volge,\nóm te bevèstige dat dit wirkelik dien account is.", "throttled-mailpassword": "'n Wachwaordherinnering wörd gedurende de letste {{PLURAL:$1|1 oer|$1 oer}} verzönje. Om misbroek te veurkomme, wörd d'r sjlechs éin herinnering per {{PLURAL:$1|oer|$1 oer}} verzönje.", "mailerror": "Fout bie 't versjture van mail: $1", - "acct_creation_throttle_hit": "Bezeukers van deze wiki mit 'tzelfde IP-adres es doe höbbe de aafgeloupe daag {{PLURAL:$1|al 1 gebroeker|al $1 gebroekers}} geregistreerd, wat 't maximale aantal in deze periode is.\nDaorum kens doe vanaaf dit IP-adres op dit moment gein nuje gebroeker registrere.", + "acct_creation_throttle_hit": "Bezeukers van deze wiki mit 'tzelfde IP-adres es doe höbbe de aafgeloupe $2 daag {{PLURAL:$1|al 1 gebroeker|al $1 gebroekers}} geregistreerd, wat 't maximaal aantal in dees periode is.\nDaorum kens doe vanaaf dit IP-adres op dit moment gein nuuj gebroekers registrere.", "emailauthenticated": "Dien e-mailadres is op $2 um $3 bevestig.", - "emailnotauthenticated": "Dien e-mailadres is nog neet geauthentiseerd. De zals gein\ne-mail óntvange veur alle volgende toepassinge.", + "emailnotauthenticated": "Dien e-mailadres is nog neet geauthentiseerd. \nDe zals gein e-mail óntvange veur alle volgende toepassinge.", "noemailprefs": "Gaef 'n e-mailadres op om deze functies te gebroeke.", "emailconfirmlink": "Bevèstig dien e-mailadres", "invalidemailaddress": "'t E-mailadres is neet geaccepteerd omdet 't 'n ongeldige opmaak haet. Gaef a.u.b. 'n geldig e-mailadres op of laot 't veld laeg.", "cannotchangeemail": "E-mailadresse kinne neet waere verangerdj óp deze wiki.", "emaildisabled": "Dees site kin gein mails versjikke.", "accountcreated": "Gebroeker aangemaak", - "accountcreatedtext": "De gebroeker $1 is aangemaak.", + "accountcreatedtext": "De gebroeker [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|euverlègk]]) is aangemaak gewaore.", "createaccount-title": "Gebroekers aanmake veur {{SITENAME}}", "createaccount-text": "Emes genaamp \"$2\" haet 'ne gebroeker veur $2 aangemaak op {{SITENAME}}\n($4) mit 't wachwaord \"$3\". Meld dich aan en wiezig dien wachwaord.\n\nNegeer dit berich as deze gebroeker zonger dien medewete is aangemaak.", - "login-throttled": "Doe höbs te huifig geperbeerd aan te melje mèt 'n verkierd wachwaord.\nDoe mós effe wachte ierdets te 't obbenuuts kens perbere.", + "login-throttled": "Doe höbs te huifig geperbeerd aan te melje mèt 'n verkierd wachwaord.\nDoe mós effe $1 wachte ierdets te 't obbenuuts kens perbere.", "login-abort-generic": "Doe bös neet aangemèldj - Aafgebraoke", + "login-migrated-generic": "Diene gebroeker is van naam verangerdj en diene gebroekersnaam besteit nimmieë op deze wiki.", "loginlanguagelabel": "Taol: $1", "suspicious-userlogout": "Dien verzeuk óm aaf te melde is genegeerd, ómdet 't liek esof 't verzeuk is versjik door 'ne browser of cacheproxy dae kepot is.", + "createacct-another-realname-tip": "Echte naam is optineel.\nEs se dezen opgeufs, weurt deze naam gebroek t'r erkènning van die werk.", "pt-login": "Aanmèlde", "pt-login-button": "Aanmèlde", + "pt-login-continue-button": "Gank door mit aanmelje", "pt-createaccount": "Maak 'ne gebroeker aan", "pt-userlogout": "Aafmelde", "php-mail-error-unknown": "Dao haet ziech 'n ónbekénde fout veurgedaon in de mail()-functie van PHP", "user-mail-no-addy": "Perbeerdjes 'ne mail te sjikke zónger 'n adres", + "user-mail-no-body": "Verzóch 'nen e-mail te sjikke zónger inhaad of mit hieël min inhaad.", "changepassword": "Wachwaord verangere", - "resetpass_announce": "Doe bös aangemeld mèt 'ne tiejdelikke code dae per e-mail is toegezönje. Veur 'n nuuj wachwaord in om 't aanmelje te voltooie:", + "resetpass_announce": "Veur e nuuj wachwaord in veur 't aanmelje te voltoeaje.", "resetpass_header": "Wachwaord obbenuuts insjtèlle", "oldpassword": "Hujig wachwaord", "newpassword": "Nuuj wachwaord", "retypenew": "Veur 't nuuj wachwaord nogins in", "resetpass_submit": "Wachwaord instelle en aanmelje", - "changepassword-success": "Dien wachwaord is verangerd. Bezig mèt aanmelje...", + "changepassword-success": "Dien wachwaord is verangerd!", + "changepassword-throttled": "Doe höbs te huifig geperbeerd aan te melje.\nDoe mós effe $1 wachte ierdets te 't obbenuuts kens perbere.", + "botpasswords": "Botwachwäörd", + "botpasswords-summary": "Botwachwäörd zörge veur tougank tot de API via 'ne gebroeker zónger gebroek te make van aanmeljgegaeves van daen gebroeker. De gebroekersrechte die besjikbaar zint kónne aafwieke wen me is aangemeldj mit e botwachwaord.\n\nWen se neet wèts waat hie de gevölge van zeen den is 't henjiger dit neet te doon. Nemes huuert dich te vraoge e botwachwaord aan te make en dem aan hem door te gaeve.", + "botpasswords-disabled": "Botwachwäörd zint oetgezatj.", + "botpasswords-no-central-id": "Veur botwachwäörd te gebroeke mós se aangemeldj zeen mit 'ne gecentraliseerdje gebroeker.", + "botpasswords-existing": "Bestaonde botwachwäörd", + "botpasswords-createnew": "Maak e nuuj botwachwaord aan", + "botpasswords-editexisting": "Bewirk e bestaond botwachwaord", + "botpasswords-label-appid": "Botnaam:", + "botpasswords-label-create": "Maak aan", + "botpasswords-label-update": "Wirk bie", + "botpasswords-label-cancel": "Braek aaf", + "botpasswords-label-delete": "Sjaf eweg", + "botpasswords-label-resetpassword": "Stèl wachwaord oppernuuj in", + "botpasswords-label-grants": "Van toupassing zeende rechte:", + "botpasswords-help-grants": "Toestumminge gaeve tougank toet gebroekersrechte die se al höbs. 't Gaeve van 'n toustumming op dees plaats geuf dich geinen tougank toet gebroekersrechte die se anges neet zóds höbbe. Zuuch 't [[Special:ListGrants|euverzich van toestumminge]] veur mieë info.", + "botpasswords-label-grants-column": "Tougeweze", + "botpasswords-bad-appid": "De botnaam \"$1\" is neet geljig.", + "botpasswords-insert-failed": "'t Touveuge vanne botnaam \"$1\" is mislök. Is dae mesjiens al tougeveug?", + "botpasswords-update-failed": "'t Biewirke vanne botnaam \"$1\" is mislök. Is dae mesjiens eweggesjaf?", + "botpasswords-created-title": "Botwachwaord aangemaak", + "botpasswords-created-body": "'t Botwachwaord veure botnaam \"$1\" van gebroeker \"$2\" is gemaak.", + "botpasswords-updated-title": "Botwachwaord biegewirk", + "botpasswords-updated-body": "'t Botwachwaord veur de botnaam \"$1\" van gebroeker \"$2\" is biegewirk.", + "botpasswords-deleted-title": "Botwachwaord eweggesjaf", + "botpasswords-deleted-body": "'t Botwachwaord veure botnaam \"$1\" vanne gebroeker \"$2\" is eweggesjaf.", + "botpasswords-newpassword": "'t Nuuj wachwaord veur aan te melje mit $1 is $2. Bewaar dit goed voor toekomstig gebruik.
    (Veur aaj bots die vereisje det de aameljnaam 'tzelfde is es d'n eventuele gebroekersnaam, kan ouch $3 es gebroekersnaam en $4 es wachwaord waere gebroek.)", + "botpasswords-no-provider": "BotPasswordsSessionProvider is neet besjikbaar.", + "botpasswords-restriction-failed": "Botwachwaordbepirkinge verkómme aanmelje.", + "botpasswords-invalid-name": "De gebroekersnaam bevatj neet 't sjeijingsteike van 't botwachwaord (\"$1\").", + "botpasswords-not-exist": "Gebroekers \"$1\" haet gei botwachwaord genaamp \"$2\".", "resetpass_forbidden": "Wachwäörd kónne neet verangerd waere", + "resetpass_forbidden-reason": "Wachwäörd kónne neet verangerd waere: $1", "resetpass-no-info": "Doe moos aangemeld zien ierdets doe dees pagina gebroeke kens.", "resetpass-submit-loggedin": "Wachwaord wiezige", "resetpass-submit-cancel": "Aafbraeke", "resetpass-wrong-oldpass": "'t Hujig of tiedelik wachwaord is ongeljig.\nMeugelik höbs doe dien wachwaord al gewiezig of 'n nuuj tiedelik wachwaord aangevraog.", + "resetpass-recycled": "Veranger die wachwaord nao get anges es 't hujig wachwaord.", + "resetpass-temp-emailed": "Doe bös aangemeldj mit 'n tiejelike code die se per e-mail höbs gekrege.\nVeur 't aanmelje aaf te make mós se hie e nuuj wachwaord instèlle:", "resetpass-temp-password": "Tiedelik wachwaord:", + "resetpass-abort-generic": "De wachwaordverangering is aafgebraoke door 'n oetbreijing.", + "resetpass-expired": "Die wachwaord is verloupe. Stèl e nuuj wachwaord in veur dich aan te melje.", + "resetpass-expired-soft": "Die wachwaord is verloupe en mót oppernuuj waeren ingestèldj.\nKees noe e nuuj wachwaord of klik op \"{{int:authprovider-resetpass-skip-label}}\" veur dit spaejer te doon.", + "resetpass-validity-soft": "Die wachwaord is neet geljig: $1\n\nKees noe e nuuj wachwaord of klik op \"{{int:authprovider-resetpass-skip-label}}\" veur dit spaejer oppernuuj in te stèlle.", "passwordreset": "Wachwaord obbenuuts insjtèlle", + "passwordreset-text-one": "Völ dit formeleer in veur die wachwaord oppernuuj in te stèlle (doe kriegs e berich via de e-mail).", + "passwordreset-text-many": "{{PLURAL:$1|Völ ei van de gegaevesveljer in veur per e-mail e tiedelijk wachwaord te kriege.}}", "passwordreset-disabled": "'t Is hie neet meugelik óm die wachwaord óbbenuits in te sjtelle.", + "passwordreset-emaildisabled": "E-mailmeugelikheje staon oet op deze wiki.", "passwordreset-username": "Gebroekersnaam:", "passwordreset-domain": "Domein:", "passwordreset-email": "E-mailadres:", "passwordreset-emailtitle": "Gebroekersgegaeves óp {{SITENAME}}", - "passwordreset-emailtext-ip": "Emes, wersjienlik doe, vanaaf 't IP-adres $1, haet dien gebroekersgegaeves veur {{SITENAME}} ($4) ópgevraog.\nDe volgende {{PLURAL:$3|gebroeker is|gebroekers zint}} gekoppeld aan dit e-mailadres:\n\n$2\n\n{{PLURAL:$3|Dit tiedelik wachwaord vervilt|Dees tiedelike wachweurd vervallen}} euver {{PLURAL:$5|einen daag|$5 daag}}.\nMel dich aan en veranger 't wachwaord noe. Es se dit verzeuk neet zelf hes gedaon, of es se 't oorspronkelik wachwaord nog kins en 't neet anges wils, laot dit berich den en blief dien aad wachwaord gebroeke.", - "passwordreset-emailtext-user": "Gebroeker $1 op de site {{SITENAME}} haet dien gebroekersgegaeves veur {{SITENAME}} ($4) ópgevraog.\nDe volgende {{PLURAL:$3|gebroeker is|gebroekers zint}} gekoppeld aan dit e-mailadres:\n\n$2\n\n{{PLURAL:$3|Dit tiedelik wachwaord vervilt|Dees tiedelike wachweurd vervallen}} euver {{PLURAL:$5|einen daag|$5 daag}}.\nMel dich aan en veranger 't wachwaord noe. Es se dit verzeuk neet zelf hes gedaon, of es se 't oorspronkelik wachwaord nog kins en 't neet anges wils, laot dit berich den en blief dien aad wachwaord gebroeke.", + "passwordreset-emailtext-ip": "Emes, wersjienlik doe, vanaaf 't IP-adres $1, haet dien gebroekersgegaeves veur {{SITENAME}} ($4) ópgevraog veur 't wachwaord oppernuuj in te stèlle.\nDe volgende {{PLURAL:$3|gebroeker is|gebroekers zint}} gekoppeld aan dit e-mailadres:\n\n$2\n\n{{PLURAL:$3|Dit tiedelik wachwaord vervilt|Dees tiedelike wachweurd vervallen}} euver {{PLURAL:$5|einen daag|$5 daag}}.\nMel dich aan en veranger 't wachwaord noe. Es se dit verzeuk neet zelf hes gedaon, of es se 't oorspronkelik wachwaord nog kins en 't neet anges wils, laot dit berich den en blief dien aad wachwaord gebroeke.", + "passwordreset-emailtext-user": "Gebroeker $1 op de site {{SITENAME}} haet dien gebroekersgegaeves veur {{SITENAME}} ($4) ópgevraog veur die wachwaord oppernuuj in te stèlle.\nDe volgende {{PLURAL:$3|gebroeker is|gebroekers zint}} gekoppeld aan dit e-mailadres:\n\n$2\n\n{{PLURAL:$3|Dit tiedelik wachwaord vervilt|Dees tiedelike wachweurd vervallen}} euver {{PLURAL:$5|einen daag|$5 daag}}.\nMel dich aan en veranger 't wachwaord noe. Es se dit verzeuk neet zelf hes gedaon, of es se 't oorspronkelik wachwaord nog kins en 't neet anges wils, laot dit berich den en blief dien aad wachwaord gebroeke.", "passwordreset-emailelement": "Gebroekersnaam: \n$1\n\nTiedelik wachwaord: \n$2", - "passwordreset-emailsentemail": "d'r Is per mail 'n herinnering versjik.", - "changeemail": "Veranger dien e-mailadres", - "changeemail-header": "Veranger 't e-mailadres van miene gebroekersnaam", + "passwordreset-emailsentemail": "Es dit e-mailadres aan diene gebroeker is gekoppeldj, den weurt 'nen e-mail gesjik veur die wachwaord oppernuuj in te stèlle.", + "passwordreset-emailsentusername": "Wen 'n e-mailadres is geregistreerd veur daen gebroekersnaam, den weurt 'nen e-mail gesjik veur die wachwaord oppernuuj in te stèlle.", + "passwordreset-nocaller": "'nen Aanroper mót waeren opgegaove", + "passwordreset-nosuchcaller": "Aanroper besteit neet: $1", + "passwordreset-ignored": "'t Oppernuuj instèlle van 't wachwaord is neet aafgehanjeldj gewaore.\nMesjiens steit geine provider geconfigureerdj?", + "passwordreset-invalidemail": "Óngeljig e-mailadres", + "passwordreset-nodata": "Zowaal geine gebroekersnaam es 'n e-mailadres is opgegaove gewaore", + "changeemail": "Veranger of haol dien e-mailadres eweg", + "changeemail-header": "Völ dit formeleer in veur dien e-mailadres te verangere. Wens se 't e-mailadres wils óntkoppele van diene gebroeker, laot 't e-mailadres den laeg wens se 't formeleer opsleis.", "changeemail-no-info": "Doe moos aangemeld zien ierdets doe dees pagina gebroeke kens.", "changeemail-oldemail": "Hujig mailadres:", "changeemail-newemail": "Nuuj mailadres:", + "changeemail-newemail-help": "Laot dit veldj laeg wens se dien e-mailadres eweg wils haole. Nao 't ewegsjaffe kóns se nimmieë e vergaete wachwaord oppernuuj instèlle en kriegs se gein e-mails mieë van deze wiki.", "changeemail-none": "(gein)", + "changeemail-password": "Die wachwaord veur {{SITENAME}}:", "changeemail-submit": "Veranger e-mail", + "changeemail-throttled": "Doe höbs te huifig geperbeerd dit aan te melje.\nDoe mós effe $1 wachte ierdets te 't obbenuuts kens perbere.", + "changeemail-nochange": "Veur 'n anger e-mailadres in.", + "resettokens": "Stèl teikes oppernuuj in", + "resettokens-text": "Doe kans teikes oppernuuj instèlle die toegank gaeve tot bepaolde perseunlike gegaeves die aan diene gebroeker zeen verbónje.\n\nDoe zóds dit mótte doon wen se die per óngelök haes gedeild mit angere of wen ónbeveugde toegank tot diene gebroeker höbbe gehad.", + "resettokens-no-tokens": "'t Geuf gein teikes veur oppernuuj in te stèlle.", + "resettokens-tokens": "Teikes:", + "resettokens-token-label": "$1 (hujige waerd: $2)", + "resettokens-watchlist-token": "Teike veur webfeed van [[Special:Watchlist|dien volglies]] (Atom/RSS)", + "resettokens-done": "Teikes oppernuuj ingestèldj.", + "resettokens-resetbutton": "Stèl gesillekteerde teikes oppernuuj in", "bold_sample": "Vètten teks", "bold_tip": "Vetten teks", "italic_sample": "Sjuunsen tèks", @@ -492,25 +606,30 @@ "sig_tip": "Dien handjteikening mit datum en tied", "hr_tip": "Horizontaal lien (gebroek spaarzaam)", "summary": "Samevatting:", - "subject": "Ongerwerp/kop:", + "subject": "Óngerwirp:", "minoredit": "Dit is 'n klein verangering", "watchthis": "Volg dees pagina", - "savearticle": "Pagina opsjlaon", + "savearticle": "Sjlaon pagina op", + "savechanges": "Slaon verangeringe op", "publishpage": "Pagina publicere", "publishchanges": "Verangeringe publicere", "preview": "Naokieke", "showpreview": "Betrach dees bewirking", "showdiff": "Toen verangeringe", + "blankarticle": "Waorsjoewing: de pagina die se wils aanmake is laeg.\nWens se oppernuuj op \"$1\" kliks, wuuertj de pagina aangemaak zónger welchen inhawd den ouch.", "anoneditwarning": "Waorsjoewing: Doe bös neet aangemeldj.\nDien IP-adres wuuertj opgeslage wen se verangeringe maaks op dees pagina. Wens doe [$1 dich aanmeljs] of [$2 'ne gebroeker aanmaaks] versjiene dien bewirkinge ónger diene gebroekersnaam, naeve anges veurdeiler.", "anonpreviewwarning": "''Doe bös neet aangemeldj.''\n''Door dien bewèrking op te slaon wört dien IP-adres opgeslagen in de paginagesjiedenis.''", "missingsummary": "'''Herinnering:''' doe höbs gein samevatting opgegaeve veur dien bewirking. Es te weer op ''Pagina opslaon'' kliks weurt de bewirking zonger samevatting opgesjlage.", + "selfredirect": "Waorsjoewing: Doe höbs 'ne redirek gemaak nao dees pagina.\nMeugelik höbs se 'n verkieërdje bestumming veure redirek gebroek of bewirks se de verkieërdje pagina.\nDoor nans op \"$1\" te klikke wuuertj de redirek tonna gemaak.", "missingcommenttext": "Plaats dien opmèrking hiej onger, a.u.b.", "missingcommentheader": "'''Let op:''' Doe höbs gén ongerwerp/kop veur deze opmèrking opgegaeve. Esse oppernuuj op \"$1\" kliks, wörd dien verangering zonger ongerwerp/kop opgeslage.", - "summary-preview": "Naokieke samevatting:", - "subject-preview": "Naokieke ongerwerp/kop:", + "summary-preview": "Veurvertoeaning van de bewirkingssamevatting:", + "subject-preview": "Veurvertoeaning van 't óngerwirp:", + "previewerrortext": "'n Fout is opgetraoje tiejes 't waergaeve van dien verangeringe.", "blockedtitle": "Gebroeker is geblokkeerd", "blockedtext": "'''Dien gebroekersaccount of IP-adres is geblokkeerd.'''\n\nDe blokkade is oetgeveurd door $1. De opgegaeve raej is ''$2''.\n\n* Aanvang blokkade: $8\n* Ènj blokkade: $6\n* Bedoeld te blokkere: $7\n\nDe kèns contak opnumme mit $1 of 'ne angere [[{{MediaWiki:Grouppage-sysop}}|systeemwèrker]] óm de blokkade te besjpraeke.\nDe kèns gein gebroek make van de functie 'e-mail deze gebroeker', behauve es te 'n geldig e-mailadres höbs opgegaeve in dien [[Special:Preferences|veurkäöre]] en 't gebroek van deze fónksie neet geblokkeerd is.\nDien hujig IP-adres is $3 en 't nómmer van de blokkade is #$5. Vermeld beide gegaeves wens te örges op dees blokkade reageers.", "autoblockedtext": "Dien IP-adres is automatisch geblokkeerd omdet 't gebroek is door 'ne gebroeker, dae is geblokkeerd door $1.\nDe opgegaeve reje is:\n\n:''$2''\n\n* Aanvang blokkade: $8\n* Einde blokkade: $6\n* Blóksmeining: $7\n\nDoe kins deze blokkaasj bespraeke mèt $1 of 'ne angere [[{{MediaWiki:Grouppage-sysop}}|beheerder]]. Doe kins gén gebroek make van de functie 'e-mail deze gebroeker', tenzijse 'n geldig e-mailadres opgegaeve höbs in dien [[Special:Preferences|veurkeure]] en 't gebroek van deze functie neet is geblokkeerd.\n\nDien nömmer vanne blokkaasj is #$5 èn dien IP-adres is $3.\nVermeld det esse örges euver deze blokkaasj reageers.", + "systemblockedtext": "Diene gebroekersnaam of dien IP-adres is automatisch geblokkeerd gewaore door MediaWiki.\nDe opgegaove raeje is:\n\n:$2\n\n* Aanvank blokkaasj: $8\n* Ènj blokkaasj: $6\n* Gemèndj te blokkere: $7\n\nDien hujig IP-adres is $3.\n\nVermelj alle baovestäönde gegaeves in 'n aanvraog die se maaks.", "blockednoreason": "geine ree opgegaeve", "whitelistedittext": "Geer mót uch $1 óm pajzená te bewirke.", "confirmedittext": "De mós dien e-mailadres bevestige veurdats te kèns bewirke.\nVeur dien e-mailadres in en bevestig 'm bie [[Special:Preferences|dien veurkäöre]].", @@ -520,16 +639,17 @@ "loginreqlink": "aanmelde", "loginreqpagetext": "Doe moos diech $1 om anger pagina's te bekieke.", "accmailtitle": "Wachwaord versjtuurd.", - "accmailtext": "'n Willekäörig wachwaord veur [[User talk:$1|$1]] is nao $2 gesjtuurd.\n\n't Wachwaord veur deze nuje gebroeker kan gewiezig waere via de pagina ''[[Special:ChangePassword|Wachwaord wiezige]]'' nao 't aanmelje.", + "accmailtext": "'n Willekäörig wachwaord veur [[User talk:$1|$1]] is nao $2 gesjtuurd. 't Wachwaord verangerd waere via de pagina [[Special:ChangePassword|Wachwaord wiezige]] nao 't aanmelje.", "newarticle": "(Nuuj)", "newarticletext": "De höbs 'ne link gevolg nao 'n pagina die nog neet besjteit.\nType in de box hiejónger óm de pagina te beginne (zuug de [$1 helppagina] veur mie infermasie).\nEs te hie per óngelök terech bis gekómme, klik dan op de '''trök'''-knóp van diene browser.", - "anontalkpagetext": "----''Dit is de euverlèkpagina veur 'ne anonieme gebroeker dae nog gein account haet aangemaak of dae 't neet gebroek.\nDaoveur gebroeke v'r 't IP-adres óm de gebroeker te identificere.\nDet adres kan waere gedeild door mierdere gebroekers.\nEs te 'ne anonieme gebroeker bis en de höbs 't geveul dat 'r ónrelevante commentare aan dich gerich zeen, kèns te 't bèste [[Special:CreateAccount|'n account crëere]] of [[Special:UserLogin|inlogge]] óm toekomstige verwarring mit anger anoniem gebroekers te veurkomme.''", + "anontalkpagetext": "----\nDit is de euverlèkpagina veur 'ne anonieme gebroeker dae nog gein account haet aangemaak of dae 't neet gebroek.\nDaoveur gebroeke v'r 't IP-adres óm de gebroeker te identificere.\nDet adres kan waere gedeild door mierdere gebroekers.\nEs te 'ne anonieme gebroeker bis en de höbs 't geveul dat 'r ónrelevante commentare aan dich gerich zeen, kèns te 't bèste [[Special:CreateAccount|'n account crëere]] of [[Special:UserLogin|inlogge]] óm toekomstige verwarring mit anger anoniem gebroekers te veurkomme.", "noarticletext": "Dees pagina bevat gein teks.\nDe kèns [[Special:Search/{{PAGENAME}}|nao deze term zeuke]] in anger pagina's, [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} de logbeuk doorzeuke] of [{{fullurl:{{FULLPAGENAME}}|action=edit}} dees pagina aanmake].", "noarticletext-nopermission": "Dees pagina bevat gein teks.\nDe kans [[Special:Search/{{PAGENAME}}|nao dees term zeuke]] in anger pagina's of\n[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} de logbeuk doorzeuke], meh doe höbs gein vergónning dees pagina aan te make.", + "missing-revision": "De versie #$1 van de pagina \"{{FULLPAGENAME}}\" besteit neet.\n\nDit weurt meistal veroearzaak door 't volge van 'ne verajerde link nao 'n pagina die is eweggesjaf.\nMieër gegaeves zint meugelik te vinje in 't [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} ewegsjaffingslogbook].", "userpage-userdoesnotexist": "Doe bewirks 'n gebroekerspagina van 'ne gebroeker dae neet besjteit (gebroeker \"$1\"). Controlere ofs doe dees pagina waal wils aanmake/bewirke.", "userpage-userdoesnotexist-view": "Gebroeker \"$1\" is neet geregistreerd.", "blocked-notice-logextract": "Deze gebroeker is noe geblok.\nDe leste bloklogregel wuuertj hiejónger t'r raodpleging gegaeve:", - "clearyourcache": "Lèt op:''' Nao 't opsjlaon mós te diene browsercache wisse óm de verangeringe te zeen:\n* '''Firefox / Safari:''' hauw ''Shift'' ingedrök terwiels te op ''Vernuuj'' kliks of duujs op ''Ctrl-F5'' of ''Ctrl-R'' (''Command-R'' op 'ne Mac)\n* '''Google Chrome:''' duuj op ''Ctrl-Shift-R'' (''Command-Shift-R'' op 'ne Mac)\n* '''Internet Explorer:''' hauw ''Ctrl'' ingeduujt terwiels te op ''Vernuuj'' kliks of duujs op ''Ctrl-F5''\n* '''Konqueror: '''klik op ''Reload'' of duuj op ''F5''\n* '''Opera:''' laeg diene cache in ''Extra → Veurkäöre''", + "clearyourcache": "Lèt op: Nao 't opsjlaon mós te diene browsercache wisse óm de verangeringe te zeen:\n* Firefox / Safari: hauw Shift ingedrök terwiels te op Vernuuj kliks of duujs op Ctrl-F5 of Ctrl-R (⌘-R op 'ne Mac)\n* Google Chrome: duuj op Ctrl-Shift-R (⌘-Shift-R op 'ne Mac)\n* Internet Explorer: hauw Ctrl ingeduujt terwiels te op Vernuuj kliks of duujs op Ctrl-F5\n* Opera: gank nao Menu → Instèllinge (Opera → Veurkäöre op 'ne Mac) en den nao Privaatheid & beveiliging → Wis browsergegaeves → Tiejelike aafbiljinge en bestenj.", "usercssyoucanpreview": "'''Tip:''' Gebroek de knóp '{{int:showpreview}}' om dien nuuj CSS te teste veurdets te opsjleis.", "userjsyoucanpreview": "'''Tip:''' Gebroek de knóp '{{int:showpreview}}' om dien nuuj JS te teste veurdets te opsjleis.", "usercsspreview": "'''Dit is allein 'n veurvertuun van dien perseunlike css, deze is neet opgeslage!'''", @@ -540,10 +660,10 @@ "updated": "(Biegewèrk)", "note": "'''Opmirking:'''", "previewnote": "'''Lèt op: dit is 'n controlepagina; dien teks is nog neet opgesjlage!'''", - "continue-editing": "Gank dórch mit bewirke", + "continue-editing": "Gank nao 't bewirkingsvönster", "previewconflict": "Dees versie toent wie de tèks in 't bôvesjte vèld oet git zeen es e zouws opsjlaon.", - "session_fail_preview": "'''Sorry! Dien bewerking is neet verwerkt omdat sessiegegevens verlaore zeen gegaon.\nProbeer 't opnieuw. Als 't dan nog neet lukt, meldt dich dan aaf en weer aan.'''", - "session_fail_preview_html": "'''Sorry! Dien bewerking is neet verwerk omdat sessiegegevens verlaore zeen gegaon.'''\n\n''Omdat in deze wiki ruwe HTML is ingesjakeld, is 'n voorvertoning neet meugelik als bescherming taege aanvalle met JavaScript.''\n\n'''Als dit een legitieme bewerking is, probeer 't dan opnieuw. Als 't dan nog neet lukt, meldt dich dan aaf en weer aan.'''", + "session_fail_preview": "Dien bewirking is neet verwirk ómdet sessiegegaeves verlaore zeen gegange.\n\nMeugelikerwies bös se automatisch oetgelog. Stèl vas of se nag bös aangemeldj en perbeer 't oppernuuj.\nEs 't den nanneet lök, [[Special:UserLogout|log dich oet]] en den weer aan, en controleer of diene browser waal cookies tousteit van dees site.", + "session_fail_preview_html": "Dien bewirking is neet verwirk ómdet sessiegegaeves verlaore zeen gegange.\n\nÓmdet in {{SITENAME}} roew HTML is oetgeztte, is 'n veurbesjoewing neet meugelik es besjurming taenge aanvalle mit JavaScript.\n\nEs dit 'n legitiem bewirking is, perbeer 't den oppernuuj.\nEs 't den nanneet lök, [[Special:UserLogout|log dich oet]] en den weer aan, en controleer of diene browser waal cookies tousteit van dees site.", "token_suffix_mismatch": "'''Dien bewerking is geweigerd omdat dien client de laesteikes in 't bewerkingstoken onjuist haet behandeld. De bewerking is geweigerd om verminking van de paginateks te veurkomme. Dit gebeurt soms es d'r een webgebaseerde proxydienst wurt gebroek die foute bevat.'''", "edit_form_incomplete": "'''Sommige ongerdeile van 't bewerkingsformuleer höbbe de server neet bereik. Controleer of dien bewerkinge intak zien en perbeer 't obbenuits.'''", "editing": "Bewirkingspagina: $1", @@ -559,11 +679,12 @@ "yourdiff": "Verangeringe", "copyrightwarning": "Opgelèt: Alle biedrage aan {{SITENAME}} weure geach te zeen vriegegaeve ónger de $2 (zuug $1 veur details). Wens te neet wils dat dienen teks door angere bewirk en versjpreid weurt, kees dan neet veur 'Pagina opsjlaon'.
    Hiebie belaofs te ós ouch dats te dees teks zelf höbs gesjreve, of höbs euvergenómme oet 'n vriej, openbaar brón.
    '''GEBROEK GEI MATERIAAL DAT BESJIRMP WEURT DOOR AUTEURSRECH, BEHAUVE WENS TE DAO TOESJTÖMMING VEUR HÖBS!'''", "copyrightwarning2": "Mèrk op dat alle biedrages aan {{SITENAME}} kinne weure verangerd, aangepas of weggehaold door anger luuj. As te neet wils dat dienen tèks zoemer kint weure aangepas mós te 't hie neet plaatsje.
    \nDe beluifs ós ouch dats te dezen tèks zelf höbs gesjreve, of gekopieerd van 'n brón in 't publiek domein of get vergliekbaars (zuug $1 veur details).\n'''HIE GEIN AUTEURSRECHTELIK BESJIRMP WERK ZÓNGER TOESJTUMMING!'''", + "editpage-cannot-use-custom-model": "'t Inhawdsmodel van dees pagina kan neet waere verangerd.", "longpageerror": "Fout: De teks diese höbs toegevoegd haet is {{PLURAL:$1|'ne kilobyte|$1 kilobyte}} groet, wat groeter is es 't maximum van {{PLURAL:$2|'ne kilobyte|$2 kilobyte}}. Opslaon is neet meugelik.'''", - "readonlywarning": "WAARSJUWING: De database is vasgezèt veur ongerhoud, dus op 't mement kins e dien verangeringe neet opsjlaon. De kins dien tèks 't biste opsjlaon in 'n tèksbesjtand om 't later hie nog es te prebere.\n\nt Is geslaote waenger: $1", + "readonlywarning": "WAARSJUWING: De database is vasgezat veur óngerhawd, dus op 't mement kins se dien verangeringe neet opsjlaon.\n\nDe kins dien tèks 't biste opsjlaon in 'n tèksbesjtand om 't later hie nog es te prebere.\n\nt Is geslaote door de systeembehieërder waenger: $1", "protectedpagewarning": "'''WAARSJOEWING: Dees pagina is besjirmp zoedet ze allein door gebroekers mit administratorrechte kint waere verangerd.'''\nDe lèste logbookregel sjteit hiejónger:", "semiprotectedpagewarning": "'''Lèt op:''' Dees pagina is beveilig en kin allein door geregistreerde gebroekers bewirk waere.\nDe lèste logbookregel steit hiejónger:", - "cascadeprotectedwarning": "'''Waarschuwing:''' Deze pagina is beveilig en kin allein door beheerders bewerk waere, omdat deze is opgenaome in de volgende {{PLURAL:$1|pagina|pagina's}} {{PLURAL:$1|dae|die}} beveilig {{PLURAL:$1|is|zeen}} met de cascade-optie:", + "cascadeprotectedwarning": "Waarschuwing: Dees pagina is beveilig en kin allein door beheerders mit [[Special:ListGroupRights|specefieke rechte]] bewirk waere, omdet dees is opgenaome in de volgende {{PLURAL:$1|pagina|pagina's}} {{PLURAL:$1|dae|die}} beveilig {{PLURAL:$1|is|zeen}} mit de cascade-optie:", "titleprotectedwarning": "'''WAORSJUWING: Deze pagina is beveilig zodet allein inkele gebroekers 'm kinne aanmake. De beneuds [[Special:ListGroupRights|speciale rechte]].'''\nDe lèste logbookregel vólg hier:", "templatesused": "Op dees pagina {{PLURAL:$1|gebroek sjabloon|gebroekde sjablone}}:", "templatesusedpreview": "{{PLURAL:$1|Sjabloon|Sjablone}} gebroek in dees veurvertuining:", @@ -578,22 +699,38 @@ "permissionserrors": "Foute inne rèchter", "permissionserrorstext": "Doe höbs gein rèchter om det te daon om de volgende {{PLURAL:$1|reje|rejer}}:", "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": "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.", "edit-conflict": "Bewirkingsconflik.", "edit-no-change": "Dien bewirking is genegeerd, ómdet d'r gein verangering in de teks is gemaak.", + "postedit-confirmation-created": "De pagina is aangemaak gewaore.", + "postedit-confirmation-restored": "De pagina is herstèldj gewaore.", "postedit-confirmation-saved": "Dien bewirking is opgeslage gewaore.", "edit-already-exists": "De pagina is neet aangemaak.\nZie besjteit al.", "defaultmessagetext": "Obligaten teks", - "editwarning-warning": "Es se dees pagina verleets verluus se meugelik wieziginge die se haes gemaak.\nEs se bös aangemeld, kins se dees waorsjoewing oetzètten in 't bewerkingstabblaad in dien veurkäöre.", + "content-failed-to-parse": "'t Waas neet meugelik d'n inhawd van 't MIME-typ $2 veur 't model $1 te verwirke: $3.", + "invalid-content-data": "Óngeljige inhawdsgegaeves", + "content-not-allowed-here": "Inhawd \"$1\" is neet tougestange op pagina [[$2]].", + "editwarning-warning": "Es se dees pagina verleets verluus se meugelik verangeringe die se haes gemaak.\nEs se bös aangemeld, kins se dees waorsjoewing oetzètten in 't tabblaad \"{{int:prefs-editing}}\" in dien veurkäöre.", + "editpage-invalidcontentmodel-title": "Inhaadsmodel wuuertj neet óngersteund", + "editpage-invalidcontentmodel-text": "'t Inhawdsmodel \"$1\" weurt neet óngersteund", + "editpage-notsupportedcontentformat-title": "Inhawdsformaat neet óngersteund", + "editpage-notsupportedcontentformat-text": "'t Inhawdstype $1 weurt neet óngersteund door 't inhawdsmodel $2.", "content-model-wikitext": "wikiteks", "content-model-text": "teks zónger opmaak", "content-model-javascript": "JavaScript", "content-json-empty-object": "Laeg objek", "content-json-empty-array": "Laege rits", + "deprecated-self-close-category": "Pagina's mit óngeljige zelfsloetende HTML-tags", + "deprecated-self-close-category-desc": "De pagina bevat óngeljige zelf-aafgeslaote HTML-tags, wie <b/> of <span/>. 't Gedraag van dees tags zal binnekort waere verangerd zodet dit euvereinkumpt miet de HTML5-specificatie, dus 't gebroek hievan is verajerd en weurt aafgeraoje.", + "duplicate-args-warning": "Waorsjoewing: [[:$1]] reup [[:$2]] aan mit mieër es ein waerd veur de paramaeter \"$3\". Allein de litste waerd weurt gebroek.", + "duplicate-args-category": "Pagina's mit dóbbel sjebloonparamaeters", + "duplicate-args-category-desc": "De pagina bevat aanreup van sjeblone worin 'tzelfde argument versjillende kieëre weurt gebroek, wie {{foo|bar=1|bar=2}} of {{foo|bar|1=baz}}.", "expensive-parserfunction-warning": "'''Waarschuwing:''' dees pagina gebroek te väöl kosbare parserfuncties.\n\nNoe {{PLURAL:$1|is|zeen}} 't d'r $1, terwiel 't d'r minder es $2 {{PLURAL:$2|mótte|mótte}} zeen.", "expensive-parserfunction-category": "Pagina's die te väöl kosbare parserfuncties gebroeke", "post-expand-template-inclusion-warning": "Waorsjuwing: de maximaal transclusiegruudje veur sjablone is euversjri-jje.\nSommige sjablone waere neet getranscludeerd.", @@ -601,19 +738,27 @@ "post-expand-template-argument-warning": "Waarsjoewing: dees pagina bevat winnigstes eine sjabloonparameter mit 'n te groete transclusiegruutde.\nDees parameters zeen eweggelaote.", "post-expand-template-argument-category": "Pagina's die missende sjabloonillemènte bevatte", "parser-template-loop-warning": "D'r is 'ne krinkloup in sjablone geconstateerd: [[$1]]", + "template-loop-category": "Pagina's mit sjeblone die zichzelf insloete", + "template-loop-category-desc": "De pagina bevat e sjebloon det zichzelf insluut, wie e sjebloon det zichzelf recursief aanreup.", "parser-template-recursion-depth-warning": "De recursiedeepte veur sjablone is euversjrede ($1)", "language-converter-depth-warning": "De deepdjelimiet veure spraokómzètter is euversjreje ($1)", "node-count-exceeded-category": "Pagina's wo 't maximaal aantal nodes te väöl is", - "node-count-exceeded-warning": "Oppe paasj is 't maximaal aantal nodes te väöl", + "node-count-exceeded-category-desc": "De pagina kump euver 't maximaal aantal knouppuntje haer.", + "node-count-exceeded-warning": "Oppe paasj is 't maximaal aantal nodes behaoltj", "expansion-depth-exceeded-category": "Pagina's wo de expansiedeepdje te väöl is", + "expansion-depth-exceeded-category-desc": "De pagina geit euver de maximaal oetbreijingsdeepdje.", "expansion-depth-exceeded-warning": "De paasj haet te väöl sjablone", "parser-unstrip-loop-warning": "Unstriplus gevónje", "parser-unstrip-recursion-limit": "Unstriprecursielimiet te väöl ($1)", + "converter-manual-rule-error": "'n Fout is óntdèk gewaore in 'ne handjmaesig tougeveudje spraokómzèttingsregel", "undo-success": "Hiej onger stuit de teks wo in de verangering ongedaon gemaak is. Controleer veur 't opslaon of 't resultaot gewins is.", "undo-failure": "De verangering kòs neet ongedaon gemaak waere waeges angere striedige verangeringe.", "undo-norev": "De bewerking kon neet ongedaan gemaak waere, omdat die neet besteet of is verwijderd.", + "undo-nochange": "De bewirking liek al óngedaon te zeen gemaak.", "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", @@ -630,7 +775,7 @@ "page_last": "lèste", "histlegend": "Verklaoring aafkortinge: (wijz) = versjil mit actueile versie, (vörrige) = versjil mit vörrige versie, K = kleine verangering", "history-fieldset-title": "Zeuk nao versies", - "history-show-deleted": "Inkel eweggesjaf", + "history-show-deleted": "Inkel eweggesjafdje versie", "histfirst": "aadste", "histlast": "nuujste", "historysize": "({{PLURAL:$1|1 byte|$1 bytes}})", @@ -639,11 +784,13 @@ "history-feed-description": "Bewerkingseuverzich veur dees pagina op de wiki", "history-feed-item-nocomment": "$1 op $2", "history-feed-empty": "De gevraogde pagina besjteit neet.\nWellich is ze gewis of verplaats.\n[[Special:Search|Doorzeuk de wiki]] veur relevante pagina's.", + "history-edit-tags": "Bewirk labels van oetgekaoze versies", "rev-deleted-comment": "(bewirkingssamevatting eweggesjaf)", "rev-deleted-user": "(gebroeker weggehaold)", - "rev-deleted-event": "(actie weggehaold)", + "rev-deleted-event": "(logbookregel weggehaold)", "rev-deleted-user-contribs": "[gebroeker of IP gewösj - bewèrking verbórge in biedraag]", "rev-deleted-text-permission": "Dees bewerking is '''gewusj'''.\nDao kónne details aanwezig zeen in 't [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} wusjlogbook].", + "rev-suppressed-text-permission": "Dees paginaversie is óngerdrók.\nAchtergrönj zeen te vinjen in 't [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} logbook ven óngerdrökdje versies].", "rev-deleted-text-unhide": "Dees versie van de pagina is '''eweggesjaf'''.\nDetails zien meugelik te vinde in 't [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} wislogbook].\nEs beheerder kins se [$1 dees versie bekieke] es se wils.", "rev-suppressed-text-unhide": "Dees paginaversie is '''óngerdrök'''.\nAchtergrönj zeen meugelik te vinje in 't [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} logbook ven óngerdrökdje versies].\nEs behierder kèns toe [$1 de versjille bekieken] es se wils.", "rev-deleted-text-view": "Dees bewèrking is '''gewösj'''.\nEs beheerder kèns te deze zeen;\ndao kónne details aanwezig zeen in 't [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} wusjlogbook].", @@ -658,30 +805,36 @@ "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": "Verberg de bewerkte teks", + "revdelete-hide-text": "Versieteks", "revdelete-hide-image": "Verberg bestandjsinhoud", - "revdelete-hide-name": "Actie en doel verberge", - "revdelete-hide-comment": "De bewerkingssamevatting verberge", - "revdelete-hide-user": "Verberg gebroekersnaam/IP van de gebroeker", + "revdelete-hide-name": "Verstaek hanjeling en doel", + "revdelete-hide-comment": "Bewirkingssamevatting", + "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": "Jao", - "revdelete-radio-unset": "Nein", + "revdelete-radio-set": "Verstaoke", + "revdelete-radio-unset": "Zichbaar", "revdelete-suppress": "Ongerdruk gegaeves veur zowaal admins es angere", "revdelete-unsuppress": "Verwijder beperkinge op truuk gezatte wieziginge", "revdelete-log": "Reeje:", "revdelete-submit": "Pas toe op de geselecteerde {{PLURAL:$1|bewèrking|bewèrkinger}}", - "revdelete-success": "'''Wieziging zichbaarheid succesvol ingesteld.'''", + "revdelete-success": "Zichbaarheid van verangering biegewirk.", "revdelete-failure": "'''De zichbaarheid veur de versie kos neet ingesteld waere.'''\n$1", - "logdelete-success": "'''Zichbaarheid van de gebeurtenis succesvol ingesteld.'''", + "logdelete-success": "Zichbaarheid van gebäörtenis is ingestèldj gewaore.", "logdelete-failure": "'''De zichbaarheid van de logbookregel kos neet ingesteldj waere:'''\n$1", "revdel-restore": "Zichbaarheid verangere", "pagehist": "Paginagesjiedenis", @@ -693,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", @@ -710,8 +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.", @@ -731,7 +892,9 @@ "compareselectedversions": "Vergeliek geselecteerde versies", "showhideselectedversions": "Tuin/versjtaek geselecteerde versies", "editundo": "maak óngedaon", + "diff-empty": "(gei versjil)", "diff-multi-sameuser": "({{PLURAL:$1|Ein tösseligkendje versie|$1 tösseligkendje versies}} door dezelfdje gebroeker neet getoeandj)", + "diff-multi-otherusers": "({{PLURAL:$1|Ein tösseligkendje versie|$1 tösseligkendje versies}} door {{PLURAL:$2|einen angere gebroeker|$2 gebroekers}} neet getuind)", "diff-multi-manyusers": "($1 tösseligkende versies door mier es $2 gebroekers waere neet waergaeve)", "searchresults": "Zeukresultate", "searchresults-title": "Zeukresultate veur \"$1\"", @@ -740,6 +903,8 @@ "notextmatches": "Geen artikel gevonden met opgegeven zoekterm", "prevn": "veurige {{PLURAL:$1|$1}}", "nextn": "volgende {{PLURAL:$1|$1}}", + "prev-page": "veurige pazjena", + "next-page": "volgende pazjena", "prevn-title": "Vörge {{PLURAL:$1|resultaat|$1 resultate}}", "nextn-title": "Volgende {{PLURAL:$1|resultaat|$1 resultate}}", "shown-title": "$1 {{PLURAL:$1|resultaat|resultate}} per pagina weergaeve", @@ -758,27 +923,35 @@ "search-result-category-size": "{{PLURAL:$1|1 categorielid|$1 categorielede}} ({{PLURAL:$2|1 ongercategorie|$2 ongercategorieë}}, {{PLURAL:$3|1 bestandj|$3 bestenj}})", "search-redirect": "(redirek vanaaf $1)", "search-section": "(subkop $1)", + "search-category": "(categorie $1)", "search-file-match": "(kump euverein mit de bestandjsinhawd)", "search-suggest": "Meins te sóms: $1", - "search-interwiki-caption": "Zösterprojecte", - "search-interwiki-default": "$1 resultate:", + "search-rewritten": "De rizzeltaote veur $1 waere waergaeve. Zeuk inplaats nao $2.", + "search-interwiki-caption": "Rizzeltaote van zösterprojecte", + "search-interwiki-default": "Rizzeltaote van $1:", "search-interwiki-more": "(meer)", + "search-interwiki-more-results": "mieë rizzeltaote", "search-relatedarticle": "Gerelateerd", "searchrelated": "gerelateerd", "searchall": "alle", "showingresults": "Hieonger staon de $1 {{PLURAL:$1|resultaat|resultaat}}, vanaaf #$2.", "search-showingresults": "{{PLURAL:$4|Rizzeltaot $1 van $2|Rizzeltaote $1 - $2 van $3}}", "search-nonefound": "D'r zien gein resultate veur diene zeukopdrach.", + "search-nonefound-thiswiki": "'t Goof gein rizzeltaote veur dien zeukopdrach op dees site.", "powersearch-legend": "Oetgebreid zeuke", "powersearch-ns": "Zeuke in naamruumdes:", "powersearch-togglelabel": "Conterleer:", "powersearch-toggleall": "Alle", "powersearch-togglenone": "Gein", + "powersearch-remember": "Ónthawt selectie veur toukumstige zeukopdrachte", "search-external": "Extern zeuke", "searchdisabled": "Zeuke op {{SITENAME}} is oetgesjakeld vanweige gebrek aan servercapaciteit.\nZoelang as de servers nog neet sjterk genog zunt kins e zeuke bie Google.\nMèrk op dat hun indexe van {{SITENAME}} content e bietje gedatierd kint zien.", + "search-error": "'n Fout is opgetraoje tiedes 't zeuke: $1", + "search-warning": "'n Waorsjoewing is opgetraoje tiedes 't zeuke: $1", "preferences": "Veurkäöre", "mypreferences": "Veurkäöre", "prefs-edits": "Aantal bewèrkinge:", + "prefsnologintext2": "Doe mós aanmelje veur dien veurkäöre in te stèlle.", "prefs-skin": "{{SITENAME}}-uterlik", "skin-preview": "Veurbesjouwing", "datedefault": "Gein veurkäör", @@ -787,6 +960,11 @@ "prefs-personal": "Gebroekersinfo", "prefs-rc": "Recènte verangeringe en weergaaf van sjtumpkes", "prefs-watchlist": "Volglies", + "prefs-editwatchlist": "Bewirk volglies", + "prefs-editwatchlist-label": "Bewirk items op dien volglies:", + "prefs-editwatchlist-edit": "Betrach en haol items op dien volglies eweg", + "prefs-editwatchlist-raw": "Bewirk roew volglies", + "prefs-editwatchlist-clear": "Maak dien volglies laeg", "prefs-watchlist-days": "Te tuine daag in de volglies:", "prefs-watchlist-days-max": "Maximaal $1 {{PLURAL:$1|daag|daag}}", "prefs-watchlist-edits": "Maximaal aantal bewirkinge in de oetgebreide volglies:", @@ -794,15 +972,16 @@ "prefs-watchlist-token": "Volgliessläötel:", "prefs-misc": "Anger insjtèllinge", "prefs-resetpass": "Wachwaord wiezige", - "prefs-changeemail": "Veranger e-mail", + "prefs-changeemail": "Veranger of haol dien e-mailadres eweg", "prefs-setemail": "Stel 'n e-mailadres in", "prefs-email": "E-mailopsjes", "prefs-rendering": "Oeterlik", "saveprefs": "Veurkäöre opsjlaon", - "restoreprefs": "Terug nao standaardinstellinge", + "restoreprefs": "Herstèl dien veurkäöre (veur alle instèllinge)", "prefs-editing": "Aafmeitinge tèksveld", "searchresultshead": "Insjtèllinge veur zeukresultate", - "stub-threshold": "Drempel veur markering begske:", + "stub-threshold": "Dörpel veur markering es sjtumpke ($1):", + "stub-threshold-sample-link": "veurbild", "stub-threshold-disabled": "Oetgezatj", "recentchangesdays": "Aantal daag te tuine in de recènte verangeringe:", "recentchangesdays-max": "(maximaal $1 {{PLURAL:$1|daag|daag}})", @@ -826,7 +1005,7 @@ "timezoneregion-indian": "Indische Oceaan", "timezoneregion-pacific": "Stille Oceaan", "allowemail": "E-mail van anger gebroekers toesjtaon", - "prefs-searchoptions": "Zeukinstellinge", + "prefs-searchoptions": "Zeuke", "prefs-namespaces": "Naamruimte", "default": "sjtandaard", "prefs-files": "Bestenj", @@ -836,8 +1015,9 @@ "prefs-reset-intro": "Gebroek dees functie om dien veurkäöre te herstelle nao de standaardinstellinge.\nDees hanjeling kin neet ongedaon gemaak waere.", "prefs-emailconfirm-label": "E-mailbevestiging:", "youremail": "Dien e-mailadres", - "username": "Gebroekersnaam:", - "prefs-memberingroups": "Lid van {{PLURAL:$1|gróp|gróppe}}:", + "username": "{{GENDER:$1|Gebroekersnaam}}:", + "prefs-memberingroups": "{{GENDER:$2|Lid}} van {{PLURAL:$1|gróp|gróppe}}:", + "group-membership-link-with-expiry": "$1 (toet $2)", "prefs-registration": "Registratiedatum:", "yourrealname": "Dienen echte naam*", "yourlanguage": "Taal van de gebroekersinterface", @@ -847,13 +1027,13 @@ "prefs-help-signature": "Reacties op de euverlèkpagina's waere meistal ongerteikend mit \"~~~~\".\nDe tildes waeren omgezat in dien handjteikening en nen datum en tied van de bewirking.", "badsig": "Óngeljige roew handjteikening; kiek de HTML-tags nao.", "badsiglength": "De handjteikening is te lank.\nZie maag neet mie es $1 {{PLURAL:$1|karakter|karakters}} bevatte.", - "yourgender": "Geslach:", - "gender-unknown": "Neet aangegaeve", - "gender-male": "Miensj", - "gender-female": "Vrów", - "prefs-help-gender": "Optioneel: dit wört gebroek om gebroekers correk aan te spraeke in de software.\nDeze informatie is zichbaar veur angere gebroekers.", + "yourgender": "Waat is dien geslech?", + "gender-unknown": "De software gebroek de standerdwäörd óngeach 't geslech", + "gender-male": "Hae bewirk de wiki", + "gender-female": "Hèt bewirk de wiki", + "prefs-help-gender": "Deze veurkäör instèlle is optioneel.\n\nDe sofware gebroek dees waerd veur dich aan te spraeke en dich te vermelje aan anger gebroekers middels 't juuste grammatikaal geslech.\n\nDees infermasie is aopenbaar en zichbaar veur anger gebroekers.", "email": "E-mail", - "prefs-help-realname": "* Echte naam (opsjeneel): esse deze opgufs kin deze naam gebroek waere om dich erkinning te gaeve veur dien wèrk.", + "prefs-help-realname": "Echte naam is optioneel.\nEs se dezen opgeufs, kan deze naam waere gebroek veur dich erkènning te gaeve veur die werk.", "prefs-help-email": "E-mailadres is optioneel, mer maak 't muuëgelik óm dich e wachwaord te sjikke es s'n 't vergaete höbs.", "prefs-help-email-others": "Doe kans ouch angere in staat stelle per-email kóntak mit uch op te numme via 'n verwiezing op eur gebroekers- en euverlègkpazjena zónger det se diene identiteit luuëts weite.", "prefs-help-email-required": "Hiej veur is 'n e-mailadres neudig.", @@ -862,29 +1042,47 @@ "prefs-signature": "Handjteikening", "prefs-dateformat": "Datumópmaak:", "prefs-timeoffset": "Tiedsversjèl", - "prefs-advancedediting": "Wiejer instèllinger", + "prefs-advancedediting": "Algemein instèllinge", + "prefs-editor": "Bewirker", + "prefs-preview": "Veurbesjouwing", "prefs-advancedrc": "Wiejer instèllinger", "prefs-advancedrendering": "Wiejer instèllinger", "prefs-advancedsearchoptions": "Wiejer instèllinger", "prefs-advancedwatchlist": "Wiejer instèllinger", "prefs-displayrc": "Toeaningsinstèllinger", "prefs-displaywatchlist": "Toeaningsinstèllinger", + "prefs-tokenwatchlist": "Teike", "prefs-diffs": "Vers", - "userrights": "Gebroekersrechtebeheer", - "userrights-lookup-user": "Beheer gebroekersgróppe", + "prefs-help-prefershttps": "Deze veurkäör weurt tougepas bie de volgendje aanmeljing", + "prefswarning-warning": "Doe höbs dees verangeringe gemaak in dien veurkäöre die nag neet zint opgeslage. Wen se de pagina verleuts zónger op \"$1\" te klikke waere dien veurkäöre neet biegewirk.", + "prefs-tabs-navigation-hint": "Hölp: doe kans de pielkesknuup nao links en rechs broeke veur te navigere tösse de tabblajer inne lies.", + "userrights": "Gebroekersrechte", + "userrights-lookup-user": "Selecteer 'ne gebroeker", "userrights-user-editname": "Veur 'ne gebroekersnaam in:", - "editusergroup": "Bewirk gebroekersgróppe", - "editinguser": "Bezig mit 't bewèrke van de gebroekersrechte van gebroeker '''[[User:$1|$1]]''' $2", - "userrights-editusergroup": "Bewirk gebroekersgróppe", - "saveusergroups": "Gebroekersgróppe opsjlaon", + "editusergroup": "Laaj gebroekersgruup", + "editinguser": "Bezig mit 't verangere van de gebroekersrechte van {{GENDER:$1|gebroeker}} '''[[User:$1|$1]]''' $2", + "viewinguserrights": "Gebroekersrechte betrachte van {{GENDER:$1|gebroeker}} [[User:$1|$1]] $2", + "userrights-editusergroup": "Bewirk {{GENDER:$1|gebroekersgruup}}", + "userrights-viewusergroup": "Toean {{GENDER:$1|gebroekersgruup}}", + "saveusergroups": "Slaon {{GENDER:$1|gebroekersgruup}} op", "userrights-groupsmember": "Leed van:", "userrights-groupsmember-auto": "Impliciet lid van:", - "userrights-groups-help": "De kèns de gróppe verangere woe deze gebroeker lid van is.\n* 'n Aangekruuts vinkvekske beteikent det de gebroeker lid is van de gróp.\n* 'n Neet aangekruuts vinkvekske beteikent det de gebroeker neet lid is van de gróp.\n* \"*\" Beteikent dets te 'ne gebroeker neet oet 'ne gróp eweg kèns haole naodets te die daobie höbs gedoon, of angersóm.", + "userrights-groups-help": "De kèns de gróppe verangere woe deze gebroeker lid van is.\n* 'n Aangekruuts vinkvekske beteikent det de gebroeker lid is van de gróp.\n* 'n Neet aangekruuts vinkvekske beteikent det de gebroeker neet lid is van de gróp.\n* \"*\" beteikent dets te 'ne gebroeker neet oet 'ne gróp eweg kèns haole naodets te die daobie höbs gedoon, of angersóm.\n* \"#\" beteikebt dets te dit grópslidmaotsjap allein kans verlinge. De kans 't neet verkorte.", "userrights-reason": "Reeje:", "userrights-no-interwiki": "Doe höbs gein rechte om gebroekersrechte op anger wiki's te wiezige.", "userrights-nodatabase": "Database $1 besteit neet of is gein plaatselike database.", "userrights-changeable-col": "Gróppe dies te kèns behere", "userrights-unchangeable-col": "Gróppe dies te neet kèns behere", + "userrights-expiry-current": "Verlöp $1", + "userrights-expiry-none": "Verlöp neet", + "userrights-expiry": "Verlöp:", + "userrights-expiry-existing": "Bestaonde verloupdatum: $2 $3", + "userrights-expiry-othertime": "Angere doer:", + "userrights-expiry-options": "1 daag:1 day,1 waek:1 week,1 maondj:1 month,3 maondj:3 months,6 maondj:6 months,1 jaor:1 year", + "userrights-invalid-expiry": "De verloiptied veure groep \"$1\" is óngeljig.", + "userrights-expiry-in-past": "De verlouptied veure groep \"$1\" is al gewaes.", + "userrights-cannot-shorten-expiry": "Doe kans de verlouptied van 't groepslidmaotsjap van groep \"$1\" neet verkorte. Allein gebroekers mit 't rech óm dees groep tou te veuge of eweg te sjaffe kónne de verlouptied verkorte.", + "userrights-conflict": "Kónflik mit gebroekersrechteverangering! Controleer en bevestig dien verangeringe.", "group": "Gróp:", "group-user": "Gebroekers", "group-autoconfirmed": "Geregistreerde gebroekers", @@ -904,16 +1102,18 @@ "grouppage-bot": "{{ns:project}}:Bots", "grouppage-sysop": "{{ns:project}}:Beheerders", "grouppage-bureaucrat": "{{ns:project}}:Bureaucrate", - "grouppage-suppress": "{{ns:project}}:Euverzich", + "grouppage-suppress": "{{ns:project}}:Toezich", "right-read": "Pagina's bekieke", "right-edit": "Pagina's bewerke", "right-createpage": "Pagina's aanmake", "right-createtalk": "Euverlegpagina's aanmake", "right-createaccount": "Nuwe gebroekers aanmake", + "right-autocreateaccount": "Melj dich automatisch aan mit 'nen externe gebroeker", "right-minoredit": "Bewerkinge markere as klein", "right-move": "Pagina's hernaome", "right-move-subpages": "Pagina's inclusief subpagina's verplaatse", "right-move-rootuserpages": "Gebroekerspagina's van 't hoegste niveau verplaatse", + "right-move-categorypages": "Verplaats categoriepagina's", "right-movefile": "Bestenje hernoeme", "right-suppressredirect": "Een doorverwijzing op de doelpagina verwijdere bie 't hernaome van 'n pagina", "right-upload": "Bestande uploade", @@ -922,7 +1122,7 @@ "right-reupload-shared": "Sjrief bestenj oete gedeildje mediagegaevesbak plaatsjelik euver.", "right-upload_by_url": "Bestande uploade via een URL", "right-purge": "De cache veur 'n pagina lege", - "right-autoconfirmed": "Behandeld waere as 'n geregistreerde gebroeker", + "right-autoconfirmed": "Oetgezunjerd van IP-gebaseerde tiedsaafhenkelike bepirkinge", "right-bot": "Behandeld waere as 'n geautomatiseerd proces", "right-nominornewtalk": "Kleine bewerkinge aan 'n euverlegpagina leide neet tot 'n melding 'nuwe berichte'", "right-apihighlimits": "Hoegere API-limiete gebroeke", @@ -947,6 +1147,7 @@ "right-editinterface": "De gebroekersinterface bewerke", "right-editusercss": "De CSS-bestande van angere gebroekers bewerke", "right-edituserjs": "De JS-bestande van angere gebroekers bewerke", + "right-editmyoptions": "Bewirk dien eige veurkäöre", "right-rollback": "Snel de letste bewerking(e) van 'n gebroeker van 'n pagina terugdraaie", "right-markbotedits": "Teruggedraaide bewerkinge markere es botbewerkinge", "right-noratelimit": "Heet gein ti'jdsafhankelijke beperkinge", @@ -962,6 +1163,26 @@ "right-siteadmin": "De database blokkere en weer vriegaeve", "right-override-export-depth": "Export paazjes midin geslinkdje paazjes mit 'n deepdje ven 5", "right-sendemail": "Versjik e-mail aan anger gebroekers", + "grant-generic": "Rechtegroep \"$1\"", + "grant-group-page-interaction": "Wirk mit pagina's", + "grant-group-file-interaction": "Wirk mit media", + "grant-group-watchlist-interaction": "Wirk mit diene volglies", + "grant-group-email": "Sjik e-mail", + "grant-group-high-volume": "Veur aktiviteite mit hoeag voluum oet", + "grant-group-customization": "Aanpassinge en veurkäöre", + "grant-group-administration": "Veur behieërdershanjelinge oet", + "grant-group-private-information": "Betrach privaatgegaeves euver dich", + "grant-group-other": "Divers hanjelinge", + "grant-blockusers": "Blokkeer en deblokkeer gebroekers", + "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.", "rightslog": "Gebroekersrechtelogbook", @@ -1001,11 +1222,14 @@ "action-userrights-interwiki": "gebroekersrechte van gebroekers van anger wiki's te bewerke", "action-siteadmin": "de database aaf te sloete of aope te stelle", "action-sendemail": "Sjik e-mails", + "action-purge": "sjoean dees pagina op", "nchanges": "$1 {{PLURAL:$1|bewerking|bewerkinge}}", + "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|saer die litste bezeuk}}", "enhancedrc-history": "historie", "recentchanges": "Lètste verangeringe", "recentchanges-legend": "Opties veur recènte verangeringe", "recentchanges-summary": "Volg de recènste bewirkinge op deze wiki op dees pagina.", + "recentchanges-noresult": "Gein verangeringe in dees periood kómme euverein mit de criteria.", "recentchanges-feed-description": "Volg de meis recente bewerkinge in deze wiki via deze feed.", "recentchanges-label-newpage": "Mit dees verangering is 'n nuuj pagina aangemaak", "recentchanges-label-minor": "Dit is 'n klein bewirking", @@ -1014,6 +1238,42 @@ "recentchanges-label-plusminus": "Dees paginagruuedje is verangerdj mit dit aantaal aan bytes", "recentchanges-legend-heading": "Legenda:", "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", + "rcfilters-limit-shownum": "Toean de litste $1 verangeringe", + "rcfilters-days-title": "Recènte daag", + "rcfilters-hours-title": "Recènte oere", + "rcfilters-days-show-days": "$1 {{PLURAL:$1|daag}}", + "rcfilters-days-show-hours": "$1 {{PLURAL:$1|oer}}", + "rcfilters-quickfilters": "Opgeslage filtjers", + "rcfilters-quickfilters-placeholder-title": "Nag gein opgeslage links", + "rcfilters-savedqueries-rename": "Herneum", + "rcfilters-savedqueries-setdefault": "Stèl in es standerd", + "rcfilters-savedqueries-unsetdefault": "Sjaf eweg es standerd", + "rcfilters-savedqueries-remove": "Sjaf eweg", + "rcfilters-savedqueries-new-name-label": "Naam", + "rcfilters-savedqueries-new-name-placeholder": "Besjrief 't doel van de filtjer", + "rcfilters-savedqueries-apply-label": "Maak filtjer aan", + "rcfilters-savedqueries-cancel-label": "Braek aaf", + "rcfilters-savedqueries-add-new-title": "Slaon hujige filtjerinstèllinge op", + "rcfilters-restore-default-filters": "Zèt standerd filtjers trögk", + "rcfilters-clear-all-filters": "Sjaf alle filtjers eweg", + "rcfilters-search-placeholder": "Filtjer recènte verangeringe (blajer of begin mit intikke)", + "rcfilters-invalid-filter": "Óngeljige filtjer", + "rcfilters-empty-filter": "Gein aktief filtjers. Alle biedrage waere waergaeve.", + "rcfilters-filterlist-title": "Filtjers", + "rcfilters-filterlist-whatsthis": "Wie wirk dit?", + "rcfilters-filterlist-feedbacklink": "Gaef trögksjaking op de nuuj (bèta)filtjers", + "rcfilters-highlightbutton-title": "Markeer rizzeltaote", + "rcfilters-highlightmenu-title": "Kees 'n kluuer", + "rcfilters-highlightmenu-help": "Kees 'n kluuer veur dees eigesjappe oet te lichte", + "rcfilters-filterlist-noresults": "Gein filtjers gevónje", + "rcfilters-filter-bots-label": "Bot", + "rcfilters-tag-prefix-namespace-inverted": ":neet $1", "rcnotefrom": "{{PLURAL:$5|Verangering|Verangeringe}} saer $3 óm $4 (maximaal $1 {{PLURAL:$1|verangering|verangeringe}}).", "rclistfrom": "Tuin de verangeringe vanaaf $3 $2", "rcshowhideminor": "$1 klein bewèrkinge", @@ -1029,9 +1289,14 @@ "rcshowhideanons-show": "Toean", "rcshowhideanons-hide": "Versjtaek", "rcshowhidepatr": "$1 gecontroleerde bewerkinge", + "rcshowhidepatr-show": "Toean", + "rcshowhidepatr-hide": "Versjtaek", "rcshowhidemine": "$1 mien bewirkinge", "rcshowhidemine-show": "Toean", "rcshowhidemine-hide": "Versjtaek", + "rcshowhidecategorization": "$1 paginacategorisatie", + "rcshowhidecategorization-show": "Toean", + "rcshowhidecategorization-hide": "Versjtaek", "rclinks": "Bekiek de $1 litste verangeringe van de aafgeloupe $2 daag.", "diff": "vers", "hist": "hist", @@ -1041,11 +1306,11 @@ "newpageletter": "N", "boteditletter": "b", "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|keer|keer}} op 'ne volglies]", - "rc_categories": "Beperk tot allein categorieë (sjeij mit 'n \"|\")", - "rc_categories_any": "Iddere", + "rc_categories": "Bepirk tot categorieë (sjeij mit 'n \"|\")", + "rc_categories_any": "Idder vanne gekaozene", "rc-change-size-new": "$1 {{PLURAL:$1|byte|bytes}} nao verangering", "newsectionsummary": "/* $1 */ nuje subkop", - "rc-enhanced-expand": "Details weergaeve (JavaScript verplich)", + "rc-enhanced-expand": "Toean details", "rc-enhanced-hide": "Details verberge", "rc-old-title": "oearsprónkelik aangemaak es \"$1\"", "recentchangeslinked": "Volg links", @@ -1055,6 +1320,11 @@ "recentchangeslinked-summary": "Dees speciaal pagina tuint de lètste bewirkinge op pagina's die gelink waere vanaaf deze pagina. Pagina's die op [[Special:Watchlist|dien volglies]] staon waere '''vet''' weergegaeve.", "recentchangeslinked-page": "Paginanaam:", "recentchangeslinked-to": "Verangeringe weergaeve nao de gelinkde pagina's", + "recentchanges-page-added-to-category": "[[:$1]] aan categorie tougeveug gewaore", + "recentchanges-page-added-to-category-bundled": "[[:$1]] is tougeveug gewaore aan de categorie, [[Special:WhatLinksHere/$1|dees pagina is opgenómme gewaore in anger pagina's]]", + "recentchanges-page-removed-from-category": "[[:$1]] is oet de categorie eweggehaoldj gewaore", + "recentchanges-page-removed-from-category-bundled": "[[:$1]] is oet de categorie eweggehaoldj gewaore, [[Special:WhatLinksHere/$1|dees pagina is opgenómme gewaore in anger pagina's]]", + "autochange-username": "Automatische verangering van MediaWiki", "upload": "Upload", "uploadbtn": "bestandj uploade", "reuploaddesc": "Truuk nao 't uploadformeleer.", @@ -1399,7 +1669,7 @@ "booksources-text": "Hiej onger stuit 'n lies met koppelinge nao anger websites die nuuje of gebroekde beuk verkoupe, en die wellich meer informatie euver 't book detse zeuks höbbe:", "booksources-invalid-isbn": "t Ingegaeve ISBN liek neet geldig te zeen.\nControleer of se wellich n fout höbs gemaak bie de inveur.", "specialloguserlabel": "Oetveurder:", - "speciallogtitlelabel": "Doel (pagina of gebroeker):", + "speciallogtitlelabel": "Doel (paginanaam of {{ns:user}}:gebroekersnaam veur gebroeker):", "log": "Logbeuk", "all-logs-page": "Alle aopenbaar logbeuk", "alllogstext": "Dit is 't gecombineerd logbook ven {{SITENAME}}. De kins ouch 'n bepaald logbook keze, of filtere op gebroekersnaam of pazjena, beide huidlettergeveulig.", @@ -1501,11 +1771,11 @@ "unwatchthispage": "Neet mië volge", "notanarticle": "Is gein artikel", "notvisiblerev": "Bewèrking is verwiederd", - "watchlist-details": "D'r {{PLURAL:$1|sjteit ein pagina|sjtaon $1 pagina's}} op dien volglies mit oetzunjering van de euverlèkpagina's.", + "watchlist-details": "D'r {{PLURAL:$1|sjteit ein pagina|sjtaon $1 pagina's}} op dien volglies mit de euverlèkpagina's neet mitgetèldj.", "wlheader-enotif": "Doe wörs per e-mail gewaarsjuwd", "wlheader-showupdated": "Pazjena's die verangerd zeen saers doe ze veur 't lètste bekeeks sjtaon '''vet'''", - "wlnote": "Hieónger {{PLURAL:$1|steit de lètste verangering|staon de lètste $1 verangeringe}} van {{PLURAL:$2|'t lètste oer|de lètste $2 oer}} óp $3 óm $4.", - "wlshowlast": "Tuin lètste $1 ore $2 daag", + "wlnote": "Hieónger {{PLURAL:$1|steit de lètste verangering|staon de lètste $1 verangeringe}} van {{PLURAL:$2|'t lètste oer|de lètste $2 oer}} óp $3 óm $4.", + "wlshowlast": "Tuin lètste $1 oere $2 daag", "watchlist-options": "Opties veur volglies", "watching": "Bezig mit plaatse op de volglies...", "unwatching": "Oet de volglies aan 't haole...", @@ -1687,7 +1957,7 @@ "whatlinkshere-hideredirs": "$1 redireks", "whatlinkshere-hidetrans": "$1 transclusies", "whatlinkshere-hidelinks": "$1 links", - "whatlinkshere-hideimages": "$1 bestandjslinker", + "whatlinkshere-hideimages": "$1 bestandjslinke", "whatlinkshere-filters": "Filters", "autoblockid": "Autoblock #$1", "block": "Blok gebroeker", @@ -1979,7 +2249,7 @@ "tooltip-feed-rss": "RSS feed veur dees pagina", "tooltip-feed-atom": "Atom feed veur dees pagina", "tooltip-t-contributions": "Lies mit biedrages van {{GENDER:$1|deze gebroeker}}", - "tooltip-t-emailuser": "Sjtuur inne mail noa dizze gebroeker", + "tooltip-t-emailuser": "Sjtuur inne mail noa dizze {{GENDER:$1|gebroeker}}", "tooltip-t-upload": "Upload besjtande", "tooltip-t-specialpages": "Lies van alle speciaal pagina's", "tooltip-t-print": "Printvruntelike versie van deze pagina", @@ -2028,8 +2298,9 @@ "simpleantispam-label": "Antispamcontrole.\nVöl dit veld neet in!", "pageinfo-title": "Informatie euver \"$1\"", "pageinfo-header-basic": "Basisgegaeves", - "pageinfo-header-edits": "Bewirk", + "pageinfo-header-edits": "Bewirkingsgesjiechte", "pageinfo-header-restrictions": "Paginabesjirming", + "pageinfo-header-properties": "Pagina-eigesjappe", "pageinfo-display-title": "Toean paginanaam", "pageinfo-default-sort": "Standerd sortering", "pageinfo-length": "Paginalingdje (in bytes)", @@ -2037,12 +2308,26 @@ "pageinfo-language": "Spraok worin dees pagina steit", "pageinfo-content-model": "Paginainhawdmodel", "pageinfo-robot-policy": "Robot-indexering", + "pageinfo-robot-index": "Tougestange", + "pageinfo-robot-noindex": "Neet toegestange", "pageinfo-watchers": "Aantal paginavolgers", + "pageinfo-few-watchers": "Minder es {{PLURAL:$1|eine volger|$1 volgers}}", "pageinfo-redirects-name": "Aantaal redireks nao dees pagina", + "pageinfo-subpages-name": "Subpagina's van dees pagina", + "pageinfo-subpages-value": "$1 ($2 {{PLURAL:$2|redirek|redireks}}; $3 {{PLURAL:$3|neet-redirek|neet-redireks}})", + "pageinfo-firstuser": "Aanmaker", + "pageinfo-firsttime": "Datum vannen aanmaak", + "pageinfo-lastuser": "Litste bewirker", + "pageinfo-lasttime": "Litste bewirking", "pageinfo-edits": "Aantal bewèrkinge", "pageinfo-authors": "Aantal versjillende sjrievers", + "pageinfo-recent-edits": "Recènte bewirkinge (binne de aafgeloupe $1)", + "pageinfo-recent-authors": "Recènte sjrievers", "pageinfo-magic-words": "{{PLURAL:$1|Magisch waord|Magische wäörd}} ($1)", + "pageinfo-hidden-categories": "Verstaoke {{PLURAL:$1|categorie|categorieje}} ($1)", + "pageinfo-templates": "{{PLURAL:$1|Gebroek sjebloon|Gebroekde sjeblone}} ($1)", "pageinfo-toolboxlink": "Pazjena-infermasie", + "pageinfo-contentpage": "Getèldj es pagina mit inhawd", "pageinfo-contentpage-yes": "Jao", "markaspatrolleddiff": "Markeer es gecontroleerd", "markaspatrolledtext": "Markeer deze pagina es gecontroleerd", @@ -2508,6 +2793,7 @@ "watchlistedit-raw-done": "Dien volglies is biegewirk.", "watchlistedit-raw-added": "{{PLURAL:$1|1 pazjena is|$1 pazjena's zeen}} toegevoog:", "watchlistedit-raw-removed": "{{PLURAL:$1|1 pazjena is|$1 pazjena's zeen}} eweggesjaf:", + "watchlisttools-clear": "Maak de volglies laeg", "watchlisttools-view": "Volglies bekieke", "watchlisttools-edit": "Volglies bekieke en bewirke", "watchlisttools-raw": "Roew volglies bewirke", @@ -2538,6 +2824,15 @@ "version-entrypoints": "Ingang-URLs", "version-entrypoints-header-entrypoint": "Ingank", "version-entrypoints-header-url": "URL", + "redirect": "Redirek op bestandj, gebroeker, pagina, versie of log-ID", + "redirect-summary": "Dees speciaal pagina verwies door nao e bestandj (es 'ne bestandjsnaam weurt opgegaeve), 'n pagina (es e paginanómmer of versienómmer weurt opgegaeve), 'ne gebroekerspagina (es e gebroekersnómmer weurt opgegaeve) of 'ne logbookregel (es 'n logboekregel-ID weurt opgegaeve). Gebroek: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]] of [[{{#Special:Redirect}}/logid/186]].", + "redirect-submit": "Gank", + "redirect-lookup": "Zeuk op:", + "redirect-value": "Waerd", + "redirect-user": "Gebroekersnómmer", + "redirect-page": "Paginanómmer", + "redirect-revision": "Paginaversie", + "redirect-file": "Bestandjsnaam", "fileduplicatesearch": "Zeuk veur döbbelbestaondje bestenj", "fileduplicatesearch-summary": "Zeuk veur döbbel bestaondje bestenj op basis van zien hashwaarde.", "fileduplicatesearch-filename": "Bestandjsnaam:", @@ -2547,7 +2842,6 @@ "fileduplicatesearch-result-n": "'t Bestandj \"$1\" haet {{PLURAL:$2|1 identieke döbbelversie|$2 identiek döbbelversies}}.", "fileduplicatesearch-noresults": "d'r Is gei bestandj mitte naam \"$1\" gevónje.", "specialpages": "Speciaal pagina's", - "specialpages-note": "* Normaal speciaal pagina's\n* Beperk toegankelike speciaal pagina's\n* Speciaal pagina's mit allein gegaeves oete cache (meugelik verajerd)", "specialpages-group-maintenance": "Óngerhajingsrapporter", "specialpages-group-other": "Euverige speciaal pazjena's", "specialpages-group-login": "Aanmelje / registrere", @@ -2574,6 +2868,8 @@ "tags-display-header": "Weergave in wiezigingslieste", "tags-description-header": "Volledige beschrieving van betekenis", "tags-hitcount-header": "Gelabelde bewerkinge", + "tags-active-yes": "Jao", + "tags-active-no": "Nae", "tags-edit": "bewerking", "tags-hitcount": "$1 {{PLURAL:$1|wieziging|wieziginge}}", "comparepages": "Vergeliek pazjena's", @@ -2585,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)", @@ -2602,9 +2899,9 @@ "htmlform-reset": "Maak verangeringe óngedaon", "htmlform-selectorother-other": "Anges", "logentry-delete-delete": "$1 {{GENDER:$1|haet}} de pagina $3 gewösj", - "logentry-delete-restore": "$1 haet de pagina $3 trögkgezat", + "logentry-delete-restore": "$1 {{GENDER:$2|haet}} de pagina $3 ($4) trögkgezatte", "logentry-delete-event": "$1 haet de zichbaarheid van {{PLURAL:$5|'ne logbookregel|$5 logbookregels}} van $3 gewiezig: $4", - "logentry-delete-revision": "$1 haet de zichbaarheid van {{PLURAL:$5|'n versie|$5 versies}} van $3 gewiezig: $4", + "logentry-delete-revision": "$1 {{GENDER:$2|haet}} de zichbaarheid van {{PLURAL:$5|'n versie|$5 versies}} van de pagina $3 verangerdj: $4", "logentry-delete-event-legacy": "$1 haet de zichbaarheid van logbookregels van $3 gewiezig", "logentry-delete-revision-legacy": "$1 haet de zichbaarheid van versies van de pagina $3 gewiezig.", "logentry-suppress-delete": "$1 haet de pagina $3 ongerdrök", @@ -2625,12 +2922,13 @@ "logentry-move-move_redir": "$1 {{GENDER:$2|verplaatsde}} pagina $3 nao $4 euver 'ne redirek", "logentry-move-move_redir-noredirect": "$1 verplaatsde pagina $3 nao $4 euver 'ne redirek zonger 'n doorverwiezing achter te laote", "logentry-patrol-patrol": "$1 haet versie $4 van pagina $3 es gecontroleerd gemarkeerd", - "logentry-patrol-patrol-auto": "$1 haet versie $4 van pagina $3 autematis es gecontroleerd gemarkeerd", + "logentry-patrol-patrol-auto": "$1 {{GENDER:$2|haet}} versie $4 van pagina $3 autematis gemarkeerd es gecontroleerd", "logentry-newusers-newusers": "$1 haet 'ne gebroeker aangemaak", "logentry-newusers-create": "Gebroeker $1 {{GENDER:$2|is}} aangemaak gewaore", "logentry-newusers-create2": "$1 haet 'ne gebroeker $3 aangemaak", - "logentry-newusers-autocreate": "De gebroeker $1 is autematis aangemaak", + "logentry-newusers-autocreate": "De gebroeker $1 {{GENDER:$2|is}} autematis aangemaak gewaore", "logentry-upload-upload": "$1 {{GENDER:$2|loadje}} $3 up", + "logentry-upload-overwrite": "$1 {{GENDER:$2|haet}} 'n nuuj versie van $3 hoaggelaje", "rightsnone": "(gein)", "feedback-adding": "Feedback weurt aan pagina toegevoeg...", "feedback-bugcheck": "Good! Kónterleer ef of 't neet al ein vanne [$1 bekèndje bugs] is.", @@ -2692,5 +2990,6 @@ "special-characters-group-lao": "Lao", "special-characters-group-khmer": "Cambodzjaans", "mw-widgets-dateinput-placeholder-day": "JJJJ-MM-DD", - "mw-widgets-dateinput-placeholder-month": "JJJJ-MM" + "mw-widgets-dateinput-placeholder-month": "JJJJ-MM", + "randomrootpage": "Willekäörige wrootpagina" } 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..f61d7979c8 100644 --- a/languages/i18n/lt.json +++ b/languages/i18n/lt.json @@ -790,7 +790,7 @@ "page_first": "pirm", "page_last": "pask", "histlegend": "Skirtumai tarp versijų: pažymėkite lyginamas versijas ir spustelkite ''Enter'' klavišą arba mygtuką apačioje.
    \nŽymėjimai: (dab) = palyginimas su naujausia versija,\n(pask) = palyginimas su prieš tai buvusia versija, S = smulkus keitimas.", - "history-fieldset-title": "Ieškoti istorijoje", + "history-fieldset-title": "Ieškoti versijų", "history-show-deleted": "Tik ištrinti", "histfirst": "seniausi", "histlast": "paskutiniai", @@ -1321,16 +1321,15 @@ "rcfilters-highlightmenu-help": "Pasirinkite spalvą šio elemento paryškinimui", "rcfilters-filterlist-noresults": "Nerastas toks filtras", "rcfilters-noresults-conflict": "Nerasta jokių rezultatų, nes paieškos kriterijai konfliktuoja", - "rcfilters-filtergroup-registration": "Vartotojo registracija", - "rcfilters-filter-registered-label": "Registruoti", - "rcfilters-filter-registered-description": "Prisijungę redaktoriai.", - "rcfilters-filter-unregistered-label": "Neregistruoti", - "rcfilters-filter-unregistered-description": "Redaktoriai, kurie nėra prisijungę.", "rcfilters-filter-editsbyself-label": "Jūsų keitimai", "rcfilters-filter-editsbyself-description": "Jūsų keitimai.", "rcfilters-filter-editsbyother-label": "Kitų keitimai", "rcfilters-filter-editsbyother-description": "Visi keitimai, išskyrus jūsų.", "rcfilters-filtergroup-userExpLevel": "Patirties lygis (tik registruotiems vartotojams)", + "rcfilters-filter-user-experience-level-registered-label": "Registruoti", + "rcfilters-filter-user-experience-level-registered-description": "Prisijungę redaktoriai.", + "rcfilters-filter-user-experience-level-unregistered-label": "Neregistruoti", + "rcfilters-filter-user-experience-level-unregistered-description": "Redaktoriai, kurie nėra prisijungę.", "rcfilters-filter-user-experience-level-newcomer-label": "Naujokai", "rcfilters-filter-user-experience-level-newcomer-description": "Mažiau nei 10 keitimų ir 4 dienų aktyvumo.", "rcfilters-filter-user-experience-level-learner-label": "Mokiniai", @@ -3278,7 +3277,6 @@ "fileduplicatesearch-noresults": "Nėra failo pavadinimu \"$1\".", "specialpages": "Specialieji puslapiai", "specialpages-note-top": "Paaiškinimai", - "specialpages-note": "* Įprasti specialieji puslapiai.\n* Apriboto pasiekiamumo specialieji puslapiai.", "specialpages-group-maintenance": "Sistemos palaikymo pranešimai", "specialpages-group-other": "Kiti specialieji puslapiai", "specialpages-group-login": "Prisijungti / sukurti paskyrą", @@ -3396,6 +3394,7 @@ "compare-invalid-title": "Jūsų nurodytas pavadinimas neleistinas.", "compare-title-not-exists": "Pavadinimas, kurį nurodėte, neegzistuoja.", "compare-revision-not-exists": "Keitimas, kurį nurodėte, neegzistuoja.", + "diff-form": "'''forma'''", "dberr-problems": "Atsiprašome! Svetainei iškilo techninių problemų.", "dberr-again": "Palaukite kelias minutes ir perkraukite puslapį.", "dberr-info": "(Nepavyksta pasiekti duomenų bazės: $1)", @@ -3431,6 +3430,7 @@ "logentry-delete-delete_redir": "$1 pervadindamas {{GENDER:$2|ištrynė}} buvusį nukreipimą $3", "logentry-delete-restore": "$1 atkūrė puslapį $3 ($4)", "logentry-delete-restore-nocount": "$1 atkūrė puslapį $3", + "restore-count-revisions": "{{PLURAL:$1|1 versija|versijų: $1}}", "restore-count-files": "{{PLURAL:$1|1 failas|$1 failai}}", "logentry-delete-event": "$1 {{GENDER:$2|pakeitė}} matomumą {{PLURAL:$5|žurnalo įvykio|$5 žurnalo įvykių}} $3: $4", "logentry-delete-revision": "$1 {{GENDER:$2|pakeitė}} matomumą {{PLURAL:$5|versijos|$5 versijų}} puslapyje $3: $4", diff --git a/languages/i18n/lv.json b/languages/i18n/lv.json index cc344efa6a..52370623ee 100644 --- a/languages/i18n/lv.json +++ b/languages/i18n/lv.json @@ -139,6 +139,8 @@ "october-date": "$1. oktobris", "november-date": "$1. novembris", "december-date": "$1. decembris", + "period-am": "AM", + "period-pm": "PM", "pagecategories": "{{PLURAL:$1|Kategorijas|Kategorija|Kategorijas}}", "category_header": "Raksti, kas ietverti kategorijā \"$1\".", "subcategories": "Apakškategorijas", @@ -494,6 +496,7 @@ "botpasswords-updated-title": "Bota parole atjaunināta", "botpasswords-deleted-title": "Bota parole dzēsta", "resetpass_forbidden": "Paroles nav iespējams nomainīt", + "resetpass_forbidden-reason": "Paroles nav iespējams nomainīt: $1", "resetpass-no-info": "Jums ir nepieciešams ieiet, lai tūlīt piekļūtu šai lapai.", "resetpass-submit-loggedin": "Mainīt paroli", "resetpass-submit-cancel": "Atcelt", @@ -605,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:", @@ -795,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", @@ -837,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):", @@ -904,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", @@ -1012,16 +1017,26 @@ "right-deletechangetags": "Dzēst [[Special:Tags|iezīmes]] no datubāzes", "grant-generic": "\"$1\" tiesību paka", "grant-group-page-interaction": "Darboties ar lapām", + "grant-group-file-interaction": "Darboties ar multimediju failiem", "grant-group-email": "Sūtīt e-pastu", "grant-group-high-volume": "Veikt liela apjoma aktivitātes", "grant-group-administration": "Veikt administratīvās darbības", + "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", "grant-delete": "Dzēst lapas, to versijas un žurnāla ierakstus", + "grant-editinterface": "Labot MediaWiki vārdtelpu un lietotāju CSS/JavaScript", + "grant-editmycssjs": "Labot savu lietotāja CSS/JavaScript", + "grant-editmyoptions": "Labot savas lietotāja izvēles", "grant-editmywatchlist": "Labot uzraugāmo rakstu sarakstu", "grant-editpage": "Labot esošās lapas", "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", @@ -1049,6 +1064,7 @@ "action-deleterevision": "dzēst versijas", "action-deletelogentry": "dzēst žurnāla ierakstus", "action-deletedhistory": "skatīt šīs lapas dzēsto vēsturi", + "action-deletedtext": "skatīt dzēsto versiju tekstu", "action-browsearchive": "meklēt dzēstās lapas", "action-undelete": "atcelt lapu dzēšanu", "action-suppressrevision": "pārskatīt un atjaunot slēptās versijas", @@ -1081,8 +1097,22 @@ "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", + "rcfilters-advancedfilters": "Paplašinātie filtri", + "rcfilters-limit-title": "Rādāmās izmaiņas", + "rcfilters-limit-shownum": "Rādīt {{PLURAL:$1|pēdējās $1 izmaiņas|pēdējo $1 izmaiņu|pēdējās $1 izmaiņas}}", + "rcfilters-days-title": "Pēdējās dienas", + "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", "rcfilters-savedqueries-rename": "Pārsaukt", "rcfilters-savedqueries-setdefault": "Uzstādīt kā noklusēto", @@ -1091,33 +1121,35 @@ "rcfilters-savedqueries-new-name-label": "Nosaukums", "rcfilters-savedqueries-new-name-placeholder": "Apraksti filtra būtību", "rcfilters-savedqueries-apply-label": "Izveidot filtru", + "rcfilters-savedqueries-apply-and-setdefault-label": "Izveidot noklusēto filtru", "rcfilters-savedqueries-cancel-label": "Atcelt", "rcfilters-savedqueries-add-new-title": "Saglabāt esošos filtra iestatījumus", "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-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.", "rcfilters-filterlist-title": "Filtri", - "rcfilters-filterlist-whatsthis": "Kas tas ir?", + "rcfilters-filterlist-whatsthis": "Kā tās strādā?", "rcfilters-filterlist-feedbacklink": "Sniedz atsauksmes par jaunajiem (bēta) filtriem", "rcfilters-highlightbutton-title": "Izcelt rezultātus", "rcfilters-highlightmenu-title": "Izvēlies krāsu", "rcfilters-highlightmenu-help": "Izvēlies krāsu, lai izceltu šo īpašību", "rcfilters-filterlist-noresults": "Filtri nav atrasti", - "rcfilters-filtergroup-registration": "Lietotāja reģistrācija", - "rcfilters-filter-registered-label": "Reģistrēti", - "rcfilters-filter-registered-description": "Pieslēgušies redaktori.", - "rcfilters-filter-unregistered-label": "Nereģistrēti", - "rcfilters-filter-unregistered-description": "Nepieslēgušies redaktori.", + "rcfilters-noresults-conflict": "Nav rezultātu, jo meklēšanas kritēriji konfliktē", "rcfilters-filtergroup-authorship": "Devuma autors", "rcfilters-filter-editsbyself-label": "Tavi labojumi", "rcfilters-filter-editsbyself-description": "Tevis veiktie labojumi.", "rcfilters-filter-editsbyother-label": "Citu labojumi", "rcfilters-filter-editsbyother-description": "Visas izmaiņas bez tavējām.", "rcfilters-filtergroup-userExpLevel": "Pieredzes līmenis (tikai reģistrētiem dalībniekiem)", + "rcfilters-filter-user-experience-level-registered-label": "Reģistrēti", + "rcfilters-filter-user-experience-level-registered-description": "Pieslēgušies redaktori.", + "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", @@ -1137,6 +1169,8 @@ "rcfilters-filter-minor-description": "Labojumi, kas atzīmēti kā maznozīmīgi.", "rcfilters-filter-major-label": "Nozīmīgi labojumi", "rcfilters-filter-major-description": "Labojumi, kas nav atzīmēti kā maznozīmīgi.", + "rcfilters-filter-watchlistactivity-unseen-label": "Neapskatītas izmaiņas", + "rcfilters-filter-watchlistactivity-seen-label": "Apskatītas izmaiņas", "rcfilters-filtergroup-changetype": "Izmaiņu veids", "rcfilters-filter-pageedits-label": "Lapu labojumi", "rcfilters-filter-pageedits-description": "Labojumi vikivietnes saturā, diskusijā, kategoriju aprakstos...", @@ -1146,12 +1180,14 @@ "rcfilters-filter-categorization-description": "Ieraksti par lapu pievienošanu vai noņemšanu no kategorijām.", "rcfilters-filter-logactions-label": "Reģistrētās darbības", "rcfilters-filter-logactions-description": "Administratīvās darbības, kontu veidošana, lapu dzēšana, augšupielādes...", - "rcfilters-filtergroup-lastRevision": "Pēdējā versija", - "rcfilters-filter-lastrevision-label": "Pēdējā versija", + "rcfilters-filtergroup-lastRevision": "Pašreizējās versijas", + "rcfilters-filter-lastrevision-label": "Pašreizējā versija", "rcfilters-filter-lastrevision-description": "Nesenākā lapas izmaiņa.", "rcfilters-filter-previousrevision-label": "Agrākas versijas", "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", @@ -1491,9 +1527,10 @@ "protectedpages-unknown-performer": "Nezināms lietotājs", "protectedtitles": "Aizsargātie nosaukumi", "protectedtitlesempty": "Pagaidām nevienas lapas nosaukums nav aizsargāts ar šiem paraametriem.", - "listusers": "dalībnieku uzskaitījums", + "listusers": "Dalībnieku saraksts", "listusers-editsonly": "Rādīt tikai dalībniekus, kas ir izdarījuši kādas izmaiņas", "listusers-creationsort": "Kārtot pēc izveidošanas datuma", + "listusers-desc": "Kārtot dilstošā secībā", "usereditcount": "$1 {{PLURAL:$1|izmaiņas|izmaiņa|izmaiņas}}", "usercreated": "{{GENDER:$3|Izveidoja}} $1 plkst. $2", "newpages": "Jaunas lapas", @@ -1537,7 +1574,7 @@ "booksources-search-legend": "Meklēt grāmatu avotus", "booksources-search": "Meklēt", "specialloguserlabel": "Izpildītājs:", - "speciallogtitlelabel": "Mērķis (nosaukums vai lietotājs):", + "speciallogtitlelabel": "Mērķis (nosaukums vai {{ns:user}}:lietotājvārds dalībniekam):", "log": "Reģistri", "logeventslist-submit": "Rādīt", "all-logs-page": "Visi publiski pieejamie reģistri", @@ -1823,6 +1860,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", @@ -2170,6 +2208,7 @@ "pageinfo-edits": "Kopējais izmaiņu skaits", "pageinfo-authors": "Kopējais atsevišķu autoru skaits", "pageinfo-magic-words": "{{PLURAL:$1|Maģiskie vārdi|Maģiskais vārds|Maģiskie vārdi}} ($1)", + "pageinfo-hidden-categories": "{{PLURAL:$1|Slēptas kategorijas|Slēpta kategorija|Slēptas kategorijas}} ($1)", "pageinfo-toolboxlink": "Lapas informācija", "pageinfo-redirectsto": "Pāradresē uz", "pageinfo-redirectsto-info": "info", @@ -2435,6 +2474,8 @@ "exif-sensingmethod-2": "Vienas mikroshēmas krāsu zonas sensors", "exif-sensingmethod-3": "Divu mikroshēmu krāsu zonas sensors", "exif-sensingmethod-4": "Trīs mikroshēmu krāsu zonas sensors", + "exif-filesource-3": "Digitālā kamera", + "exif-scenetype-1": "Tieši fotografēts attēls", "exif-customrendered-0": "Normāls process", "exif-customrendered-1": "Dažādots process", "exif-exposuremode-0": "Automātiskā ekspozīcija", @@ -2574,6 +2615,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", @@ -2631,7 +2673,6 @@ "fileduplicatesearch-result-n": "Failam \"$1\" ir {{PLURAL:$2|$2 identiskas kopijas|1 identiska kopija|$2 identiskas kopijas}}.", "specialpages": "Īpašās lapas", "specialpages-note-top": "Apzīmējumi", - "specialpages-note": "* Normālas īpašās lapas.\n* Ierobežotas pieejas īpašās lapas.\n* Iekešotās īpašās lapas.", "specialpages-group-maintenance": "Uzturēšanas atskaites", "specialpages-group-other": "Citas īpašās lapas", "specialpages-group-login": "Pieslēgties / izveidot kontu", @@ -2726,7 +2767,7 @@ "htmlform-title-not-exists": "$1 nepastāv.", "logentry-delete-delete": "$1 {{GENDER:$2|izdzēsa}} lapu $3", "logentry-delete-delete_redir": "$1 {{GENDER:$2|izdzēsa}} pāradresāciju $3 pārrakstot", - "logentry-delete-restore": "$1 {{GENDER:$2|atjaunoja}} lapu $3", + "logentry-delete-restore": "$1 {{GENDER:$2|atjaunoja}} lapu $3 ($4)", "restore-count-files": "{{PLURAL: $1|$1 faili|$1 fails|$1 faili}}", "logentry-suppress-delete": "$1 {{GENDER:$2|cenzēja}} lapu $3", "revdelete-content-hid": "saturs slēpts", @@ -2783,6 +2824,7 @@ "limitreport-postexpandincludesize-value": "$1/$2 {{PLURAL:$2|baiti|baits|baiti}}", "limitreport-templateargumentsize": "Veidnes argumenta izmērs", "limitreport-templateargumentsize-value": "$1/$2 {{PLURAL:$2|baiti|baits|baiti}}", + "limitreport-expensivefunctioncount": "Dārgo parsētāja funkciju skaits", "expand_templates_output": "Rezultāts", "expand_templates_ok": "Labi", "expand_templates_remove_nowiki": "Cenzēt iezīmes rezultātā", @@ -2818,6 +2860,7 @@ "mw-widgets-titleinput-description-new-page": "lapa vēl nepastāv", "mw-widgets-categoryselector-add-category-placeholder": "Pievienot kategoriju...", "sessionprovider-generic": "$1 sesijas", + "randomrootpage": "Nejauša saknes lapa", "log-action-filter-suppress": "Cenzēšanas veids:", "log-action-filter-suppress-event": "Reģistra ieraksta cenzēšana", "log-action-filter-suppress-delete": "Lapas cenzēšana", 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/mg.json b/languages/i18n/mg.json index 6eed14ea3e..06528085ba 100644 --- a/languages/i18n/mg.json +++ b/languages/i18n/mg.json @@ -1266,17 +1266,16 @@ "rcfilters-highlightmenu-help": "Misafidy loko hampanabaribariana ilay tondro", "rcfilters-filterlist-noresults": "Tsy nahitana sivana", "rcfilters-noresults-conflict": "Tsy nahitana valiny satria tsy mifanaraka ny mason-tsivana", - "rcfilters-filtergroup-registration": "Fisoratan'ny mpikambana", - "rcfilters-filter-registered-label": "Nisoratra anarana", - "rcfilters-filter-registered-description": "Mpanova tafiditra.", - "rcfilters-filter-unregistered-label": "Tsy nisoratra anarana", - "rcfilters-filter-unregistered-description": "Mpikambana tsy niditra.", "rcfilters-filtergroup-authorship": "Manova ny tompon-tsoratra", "rcfilters-filter-editsbyself-label": "Ny fiovanao", "rcfilters-filter-editsbyself-description": "Fiovana nataonao", "rcfilters-filter-editsbyother-label": "Fiovana nataon'ny hafa", "rcfilters-filter-editsbyother-description": "Fiovana noforonin'ny mpikambana hafa (tsy ianao).", "rcfilters-filtergroup-userExpLevel": "Lentan'ny traikefa (ho an'ireo mpikambana nisoratra anarana ihany)", + "rcfilters-filter-user-experience-level-registered-label": "Nisoratra anarana", + "rcfilters-filter-user-experience-level-registered-description": "Mpanova tafiditra.", + "rcfilters-filter-user-experience-level-unregistered-label": "Tsy nisoratra anarana", + "rcfilters-filter-user-experience-level-unregistered-description": "Mpikambana tsy niditra.", "rcfilters-filter-user-experience-level-newcomer-label": "Vao tonga", "rcfilters-filter-user-experience-level-newcomer-description": "Latsaky ny fiovana folo ary latsaky ny 4 andro niasana", "rcfilters-filter-user-experience-level-learner-label": "Mpianatra", diff --git a/languages/i18n/mk.json b/languages/i18n/mk.json index eb697b21bc..2c963aadf5 100644 --- a/languages/i18n/mk.json +++ b/languages/i18n/mk.json @@ -51,13 +51,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": "Сокриј ја категоризацијата на страниците", @@ -684,8 +685,8 @@ "explainconflict": "Некој друг ја променил страницата откако почнавте да ја уредувате.\nГорниот дел за текст ја содржи страницата како што сега постои.\nВашите промени се прикажани во долниот дел.\nЌе морате да ги внесете вашите промени со постоечкиот текст.\n'''Само''' текстот во горниот дел ќе биде зачуван кога ќе притиснете на „$1“.", "yourtext": "Вашиот текст", "storedversion": "Зачувана преработка", - "nonunicodebrowser": "'''ПРЕДУПРЕДУВАЊЕ: Вашиот прелистувач не поддржува Уникод.\nПостои решение што овозможува безбедно да уредување страници: во полето за уредување не-ASCII знаците ќе се јавуваат како хексадецимални кодови.", "editingold": "'''ПРЕДУПРЕДУВАЊЕ: Менувате застарена верзија на оваа страница.\nАко ја зачувате, сите промени по оваа верзија ќе бидат изгубени.'''", + "unicode-support-fail": "Вашиот прелистувач не поддржува уникод. Уникодот е неопходен за уредување на страници, па затоа нема да можам да го зачувам уредувањето.", "yourdiff": "Разлики", "copyrightwarning": "Имајте предвид дека сите придонеси на {{SITENAME}} се сметаат за издадени под лиценцата $2 (повеќе на $1).\nДоколку не сакате вашите текстови да бидат слободно уредувани и разменувани, тогаш не поднесувајте ги овде.
    \nИсто така ветувате дека вие сте автор на текстот, или сте го копирале од ресурс во јавна сопственост или сличен слободен извор.\n'''НЕ ПОДНЕСУВАЈТЕ ТЕКСТОВИ ЗАШТИТЕНИ СО АВТОРСКИ ПРАВА БЕЗ ДОЗВОЛА!'''", "copyrightwarning2": "Ве молиме, имајте предвид дека сите придонеси кон {{SITENAME}} можат да бидат уредувани, менувани или отстранувани од други корисници. Ако не сакате вашиот текст да биде менуван и редистрибуиран слободно, не го испраќајте овде.
    \nИсто така потврдувате дека текстот сте го напишале сами, или сте го копирале од ресурс во јавна сопственост или сличен слободен извор (видетe $1 за подробности).
    \n'''НЕ ПРАЌАЈТЕ ТЕКСТОВИ ЗАШТИТЕНИ СО АВТОРСКИ ПРАВА БЕЗ ДОЗВОЛА!'''", @@ -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Веројатно е избришана.", @@ -753,6 +754,7 @@ "parser-template-loop-warning": "Пронајдена е јамка во шаблонот: [[$1]]", "template-loop-category": "Страници со шаблонски јамки", "template-loop-category-desc": "Страницава содржи шаблонска јамка, т.е. шаблон кој повторливо се самоповикува", + "template-loop-warning": "Предупредување: Страницава го повикува [[:$1]], што предизвикува јамка во шаблонот (бесконечно повторлив повик).", "parser-template-recursion-depth-warning": "Пречекорена е границата на длабочината на рекурзијата во шаблонот ($1)", "language-converter-depth-warning": "Пречекорена е границата на длабочината на јазичниот претворач ($1)", "node-count-exceeded-category": "Страници каде е надминат бројот на јазли", @@ -982,7 +984,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": "Други нагодувања", @@ -1022,6 +1024,7 @@ "timezoneregion-indian": "Индиски Океан", "timezoneregion-pacific": "Тихи Океан", "allowemail": "Дозволи е-пошта од други корисници", + "email-blacklist-label": "Забрани им на следниве корисници да ми праќаат е-пошта:", "prefs-searchoptions": "Пребарување", "prefs-namespaces": "Именски простори", "default": "по основно", @@ -1063,6 +1066,7 @@ "prefs-editor": "Уредник", "prefs-preview": "Преглед", "prefs-advancedrc": "Напредни нагодувања", + "prefs-opt-out": "Отпиши ме од подобрувањата", "prefs-advancedrendering": "Напредни нагодувања", "prefs-advancedsearchoptions": "Напредни нагодувања", "prefs-advancedwatchlist": "Напредни нагодувања", @@ -1299,9 +1303,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 промени}}", + "rcfilters-days-title": "Последниве денови", + "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": "За да ги зачувате вашите филтерски псотавки за да ги употребите другпат, стиснете на иконката за бележник во подрачјето „Активен филтер“ подолу.", @@ -1313,43 +1328,41 @@ "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-search-placeholder": "Филтрирај скорешни промени (прелстајте или почнете да пишувате)", + "rcfilters-show-new-changes": "Погл. најнови промени", + "rcfilters-search-placeholder": "Филтрирај скорешни промени (прелистајте или почнете со пишување)", "rcfilters-invalid-filter": "Неважечки филтер", "rcfilters-empty-filter": "Нема активни филтри. Прикажани се сите придонеси.", "rcfilters-filterlist-title": "Филтри", - "rcfilters-filterlist-whatsthis": "Што е ова?", - "rcfilters-filterlist-feedbacklink": "Дајте мислење за новите (бета) филтри", + "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-registration": "Регистрација на корисници", - "rcfilters-filter-registered-label": "Регистрирани", - "rcfilters-filter-registered-description": "Најавени уредници.", - "rcfilters-filter-unregistered-label": "Нерегистрирани", - "rcfilters-filter-unregistered-description": "Уредници кои не се најавени.", - "rcfilters-filter-unregistered-conflicts-user-experience-level": "Овој филтер е протиставен со {{PLURAL:$2|следниов филтер|следниве филтри}} за искуство, {{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-filtergroup-user-experience-level-conflicts-unregistered": "Филтрите за искуство пронаоѓаат само регистрирани корисници, така што овој филтер е простиставен со филтерот „Нерегистрирани“.", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Филтерот „Нерегистрирани“ е спротиставен на еден или повеќе од филтрите за искуство. Тие филтри наоѓаат само регистрирани корисници. Спротиставените филтри погоре се означени во одделот Активни филтри.", + "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": "Уредувања со автоматизирани алатки.", @@ -1372,6 +1385,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,18 +1402,28 @@ "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": "Означи ги сите промени како видени", + "rcfilters-watchlist-edit-watchlist-button": "Уреди набљудувани", + "rcfilters-watchlist-showupdated": "Промени во страниците што ги немате посетено откако се случиле се задебелени.", + "rcfilters-preference-label": "Скриј ја подобрената верзија во Скорешните промени", + "rcfilters-preference-help": "Го отповикува преуредувањето на околината од 2017 г. и сите алатки додадени оттогаш.", "rcnotefrom": "Подолу {{PLURAL:$5|е прикажана промената|се прикажани промените}} почнувајќи од $3, $4 (се прикажуваат до $1).", "rclistfromreset": "Нов избор на датуми", "rclistfrom": "Прикажи нови промени почнувајќи од $3 $2", @@ -1453,6 +1481,7 @@ "uploadbtn": "Подигни", "reuploaddesc": "Прекини и назад кон образецот за подигање", "upload-tryagain": "Поднеси изменет опис на податотеката", + "upload-tryagain-nostash": "Поднеси преподигната податотека и изменет опис", "uploadnologin": "Не сте најавени", "uploadnologintext": "Мора да сте $1 за да можете да подигате.", "upload_directory_missing": "Папката за подигање на слики ($1) не постои и не може да биде создадена од опслужувачот.", @@ -1512,6 +1541,7 @@ "file-deleted-duplicate-notitle": "Податотека сосем иста како оваа била претходно избришана, а насловот бил притаен.\nТреба да побарате од некој што има можност да гледа податоци за притаени податотеки да ја разгледа ситуацијата пред да продолжите со преподигањето.", "uploadwarning": "Предупредување при подигање", "uploadwarning-text": "Изменете го описот на податотеката подолу и обидете се повторно.", + "uploadwarning-text-nostash": "Преподигнете ја податотеката, изменете го описот подолу и обидете се пак.", "savefile": "Зачувај податотека", "uploaddisabled": "Забрана за подигања", "copyuploaddisabled": "Подигањето од URL е оневозможено.", @@ -1674,7 +1704,7 @@ "listfiles_size": "Големина", "listfiles_description": "Опис", "listfiles_count": "Верзии", - "listfiles-show-all": "Давај и стари верзии на сликите", + "listfiles-show-all": "Давај и стари верзии на податотеките", "listfiles-latestversion": "Тековна верзија", "listfiles-latestversion-yes": "Да", "listfiles-latestversion-no": "Не", @@ -1778,6 +1808,8 @@ "pageswithprop-legend": "Страници со својство", "pageswithprop-text": "На страницава се наведени страници што користат дадено својство.", "pageswithprop-prop": "Име на својството:", + "pageswithprop-reverse": "Подреди обратно", + "pageswithprop-sortbyvalue": "Подреди по својствена вредност", "pageswithprop-submit": "Дај", "pageswithprop-prophidden-long": "долгата вредност на текстуалното својство е скриена ($1)", "pageswithprop-prophidden-binary": "бинарната вредност на својството за долгиот текст е скриена ($1)", @@ -2081,7 +2113,7 @@ "unwatchthispage": "Престани набљудување", "notanarticle": "Не е статија", "notvisiblerev": "Преработката била избришана", - "watchlist-details": "{{PLURAL:$1|$1 страница|$1 страници}} во вашиот список на набљудувања, не броејќи ги посебно страниците за разговор.", + "watchlist-details": "Во вашите набљудувани имате {{PLURAL:$1|$1 страница|$1 страници}} (не броејќи ги страниците за разговор).", "wlheader-enotif": "Известувањето по е-пошта е вклучено.", "wlheader-showupdated": "Страниците што се изменети од вашата последна посета се прикажани со '''задебелени''' букви", "wlnote": "Подолу {{PLURAL:$1|е прикажана последната промена|се прикажани последните $1 промени}} во {{PLURAL:$2|последниов час|последниве $2 часа}}, заклучно со $3, $4 ч.", @@ -2116,6 +2148,7 @@ "enotif_lastdiff": "Оваа промена можете да ја видите на $1", "enotif_anon_editor": "анонимен корисник $1", "enotif_body": "Почитуван(а) $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\n$NEWPAGE\n\nОпис од уредникот: $PAGESUMMARY $PAGEMINOREDIT\n\nКонакт на уредникот:\nе-пошта: $PAGEEDITOR_EMAIL\nвики: $PAGEEDITOR_WIKI\n\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": "Избриши страница", @@ -2144,6 +2177,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=преку 50 потстраници}}]].", "rollback": "Отповикај промени", "rollbacklink": "отповикај", "rollbacklinkcount": "отповикај $1 {{PLURAL:$1|уредување|уредувања}}", @@ -2309,6 +2343,7 @@ "sp-contributions-newonly": "Прикажувај само новосоздадени страници", "sp-contributions-hideminor": "Скриј ситни промени", "sp-contributions-submit": "Пребарај", + "sp-contributions-outofrange": "Не можам да прикажам исход. Бараниот опсег на IP-адреси е поголем од допуштените /$1 во CIDR.", "whatlinkshere": "Што води овде", "whatlinkshere-title": "Страници со врски што водат до „$1“", "whatlinkshere-page": "Страница:", @@ -2596,9 +2631,9 @@ "import-parse-failure": "Грешка во расчленувањето при увозот на XML", "import-noarticle": "Нема страница за увоз!", "import-nonewrevisions": "Не увезов ниедна преработка (сите се веќе присутни или изоставени поради грешки)", - "xml-error-string": "$1 во ред $2, колона $3 (бајт $4): $5", + "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“ не е увезена бидејќи не ви е дозволено да ја создадете.", @@ -3509,7 +3544,7 @@ "fileduplicatesearch-noresults": "Не пронајдов податотека со име „$1“.", "specialpages": "Службени страници", "specialpages-note-top": "Легенда", - "specialpages-note": "* Нормални службени страници.\n* Ограничени службени страници.", + "specialpages-note-restricted": "* Нормални службени страници.\n* Ограничени службени страници.", "specialpages-group-maintenance": "Извештаи за одржување", "specialpages-group-other": "Други службени страници", "specialpages-group-login": "Најава / направи сметка", @@ -3628,6 +3663,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)", @@ -3848,6 +3890,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..637219657e 100644 --- a/languages/i18n/ml.json +++ b/languages/i18n/ml.json @@ -35,9 +35,9 @@ ] }, "tog-underline": "കണ്ണികൾക്ക് അടിവരയിടുക:", - "tog-hideminor": "പുതിയ മാറ്റങ്ങളുടെ പട്ടികയിൽ ചെറിയ തിരുത്തുകൾ പ്രദർശിപ്പിക്കാതിരിക്കുക", - "tog-hidepatrolled": "റോന്തുചുറ്റിയ തിരുത്തുകൾ പുതിയമാറ്റങ്ങളിൽ പ്രദർശിപ്പിക്കാതിരിക്കുക", - "tog-newpageshidepatrolled": "റോന്തുചുറ്റപ്പെട്ട താളുകൾ പുതിയതാളുകളുടെ പട്ടികയിൽ പ്രദർശിപ്പിക്കാതിരിക്കുക", + "tog-hideminor": "പുതിയ മാറ്റങ്ങളുടെ പട്ടികയിൽ ചെറിയ തിരുത്തുകൾ മറയ്ക്കുക", + "tog-hidepatrolled": "റോന്തുചുറ്റിയ തിരുത്തുകൾ പുതിയമാറ്റങ്ങളിൽ മറയ്ക്കുക", + "tog-newpageshidepatrolled": "റോന്തുചുറ്റപ്പെട്ട താളുകൾ പുതിയതാളുകളുടെ പട്ടികയിൽ മറയ്ക്കുക", "tog-hidecategorization": "താളുകളുടെ വർഗ്ഗീകരണം മറയ്ക്കുക", "tog-extendwatchlist": "ഏറ്റവും പുതിയവ മാത്രമല്ല, എല്ലാ മാറ്റങ്ങളും ദൃശ്യമാകുന്ന വിധത്തിൽ ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടിക വികസിപ്പിക്കുക.", "tog-usenewrc": "സമീപകാല മാറ്റങ്ങൾ, ശ്രദ്ധിക്കുന്നവയുടെ പട്ടിക എന്നീ താളുകളിൽ മാറ്റങ്ങൾ ഗണംതിരിക്കുക", @@ -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": "മാറ്റങ്ങൾ കാണിക്കുക", @@ -641,7 +647,6 @@ "explainconflict": "താങ്കൾ തിരുത്താൻ തുടങ്ങിയതിനു ശേഷം ഈ താൾ മറ്റാരോ തിരുത്തി സേവ് ചെയ്തിരിക്കുന്നു.\nമുകളിലുള്ള ടെക്സ്റ്റ് ഏരിയയിൽ നിലവിലുള്ള ഉള്ളടക്കം കാണിക്കുന്നു.\nതാങ്കൾ ഉള്ളടക്കത്തിൽ വരുത്തിയ മാറ്റങ്ങൾ താഴെയുള്ള ടെക്സ്റ്റ് ഏരിയയിൽ കാണിക്കുന്നു.\nതാങ്കളുടെ മാറ്റങ്ങൾ മുകളിലെ ടെക്സ്റ്റ് ഏരിയയിലേക്ക് സം‌യോജിപ്പിക്കുക.\nതാങ്കൾ '''സേവ് ചെയ്യുക''' എന്ന ബട്ടൺ അമർത്തുമ്പോൾ '''മുകളിലെ ടെക്സ്റ്റ് ഏരിയയിലുള്ള എഴുത്തുകൾ മാത്രമേ''' സേവ് ആവുകയുള്ളൂ.", "yourtext": "താങ്കൾ എഴുതി ചേർത്തത്", "storedversion": "മുമ്പേയുള്ള നാൾപതിപ്പ്", - "nonunicodebrowser": "'''മുന്നറിയിപ്പ്: താങ്കളുടെ ബ്രൗസർ യൂണീകോഡിനു സജ്ജമല്ല. താളുകൾ സുരക്ഷിതമായി തിരുത്താനുള്ള സൗകര്യം ഒരുക്കിയിട്ടുണ്ട്: ASCII അല്ലാത്ത അക്ഷരങ്ങൾ ഹെക്സാഡെസിമൽ കോഡായി തിരുത്തുവാനുള്ള പെട്ടിയിൽ പ്രത്യക്ഷപ്പെടുന്നതാണ്.'''", "editingold": "'''മുന്നറിയിപ്പ്: താങ്കൾ ഈ താളിന്റെ ഒരു പഴയ പതിപ്പാണ്‌ തിരുത്തുന്നത്. ഇപ്പോൾ താങ്കൾ വരുത്തിയ മാറ്റങ്ങൾ സേവ് ചെയ്താൽ ഈ പതിപ്പിനു ശേഷം വന്ന മാറ്റങ്ങളെല്ലാം നഷ്ടമാകും.'''", "yourdiff": "വ്യത്യാസങ്ങൾ", "copyrightwarning": "{{SITENAME}} സംരംഭത്തിൽ എഴുതപ്പെടുന്ന ലേഖനങ്ങളെല്ലാം $2 പ്രകാരം സ്വതന്ത്രമാണ് (വിശദാംശങ്ങൾക്ക് $1 കാണുക). താങ്കൾ എഴുതുന്ന ലേഖനം തിരുത്തപ്പെടുന്നതിലോ ഒഴിവാക്കപ്പെടുന്നതിലോ എതിർപ്പുണ്ടെങ്കിൽ ദയവായി ലേഖനമെഴുതാതിരിക്കുക.\n\nഈ ലേഖനം താങ്കൾത്തന്നെ എഴുതിയതാണെന്നും അതല്ലെങ്കിൽ പകർപ്പവകാശനിയമങ്ങളുടെ പരിധിയിലില്ലാത്ത ഉറവിടങ്ങളിൽനിന്ന് പകർത്തിയതാണെന്നും ഉറപ്പാക്കുക.\n\n'''പകർപ്പവകാശ സംരക്ഷണമുള്ള സൃഷ്ടികൾ ഒരു കാരണവശാലും ഇവിടെ പ്രസിദ്ധീകരിക്കരുത്.'''", @@ -668,7 +673,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 +1219,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": "യന്ത്രം", @@ -1695,6 +1701,7 @@ "apisandbox-results": "ഫലം", "apisandbox-request-url-label": "അഭ്യർത്ഥനാ യൂ.ആർ.എൽ.:", "apisandbox-request-time": "നടപ്പിലാക്കാൻ എടുത്ത സമയം: $1", + "apisandbox-continue-clear": "ശൂന്യമാക്കുക", "booksources": "പുസ്തക സ്രോതസ്സുകൾ", "booksources-search-legend": "പുസ്തകസ്രോതസ്സുകൾക്കായി തിരയുക", "booksources-isbn": "ഐ.എസ്.ബി.എൻ.:", @@ -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/ms.json b/languages/i18n/ms.json index 508c79ecdb..3145b9a1ba 100644 --- a/languages/i18n/ms.json +++ b/languages/i18n/ms.json @@ -23,7 +23,8 @@ "Matma Rex", "Nemo bis", "Mbrt", - "Muhdnurhidayat" + "Muhdnurhidayat", + "Jeluang Terluang" ] }, "tog-underline": "Garis bawah pautan:", @@ -169,13 +170,7 @@ "anontalk": "Perbincangan", "navigation": "Pandu arah", "and": " dan", - "qbfind": "Cari", - "qbbrowse": "Semak imbas", - "qbedit": "Sunting", - "qbpageoptions": "Laman ini", - "qbmyoptions": "Laman-laman saya", "faq": "Soalan Lazim", - "faqpage": "Project:Soalan Lazim", "actions": "Tindakan", "namespaces": "Ruang nama", "variants": "Kelainan", @@ -185,7 +180,7 @@ "tagline": "Daripada {{SITENAME}}.", "help": "Bantuan", "search": "Cari", - "search-ignored-headings": " #
    \n# Tajuk yang akan diabaikan oleh pencarian.\n# Suntingannya diperlakukan sebaik sahaja laman yang bertajuk ini diindekskan.\n# Anda boleh memaksakan pengindeksan semula laman dengan melakukan suntingan nol (null edit).\n# Sintaks adalah seperti berikut:\n#   * Semuanya dari aksara \"#\" ke hujung baris dikira komen.\n#   * Setiap baris tak kosong adalah tajuk yang setepatnya untuk diabaikan.\nRujukan\nPautan luar\nLihat juga\n #
    ", + "search-ignored-headings": " #
    \n# Tajuk yang akan diabaikan oleh pencarian.\n# Suntingannya diperlakukan sebaik sahaja laman yang bertajuk ini diindekskan.\n# Anda boleh memaksakan pengindeksan semula laman dengan melakukan suntingan nol (null edit).\n# Sintaks adalah seperti berikut:\n#   * Semuanya dari aksara \"#\" ke hujung baris dikira komen.\n#   * Setiap baris tak kosong ialah tajuk yang setepatnya untuk diabaikan.\nRujukan\nPautan luar\nLihat juga\n #
    ", "searchbutton": "Cari", "go": "Pergi", "searcharticle": "Pergi", @@ -202,32 +197,22 @@ "edit-local": "Sunting huraian tempatan", "create": "Cipta", "create-local": "Tambahkan huraian tempatan", - "editthispage": "Sunting laman ini", - "create-this-page": "Cipta laman ini", "delete": "Hapus", - "deletethispage": "Hapuskan laman ini", - "undeletethispage": "Nyahhapuskan laman ini", "undelete_short": "Nyahhapus {{PLURAL:$1|satu suntingan|$1 suntingan}}", "viewdeleted_short": "Lihat {{PLURAL:$1|satu|$1}} suntingan dihapuskan", "protect": "Lindung", "protect_change": "ubah", - "protectthispage": "Lindungi laman ini", "unprotect": "Ubah perlindungan", - "unprotectthispage": "Ubah tahap perlindungan laman ini", "newpage": "Laman baru", - "talkpage": "Bincangkan laman ini", "talkpagelinktext": "Perbincangan", "specialpage": "Laman khas", "personaltools": "Alatan peribadi", - "articlepage": "Lihat laman kandungan", "talk": "Perbincangan", "views": "Rupa", "toolbox": "Peralatan", "tool-link-userrights": "Tukar kumpulan {{GENDER:$1|pengguna}}", "tool-link-userrights-readonly": "Lihat kumpulan {{GENDER:$1|pengguna}}", "tool-link-emailuser": "Email {{GENDER:$1|pengguna}} ini", - "userpage": "Lihat laman pengguna", - "projectpage": "Lihat laman projek", "imagepage": "Lihat laman fail", "mediawikipage": "Lihat laman pesanan", "templatepage": "Lihat laman templat", @@ -443,7 +428,7 @@ "userlogin-resetpassword-link": "Lupa kata laluan anda?", "userlogin-helplink2": "Bantuan untuk log masuk", "userlogin-loggedin": "Anda sudah log masuk sebagai {{GENDER:$1|$1}}. Gunakan borang di bawah untuk log masuk sebagai pengguna lain.", - "userlogin-reauth": "Anda mesti log masuk sekali lagi untuk mengesahkan bahawa anda adalah {{GENDER:$1|$1}}.", + "userlogin-reauth": "Anda mesti log masuk sekali lagi untuk mengesahkan bahawa anda ialah {{GENDER:$1|$1}}.", "userlogin-createanother": "Buka satu lagi akaun", "createacct-emailrequired": "Alamat e-mel", "createacct-emailoptional": "Alamat e-mel (pilihan)", @@ -477,7 +462,7 @@ "noname": "Nama pengguna tidak sah.", "loginsuccesstitle": "Berjaya melog masuk", "loginsuccess": "'''Anda telah log masuk ke dalam {{SITENAME}} sebagai \"$1\".'''", - "nosuchuser": "Tiada pengguna yang menggunakan nama \"$1\".\nNama pengguna adalah kes sensitif.\nSemak ejaan anda, atau sila [[Special:CreateAccount|membuka akaun baru]].", + "nosuchuser": "Tiada pengguna yang menggunakan nama \"$1\".\nNama pengguna adalah sesitif huruf.\nSemak ejaan anda, atau sila [[Special:CreateAccount|membuka akaun baru]].", "nosuchusershort": "Pengguna \"$1\" tidak wujud. Sila semak ejaan anda.", "nouserspecified": "Sila nyatakan nama pengguna.", "login-userblocked": "Pengguna ini disekat. Log masuk tidak dibenarkan.", @@ -559,7 +544,7 @@ "botpasswords-updated-body": "Kata laluan bot untuk nama bot \"$1\" bagi pengguna \"$2\" telah dikemaskini.", "botpasswords-deleted-title": "Kata laluan bot telah dipadam", "botpasswords-deleted-body": "Kata laluan bot untuk nama bot \"$1\" bagi pengguna \"$2\" telah dipadam.", - "botpasswords-newpassword": "Kata laluan baru untuk log masuk dengan $1 adalah $2. Sila catatkan ini untuk rujukan masa depan.
    (Untuk bots lama yang memerlukan nama log masuk untuk menjadi sama dengan nama pengguna akhirnya, anda juga boleh menggunakan $3 sebagai nama pengguna dan $4 sebagai kata laluan.)", + "botpasswords-newpassword": "Kata laluan baru untuk log masuk dengan $1 adalah $2. Sila catatkan ini untuk rujukan masa depan.
    (Untuk bot-bot lama yang memerlukan nama log masuk agar sama dengan nama pengguna akhirnya, anda juga boleh menggunakan $3 sebagai nama pengguna dan $4 sebagai kata laluan.)", "botpasswords-no-provider": "BotPasswordsSessionProvider tidak tersedia.", "botpasswords-restriction-failed": "Bot sekatan kata laluan menghalang log masuk ini.", "botpasswords-invalid-name": "Nama pengguna yang dinyatakan tidak mengandungi pemisah kata laluan bot (\"$1\").", @@ -627,7 +612,7 @@ "hr_tip": "Garis melintang (gunakan dengan hemat)", "summary": "Ringkasan:", "subject": "Perkara:", - "minoredit": "Ini adalah suntingan kecil", + "minoredit": "Ini ialah suntingan kecil", "watchthis": "Pantau laman ini", "savearticle": "Paparkan Laman", "publishpage": "Terbitkan", @@ -635,7 +620,7 @@ "preview": "Pralihat", "showpreview": "Paparkan pralihat", "showdiff": "Lihat perubahan", - "blankarticle": "Amaran: Laman yang anda sedang menciptakan adalah kosong.\nJika akan menklik \"$1\" sekali lagi, laman ini akan diciptakan tanpa sebarang kandungan.", + "blankarticle": "Amaran: Laman yang sedang anda ciptakan adalah kosong.\nJika anda menklik \"$1\" sekali lagi, laman ini akan diciptakan tanpa sebarang kandungan.", "anoneditwarning": "Amaran: Anda tidak log masuk. Alamat IP anda akan disiarkan kepada umum jika anda membuat sebarang suntingan. Jika anda [$1 log masuk] atau [$2 membuka akaun], suntingan anda akan diatribusikan kepada nama pengguna anda di samping manfaat-manfaat lain.", "anonpreviewwarning": "''Anda belum log masuk. Jika anda menyimpan laman ini, alamat IP anda akan direkodkan dalam sejarah penyuntingan laman ini.''", "missingsummary": "'''Peringatan:''' Anda tidak menyatakan ringkasan suntingan. Klik '''Simpan''' sekali lagi untuk menyimpan suntingan ini tanpa ringkasan.", @@ -660,7 +645,7 @@ "accmailtext": "Kata laluan janaan rawak untuk [[User talk:$1|$1]] telah dikirim kepada $2. Anda boleh menukarnya di halaman ''[[Special:ChangePassword|tukar kata laluan]]'' sebaik sahaja log masuk.", "newarticle": "(Baru)", "newarticletext": "Anda telah mengikuti pautan ke laman yang belum wujud.\nUntuk mencipta laman ini, sila taip dalam kotak di bawah\n(lihat [$1 laman bantuan] untuk maklumat lanjut).\nJika anda tiba di sini secara tak sengaja, hanya klik butang '''back''' pada pelayar anda.", - "anontalkpagetext": "----''Ini ialah laman perbincangan bagi pengguna tanpa nama yang belum membuka akaun atau tidak log masuk.\nOleh itu kami terpaksa menggunakan alamat IP untuk mengenal pasti pengguna tersebut. Alamat IP ini boleh dikongsi oleh ramai pengguna.\nSekiranya anda adalah seorang pengguna tanpa nama dan berasa bahawa komen yang tidak kena mengena telah ditujukan kepada anda, sila [[Special:CreateAccount|buka akaun baru]] atau [[Special:UserLogin|log masuk]] untuk mengelakkan sebarang kekeliruan dengan pengguna tanpa nama yang lain.''", + "anontalkpagetext": "----''Ini ialah laman perbincangan bagi pengguna tanpa nama yang belum membuka akaun atau tidak log masuk.\nOleh itu, kami terpaksa menggunakan alamat IP untuk mengenal pasti pengguna tersebut. Alamat IP ini boleh dikongsi oleh ramai pengguna.\nSekiranya anda ialah seorang pengguna tanpa nama dan berasa bahawa komen yang tidak kena-mengena telah ditujukan kepada anda, sila [[Special:CreateAccount|buka akaun baru]] atau [[Special:UserLogin|log masuk]] untuk mengelakkan sebarang kekeliruan dengan pengguna tanpa nama yang lain.''", "noarticletext": "Laman ini buat masa sekarang tidak berteks. Anda boleh [[Special:Search/{{PAGENAME}}|cari tajuk bagi laman ini]] dalam laman-laman lain, [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} cari log-log yang berkaitan], atau [{{fullurl:{{FULLPAGENAME}}|action=edit}} sunting laman ini].", "noarticletext-nopermission": "Tiada teks dalam laman ini ketika ini.\nAnda boleh [[Special:Search/{{PAGENAME}}|mencari tajuk laman ini]] dalam laman lain,\natau [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} mencari log yang berkaitan].", "missing-revision": "Semakan #$1 pada halaman \"{{FULLPAGENAME}}\" tidak wujud.\n\nHal ini biasanya disebabkan oleh pautan sejarah yang lapuk ke halaman yang sudah dihapuskan.\nButirannya boleh didapati di [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log penghapusan].", @@ -695,8 +680,8 @@ "nonunicodebrowser": "'''AMARAN: Pelayar anda tidak mematuhi Unicode. Aksara-aksara bukan ASCII akan dipaparkan dalam kotak sunting sebagai kod perenambelasan.'''", "editingold": "'''AMARAN: Anda sedang\nmenyunting sebuah semakan yang sudah ketinggalan zaman.\nJika anda menyimpannya, sebarang perubahan yang dibuat selepas tarikh semakan ini akan hilang.'''", "yourdiff": "Perbezaan", - "copyrightwarning": "Sila ambil perhatian bahawa semua sumbangan kepada {{SITENAME}} akan dikeluarkan di bawah $2 (lihat $1 untuk butiran lanjut). Jika anda tidak mahu tulisan anda disunting sewenang-wenangnya oleh orang lain dan diedarkan secara bebas, maka jangan kirim di sini.
    \nAnda juga berjanji bahawa ini adalah hasil kerja tangan anda sendiri, atau disalin daripada domain awam atau mana-mana sumber bebas lain.\n'''JANGAN KIRIM KARYA HAK CIPTA ORANG LAIN TANPA KEBENARAN!'''", - "copyrightwarning2": "Sila ambil perhatian bahawa semua sumbangan terhadap {{SITENAME}} boleh disunting, diubah, atau dipadam oleh penyumbang lain. Jika anda tidak mahu tulisan anda disunting sewenang-wenangnya, maka jangan kirim di sini.
    \nAnda juga berjanji bahawa ini adalah hasil kerja tangan anda sendiri, atau\ndisalin daripada domain awam atau mana-mana sumber bebas lain (lihat $1 untuk butiran lanjut).\n'''JANGAN KIRIM KARYA HAK CIPTA ORANG LAIN TANPA KEBENARAN!'''", + "copyrightwarning": "Sila ambil perhatian bahawa semua sumbangan kepada {{SITENAME}} akan dikeluarkan di bawah $2 (lihat $1 untuk butiran lanjut). Jika anda tidak mahu tulisan anda disunting sewenang-wenangnya oleh orang lain dan diedarkan secara bebas, maka jangan kirim di sini.
    \nAnda juga berjanji bahawa ini ialah hasil kerja tangan anda sendiri, atau disalin daripada domain awam atau mana-mana sumber bebas lain.\n'''JANGAN KIRIM KARYA HAK CIPTA ORANG LAIN TANPA KEBENARAN!'''", + "copyrightwarning2": "Sila ambil perhatian bahawa semua sumbangan terhadap {{SITENAME}} boleh disunting, diubah, atau dipadam oleh penyumbang lain. Jika anda tidak mahu tulisan anda disunting sewenang-wenangnya, maka jangan kirim di sini.
    \nAnda juga berjanji bahawa ini ialah hasil kerja tangan anda sendiri, atau\ndisalin daripada domain awam atau mana-mana sumber bebas lain (lihat $1 untuk butiran lanjut).\n'''JANGAN KIRIM KARYA HAK CIPTA ORANG LAIN TANPA KEBENARAN!'''", "editpage-cannot-use-custom-model": "Model kandungan laman ini tidak boleh diubah.", "longpageerror": "'''Ralat: Teks yang anda serahkan itu panjangnya {{PLURAL:$1|1|$1}} kilobait, iaitu lebih panjang daripada had maksimum {{PLURAL:$2|1|$2}} kilobait.'''\nOleh itu, ia tidak boleh disimpan.", "readonlywarning": "'''Amaran: Pangkalan data ini dikunci untuk tujuan penyelenggaraan , maka anda tidak akan dapat menyimpan suntingan anda buat sekarang.'''\nAnda boleh menyalin tampal teks anda pada fail teks dan menyimpannya untuk lain kali.\n\nPenyelia yang menguncinya memberikan penjelasan ini: $1", @@ -854,7 +839,7 @@ "revdel-restore": "Tukar kebolehnampakan", "pagehist": "Sejarah laman", "deletedhist": "Sejarah yang dihapuskan", - "revdelete-hide-current": "Ralat menyembunyikan item bertarikh $2, $1: ini adalah versi semasa.\nIa tidak dapat disembunyikan.", + "revdelete-hide-current": "Ralat menyembunyikan item bertarikh $2, $1: Ini ialah versi semasa.\nIa tidak dapat disembunyikan.", "revdelete-show-no-access": "Ralat menunjukkan item bertarikh $2, $1: item ini telah ditanda \"larangan\".\nAnda tidak memiliki capaian padanya.", "revdelete-modify-no-access": "Ralat menyunting item bertarikh $2, $1: item ini telah ditanda \"larangan\".\nAnda tidak memiliki capaian padanya.", "revdelete-modify-missing": "Ralat menyunting item ID $1: ia tiada dalam pangkalan data!", @@ -867,7 +852,7 @@ "revdelete-edit-reasonlist": "Ubah sebab-sebab hapus", "revdelete-offender": "Pengarang semakan:", "suppressionlog": "Log penahanan", - "suppressionlogtext": "Berikut adalah senarai penghapusan dan sekatan yang melibatkan kandungan yang telah disembunyikan daripada penyelia.\nLihat [[Special:BlockList|senarai sekatan]] untuk senarai larangan dan sekatan semasa.", + "suppressionlogtext": "Berikut ialah senarai penghapusan dan sekatan yang melibatkan kandungan yang telah disembunyikan daripada penyelia.\nLihat [[Special:BlockList|senarai sekatan]] untuk senarai larangan dan sekatan semasa.", "mergehistory": "Gabungkan sejarah laman", "mergehistory-header": "Anda boleh menggabungkan semua semakan dalam sejarah bagi sesebuah laman sumber ke dalam laman lain.\nSila pastikan bahawa perubahan ini akan mengekalkan kesinambungan sejarah laman.\n\n'''Setidak-tidaknya semakan semasa bagi laman sumber akan ditinggalkan.'''", "mergehistory-box": "Gabungkan semakan bagi dua laman:", @@ -1045,7 +1030,7 @@ "prefs-help-gender": "Pilihan: Digunakan oleh perisian ini untuk merujuk jantina anda dengan betul. Maklumat ini akan didedahkan kepada awam.", "email": "E-mel", "prefs-help-realname": "Nama sebenar adalah tidak wajib.\n\nJika dinyatakan, ia akan digunakan untuk mengiktiraf karya anda.", - "prefs-help-email": "Alamat e-mail adalah tidak wajib, tapi diperlukan untuk set semula kata laluan jika anda terlupa kata laluan anda.", + "prefs-help-email": "Alamat e-mel adalah tidak wajib, tapi diperlukan untuk set semula kata laluan jika anda terlupa kata laluan anda.", "prefs-help-email-others": "Anda juga boleh memilih untuk membolehkan pengguna lain menghubungi anda melalui e-mel melalui sebuah pautan pada laman pengguna atau perbincangan anda.\nAlamat e-mel anda tidak didedahkan apabila pengguna lain menghubungi anda.", "prefs-help-email-required": "Alamat e-mel adalah wajib.", "prefs-info": "Maklumat asas", @@ -1077,7 +1062,7 @@ "saveusergroups": "Simpan Kumpulan Pengguna", "userrights-groupsmember": "Ahli bagi:", "userrights-groupsmember-auto": "Ahli automatik bagi:", - "userrights-groups-help": "Anda boleh mengubah keahlian kumpulan bagi pengguna ini:\n* Petak yang bertanda bererti pengguna tersebut adalah ahli kumpulan itu.\n* Petak yang tidak bertanda bererti bahawa pengguna tersebut bukan ahli kumpulan itu.\n* Tanda bintang (*) menandakan bahawa anda tidak boleh melucutkan keahlian pengguna tersebut setelah anda melantiknya, dan begitulah sebaliknya.", + "userrights-groups-help": "Anda boleh mengubah keahlian kumpulan bagi pengguna ini:\n* Petak yang bertanda bererti pengguna tersebut ialah ahli kumpulan itu.\n* Petak yang tidak bertanda bererti bahawa pengguna tersebut bukan ahli kumpulan itu.\n* Tanda bintang (*) menandakan bahawa anda tidak boleh melucutkan keahlian pengguna tersebut setelah anda melantiknya, dan begitulah sebaliknya.", "userrights-reason": "Sebab:", "userrights-no-interwiki": "Anda tidak mempunyai keizinan untuk mengubah hak-hak pengguna di wiki lain.", "userrights-nodatabase": "Pangkalan data $1 tiada atau bukan tempatan.", @@ -1242,7 +1227,7 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (lihat juga [[Special:NewPages|senarai laman baru]])", "rcfilters-filter-pageedits-description": "Suntingan kandungan wiki, perbincangan, huraian kategori…", "rcfilters-filter-logactions-description": "Tindakan pentadbiran, pembuatan akaun, penghapusan halaman, muat naik…", - "rcnotefrom": "Yang berikut adalah {{PLURAL:$5|suntingan|suntingan-suntingan}} sejak $3, $4 (selebihi $1 dipaparkan).", + "rcnotefrom": "Yang berikut ialah {{PLURAL:$5|suntingan|suntingan-suntingan}} sejak $3, $4 (selebihi $1 dipaparkan).", "rclistfrom": "Paparkan perubahan sejak $3 $2", "rcshowhideminor": "$1 suntingan kecil", "rcshowhideminor-show": "Paparkan", @@ -1326,8 +1311,8 @@ "filetype-mime-mismatch": "Sambungan fail \".$1\" tidak padan dengan jenis MIME fail ($2).", "filetype-badmime": "Memuat naik fail jenis MIME \"$1\" adalah tidak dibenarkan.", "filetype-bad-ie-mime": "Fail ini tidak boleh dimuat naik kerana Internet Explorer mengesannya sebagai fail jenis \"$1\" yang tidak dibenarkan dan berbahaya.", - "filetype-unwanted-type": "'''\".$1\"''' adalah jenis fail yang tidak dikehendaki. {{PLURAL:$3|Jenis|Jenis-jenis}} fail yang diutamakan ialah $2.", - "filetype-banned-type": "'''\".$1\"''' adalah {{PLURAL:$4|jenis|jenis-jenis}} fail yang dilarang. {{PLURAL:$3|Jenis|Jenis-jenis}} fail yang dibenarkan ialah $2.", + "filetype-unwanted-type": "'''\".$1\"''' ialah jenis fail yang tidak dikehendaki. {{PLURAL:$3|Jenis|Jenis-jenis}} fail yang diutamakan ialah $2.", + "filetype-banned-type": "\".$1\" ialah {{PLURAL:$4|jenis|jenis-jenis}} fail yang dilarang. {{PLURAL:$3|Jenis|Jenis-jenis}} fail yang dibenarkan ialah $2.", "filetype-missing": "Fail ini tidak mempunyai sambungan (contohnya \".jpg\").", "empty-file": "Fail yang anda serahkan adalah kosong.", "file-too-large": "Fail yang anda serahkan adalah terlalu besar.", @@ -1347,11 +1332,11 @@ "fileexists": "Sebuah fail dengan nama ini sudah wujud. Sila semak [[:$1]] sekiranya {{GENDER:|anda}} tidak pasti jika anda mahu menukarnya.\n[[$1|thumb]]", "filepageexists": "Laman penerangan untuk fail ini telah pun dicipta di [[:$1]], tetapi tiada fail dengan nama ini wujud.\nRingkasan yang anda masukkan tidak akan muncul di laman penerangan tersebut. Untuk memastikannya muncul, anda perlu menyuntingnya secara manual.\n[[$1|thumb]]", "fileexists-extension": "Sebuah fail dengan nama yang serupa sudah wujud: [[$2|thumb]]\n* Nama fail yang hendak dimuat naik: [[:$1]]\n* Nama fail yang sudah sedia ada: [[:$2]]\nAdakah anda mungkin mahu menggunakan nama yang lebih tersendiri?", - "fileexists-thumbnail-yes": "Fail ini kelihatan seperti sebuah imej yang telah dikecilkan ''(gambar kenit)''. [[$1|thumb]]\nSila semak fail [[:$1]].\nJika fail yang disemak itu adalah sama dengan yang saiz asal, maka anda tidak perlu memuat naik gambar kenit tambahan.", - "file-thumbnail-no": "Nama fail ini bermula dengan $1.\nBarangkali ia adalah sebuah imej yang telah dikecilkan ''(gambar kenit)''.\nJika anda memiliki imej ini dalam leraian penuh, sila muat naik fail tersebut. Jika tidak, sila tukar nama fail ini.", + "fileexists-thumbnail-yes": "Fail ini kelihatan seperti sebuah imej yang telah dikecilkan (gambar kenit).\n[[$1|thumb]]\nSila semak fail [[:$1]].\nJika fail yang disemak itu adalah sama dengan yang saiz asal, maka anda tidak perlu memuat naik gambar kenit tambahan.", + "file-thumbnail-no": "Nama fail ini bermula dengan $1.\nBarangkali ia ialah sebuah imej yang telah dikecilkan (gambar kenit).\nJika anda memiliki imej ini dalam leraian penuh, sila muat naik fail tersebut. Jika tidak, sila tukar nama fail ini.", "fileexists-forbidden": "Sebuah fail dengan nama ini telah pun wujud, dan tidak boleh ditulis ganti. Jika anda masih mahu memuat naik fail ini, sila berundur dan muat naik fail ini dengan nama lain. [[File:$1|thumb|center|$1]]", "fileexists-shared-forbidden": "Sebuah fail dengan nama ini telah pun wujud dalam gedung fail kongsi. Jika anda masih mahu memuat naik fail ini, sila kembali ke borang muat naik dan gunakan nama lain. [[File:$1|thumb|center|$1]]", - "file-exists-duplicate": "Fail ini adalah salinan bagi {{PLURAL:$1|fail|fail-fail}} berikut:", + "file-exists-duplicate": "Fail ini ialah salinan bagi {{PLURAL:$1|fail|fail-fail}} berikut:", "file-deleted-duplicate": "Sebuah fail yang serupa dengan fail ini ([[:$1]]) telah pun dihapuskan sebelum ini. Anda seharusnya memeriksa sejarah penghapusan fail itu terlebih dahulu sebelum memuat naiknya sekali lagi.", "file-deleted-duplicate-notitle": "Satu fail yang seiras dengan fail ini telah dihapuskan dahulu, maka judulnya telah disekat. Anda harus meminta sesiapa yang boleh melihat data fail yang disekat untuk meneliti situasinya sebelum cuba memuat naiknya semula.", "uploadwarning": "Amaran muat naik", @@ -1453,8 +1438,8 @@ "lockmanager-fail-svr-release": "Selak-selak tidak dapat dikeluarkan di pelayan $1.", "zip-file-open-error": "Wujud ralat ketika membuka fail untuk pemeriksaan ZIP.", "zip-wrong-format": "Fail yang dinyatakan bukan fail ZIP.", - "zip-bad": "Fail ini adalah fail ZIP rosak atau tidak dapat dibaca.\nIa tidak dapat diperiksa dengan betul demi keselamatan.", - "zip-unsupported": "Fail ini adalah fail ZIP yang menggunakan ciri-ciri ZIP tidak disokong oleh MediaWiki. \nIa tidak dapat diperiksa dengan betul demi keselamatan.", + "zip-bad": "Fail ini ialah fail ZIP rosak atau tidak dapat dibaca.\nIa tidak dapat diperiksa dengan betul demi keselamatan.", + "zip-unsupported": "Fail ini ialah fail ZIP yang menggunakan ciri-ciri ZIP tidak disokong oleh MediaWiki. \nIa tidak dapat diperiksa dengan betul demi keselamatan.", "uploadstash": "Stor muat naik", "uploadstash-summary": "Laman ini menyediakan capaian kepada fail-fail yang dimuat naik (atau sedang dimuat naik) tapi belum diterbitkan ke dalam wiki. Fail-fail ini tidak dapat dilihat oleh sesiapa melainkan pengguna yang memuatnaiknya.", "uploadstash-clear": "Bersihkan fail-fail sorokan", @@ -1529,7 +1514,7 @@ "nolinkstoimage": "Tiada laman yang mengandungi pautan ke fail ini.", "morelinkstoimage": "Lihat [[Special:WhatLinksHere/$1|semua pautan]] ke fail ini.", "linkstoimage-redirect": "$1 (lencongan fail) $2", - "duplicatesoffile": "{{PLURAL:$1|Fail|$1 buah fail}} berikut adalah salinan bagi fail ini ([[Special:FileDuplicateSearch/$2|butiran lanjut]]):", + "duplicatesoffile": "{{PLURAL:$1|Fail|$1 buah fail}} berikut ialah salinan bagi fail ini ([[Special:FileDuplicateSearch/$2|butiran lanjut]]):", "sharedupload": "Fail ini daripada $1 dan boleh digunakan oleh projek lain.", "sharedupload-desc-there": "Fail ini dari $1 dan mungkin digunakan oleh projek lain.\nSila lihat [$2 laman penerangan fail] untuk maklumat lanjut.", "sharedupload-desc-here": "Fail ini dari $1 dan mungkin digunakan oleh projek lain.\nPenerangan pada [$2 laman penerangan failnya] di sana ditunjukkan di bawah.", @@ -1767,7 +1752,7 @@ "activeusers-from": "Tunjukkan pengguna bermula pada:", "activeusers-noresult": "Tiada pengguna dijumpai.", "listgrouprights": "Hak kumpulan pengguna", - "listgrouprights-summary": "Berikut adalah senarai kumpulan pengguna yang ditubuhkan di wiki ini, dengan hak-hak mereka masing-masing.\nMungkin terdapat [[{{MediaWiki:Listgrouprights-helppage}}|maklumat tambahan]] mengenai setiap hak.", + "listgrouprights-summary": "Berikut ialah senarai kumpulan pengguna yang ditubuhkan di wiki ini, dengan hak-hak mereka masing-masing.\nMungkin terdapat [[{{MediaWiki:Listgrouprights-helppage}}|maklumat tambahan]] mengenai setiap hak.", "listgrouprights-key": "Petunjuk:\n* Hak ditunaikan\n* Hak dibatalkan", "listgrouprights-group": "Kumpulan", "listgrouprights-rights": "Hak", @@ -1790,7 +1775,7 @@ "trackingcategories-name": "Nama pesanan", "trackingcategories-desc": "Kriteria kemasukan kategori", "noindex-category-desc": "Laman tidak didaftar oleh robot kerana ia mempunyai kata ajaib __NOINDEX__ padanya dan terdapat dalam ruang nama di mana tanda tersebut adalah dibenarkan.", - "index-category-desc": "Laman mempunyai __INDEX__ padanya (dan terdapat dalam ruang nama di mana tanda tersebut dibenarkan), dan oleh itu adalah didaftar oleh robot di mana ia biasanya tidak akan.", + "index-category-desc": "Laman mempunyai __INDEX__ padanya (dan terdapat dalam ruang nama di mana tanda tersebut dibenarkan), dan oleh itu ia didaftar oleh robot bilamana ia biasanya tidak akan didaftar.", "post-expand-template-inclusion-category-desc": "Saiz laman melebihi $wgMaxArticleSize setelah semua templat telah dikembangkan; oleh itu beberapa templat tidak dikembangkan.", "post-expand-template-argument-category-desc": "Laman menjadi lebih besar daripada $wgMaxArticleSize setelah mengembangkan sebuah hujah templat (sebarang dalam tiga kurungan, seperti {{{Foo}}}.)", "expensive-parserfunction-category-desc": "Laman menggunakan terlalu banyak fungsi parser yang mahal (seperti #ifexist). Lihat [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].", @@ -1909,7 +1894,7 @@ "rollbacklinkcount": "mengundurkan $1 {{PLURAL:$1|suntingan}}", "rollbacklinkcount-morethan": "mengundurkan lebih daripada $1 {{PLURAL:$1|suntingan}}", "rollbackfailed": "Pengunduran gagal", - "cantrollback": "Suntingan tersebut tidak dapat dibalikkan: penyumbang terakhir adalah satu-satunya pengarang bagi rencana ini.", + "cantrollback": "Suntingan tersebut tidak dapat dibalikkan: penyumbang terakhir ialah satu-satunya pengarang bagi rencana ini.", "alreadyrolled": "Suntingan terakhir bagi [[:$1]] oleh [[Pengguna:$2|$2]] ([[Perbincangan pengguna:$2|bincang]]{{int:pipe-separator}}[[Khas:Sumbangan/$2|{{int:contribslink}}]]) tidak dapat dibalikkan; seorang pengguna lain sudahpun menyunting atau membalikkan laman itu.\n\nSuntingan terakhir kepada laman ini telah dibuat oleh [[Pengguna:$3|$3]] ([[Perbincangan pengguna:$3|bincang]]{{int:pipe-separator}}[[Khas:Sumbangan/$3|{{int:contribslink}}]]).", "editcomment": "Ringkasan sutingan: $1.", "revertpage": "Membalikkan suntingan oleh [[Special:Contributions/$2|$2]] ([[User talk:$2|Perbincangan]]) kepada versi terakhir oleh [[User:$1|$1]]", @@ -1947,9 +1932,9 @@ "protect_expiry_old": "Waktu tamat telah berlalu.", "protect-unchain-permissions": "Aktifkan pilihan perlindungan selanjutnya", "protect-text": "Anda boleh melihat dan menukar peringkat perlindungan bagi laman '''$1'''.", - "protect-locked-blocked": "Anda telah disekat, justeru tidak boleh menukar peringkat perlindungan.\nIni adalah tetapan semasa bagi laman '''$1''':", - "protect-locked-dblock": "Anda tidak boleh menukar peringkat perlindungan kerana pangkalan data sedang dikunci.\nIni adalah tetapan semasa bagi laman '''$1''':", - "protect-locked-access": "Anda tidak mempunyai keizinan untuk menukar peringkat perlindungan.\nIni adalah tetapan semasa bagi laman '''$1''':", + "protect-locked-blocked": "Anda telah disekat, justeru tidak boleh menukar peringkat perlindungan.\nIni ialah tetapan semasa bagi laman '''$1''':", + "protect-locked-dblock": "Anda tidak boleh menukar peringkat perlindungan kerana pangkalan data sedang dikunci.\nIni ialah tetapan semasa bagi laman '''$1''':", + "protect-locked-access": "Anda tidak mempunyai keizinan untuk menukar peringkat perlindungan.\nIni ialah tetapan semasa bagi laman '''$1''':", "protect-cascadeon": "Laman ini dilindungi kerana ia terkandung dalam {{PLURAL:$1|laman|laman-laman}} berikut, yang dilindungi secara melata. Penukaran peringkat perlindungan laman ini tidak akan menjejaskan perlindungan melata tersebut.", "protect-default": "Benarkan semua pengguna", "protect-fallback": "Benarkan pengguna yang berizin \"$1\" sahaja", @@ -2139,13 +2124,13 @@ "change-blocklink": "ubah sekatan", "contribslink": "sumb.", "emaillink": "hantar e-mel", - "autoblocker": "Disekat secara automatik kerana alamat IP anda baru digunakan oleh \"[[User:$1|$1]]\". Sebab yang diberi adalah: \"$2\"", + "autoblocker": "Disekat secara automatik kerana alamat IP anda baru digunakan oleh \"[[User:$1|$1]]\". Sebab yang diberi ialah: \"$2\"", "blocklogpage": "Log sekatan", "blocklog-showlog": "Pengguna ini pernah disekat sebelum ini. Log sekatan disediakan di bawah sebagai rujukan:", "blocklog-showsuppresslog": "Pengguna ini pernah disekat dan tersembunyi sebelum ini.\nLog sekatan disediakan di bawah sebagai rujukan:", "blocklogentry": "menyekat [[$1]] sehingga $2 $3", "reblock-logentry": "menukar tetapan sekatan [[$1]] yang tamat pada $2 $3", - "blocklogtext": "Ini adalah log bagi tindakan menyekat dan menyahsekat pengguna.\nAlamat-alamat IP yang disekat secara automatik tidak disenaraikan di sini.\nSila lihat juga [[Special:BlockList|senarai sekatan]] untuk senarai larangan dan sekatan yang sedang berkuatkuasa.", + "blocklogtext": "Ini ialah log bagi tindakan menyekat dan menyahsekat pengguna.\nAlamat-alamat IP yang disekat secara automatik tidak disenaraikan di sini.\nSila lihat juga [[Special:BlockList|senarai sekatan]] untuk senarai larangan dan sekatan yang sedang berkuat kuasa.", "unblocklogentry": "menyahsekat $1", "block-log-flags-anononly": "pengguna tanpa nama sahaja", "block-log-flags-nocreate": "pembukaan akaun dimatikan", @@ -2170,7 +2155,7 @@ "proxyblockreason": "Alamat IP anda telah disekat kerana ia merupakan proksi terbuka.\nSila hubungi penyedia perkhidmatan Internet anda atau pihak sokongan teknikal dan beritahu mereka mengenai masalah keselamatan yang berat ini.", "sorbsreason": "Alamat IP anda telah disenaraikan sebagai proksi terbuka dalam DNSBL yang digunakan oleh {{SITENAME}}.", "sorbs_create_account_reason": "Alamat IP anda telah disenaraikan sebagai proksi terbuka dalam DNSBL yang digunakan oleh {{SITENAME}}. Oleh itu, anda tidak dibenarkan membuka akaun baru.", - "xffblockreason": "Alamat IP yang terdapat dalam pengepala X-Forwarded-For, sama ada milik anda ataupun pelayan proksi yang anda gunakan, telah disekat. Sebab asal sekatan adalah: $1", + "xffblockreason": "Alamat IP yang terdapat dalam pengepala X-Forwarded-For, sama ada milik anda ataupun pelayan proksi yang anda gunakan, telah disekat. Sebab asal sekatan ialah: $1", "cant-see-hidden-user": "Pengguna yang anda cuba sekat telahpun disekat dan tersorok.\nMemandangkan anda tidak mempunyai hak untuk menyorokkan pengguna, anda tidak boleh melihat atau menyunting sekatan pengguna tersebut.", "ipbblocked": "Anda tidak boleh menyekat atau menyahsekat pengguna lain kerana anda sendiri telah disekat", "ipbnounblockself": "Anda tidak dibenarkan menyahsekat diri sendiri", @@ -2390,7 +2375,7 @@ "tooltip-ca-nstab-main": "Lihat laman kandungan", "tooltip-ca-nstab-user": "Lihat laman pengguna", "tooltip-ca-nstab-media": "Lihat laman media", - "tooltip-ca-nstab-special": "Ini adalah laman khas yang tidak boleh disunting.", + "tooltip-ca-nstab-special": "Ini ialah laman khas yang tidak boleh disunting.", "tooltip-ca-nstab-project": "Lihat laman projek", "tooltip-ca-nstab-image": "Lihat laman imej", "tooltip-ca-nstab-mediawiki": "Lihat pesanan sistem", @@ -2569,7 +2554,7 @@ "saturday-at": "Sabtu $1", "sunday-at": "Ahad $1", "yesterday-at": "Semalam $1", - "bad_image_list": "Berikut adalah format yang digunakan:\n\nHanya item senarai (baris yang dimulakan dengan *) diambil kira. Pautan pertama pada sesebuah baris mestilah merupakan pautan ke sebuah imej rosak.\nSebarang pautan berikutnya pada baris yang sama dikira sebagai pengecualian (rencana yang dibenarkan disertakan imej).", + "bad_image_list": "Berikut ialah format yang digunakan:\n\nHanya item senarai (baris yang dimulakan dengan *) diambil kira. Pautan pertama pada sesebuah baris mestilah merupakan pautan ke sebuah imej rosak.\nSebarang pautan berikutnya pada baris yang sama dikira sebagai pengecualian (rencana yang dibenarkan disertakan imej).", "metadata": "Metadata", "metadata-help": "Fail ini mengandungi maklumat tambahan daripada kamera digital atau pengimbas yang digunakan untuk menghasilkannya. Jika fail ini telah diubah suai daripada rupa asalnya, beberapa butiran dalam maklumat ini mungkin sudah tidak relevan.", "metadata-expand": "Tunjukkan butiran penuh", @@ -3046,7 +3031,7 @@ "version-poweredby-others": "penyumbang-penyumbang lain", "version-poweredby-translators": "para penterjemah translatewiki.net", "version-credits-summary": "Kami ingin mengucapkan sekalung budi kepada mereka yang berikut atas sumbangan mereka keada [[Special:Version|MediaWiki]].", - "version-license-info": "MediaWiki adalah perisian bebas; anda boleh mengedarkannya semula dan/atau mengubah suainya di bawah terma-terma Lesen Awam GNU sebagai mana yang telah diterbitkan oleh Yayasan Perisian Bebas, sama ada versi 2 bagi Lesen tersebut, atau (berdasarkan pilihan anda) mana-mana versi selepasnya.\n\nMediaWiki diedarkan dengan harapan bahawa ia berguna, tetapi TANPA SEBARANG WARANTI; hatta waranti yang tersirat bagi KEBOLEHDAGANGAN mahupun KESESUAIAN UNTUK TUJUAN TERTENTU. Sila lihat Lesen Awam GNU untuk butiran lanjut.\n\nAnda patut telah menerima [{{SERVER}}{{SCRIPTPATH}}/COPYING sebuah salinan bagi Lesen Awam GNU] bersama-sama dengan atur cara ini; jika tidak, tulis ke Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA atau [//www.gnu.org/licenses/old-licenses/gpl-2.0.html baca dalam talian].", + "version-license-info": "MediaWiki ialah perisian bebas; anda boleh mengedarkannya semula dan/atau mengubah suainya di bawah terma-terma Lesen Awam GNU sebagai mana yang telah diterbitkan oleh Yayasan Perisian Bebas, sama ada versi 2 bagi Lesen tersebut, atau (berdasarkan pilihan anda) mana-mana versi selepasnya.\n\nMediaWiki diedarkan dengan harapan bahawa ia berguna, tetapi TANPA SEBARANG WARANTI; hatta waranti yang tersirat bagi KEBOLEHDAGANGAN mahupun KESESUAIAN UNTUK TUJUAN TERTENTU. Sila lihat Lesen Awam GNU untuk butiran lanjut.\n\nAnda patut telah menerima [{{SERVER}}{{SCRIPTPATH}}/COPYING sebuah salinan bagi Lesen Awam GNU] bersama-sama dengan atur cara ini; jika tidak, tulis kepada Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA atau [//www.gnu.org/licenses/old-licenses/gpl-2.0.html baca dalam talian].", "version-software": "Perisian yang dipasang", "version-software-product": "Produk", "version-software-version": "Versi", @@ -3081,7 +3066,6 @@ "fileduplicatesearch-noresults": "Tidak ada gambar-gambar dengan nama \"$1\" dijumpai.", "specialpages": "Laman khas", "specialpages-note-top": "Petunjuk", - "specialpages-note": "* Laman khas biasa.\n* Laman khas terhad.", "specialpages-group-maintenance": "Laporan penyenggaraan", "specialpages-group-other": "Laman khas lain", "specialpages-group-login": "Log masuk / buka akaun", @@ -3352,7 +3336,7 @@ "right-pagelang": "Mengubah bahasa laman", "action-pagelang": "mengubah bahasa laman", "log-name-pagelang": "Log perubahan bahasa", - "log-description-pagelang": "Ini adalah log untuk perubahan-perubahan bahasa laman.", + "log-description-pagelang": "Ini ialah log untuk perubahan-perubahan bahasa laman.", "logentry-pagelang-pagelang": "$1 telah {{GENDER:$2|mengubahkan}} bahasa untuk laman $3 dari $4 ke $5.", "default-skin-not-found": "Maaf, tidak terdapat rupa asali wiki anda yang tertakrif dalam $wgDefaultSkin sebagai $1.\n\nNampaknya pemasangan anda merangkumi {{PLURAL:$4|rupa|rupa-rupa}} yang berikut. Rujuk [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Skin configuration] untuk cara-cara membolehkan {{PLURAL:$4|rupa tersebut|rupa-rupa tersebut serta memilih rupa asali}}.\n\n$2\n\n; Jika anda baru memasang MediaWiki:\n: Mungkin anda memasangnya dari git, atau terus dari kod sumber dengan menggunakan suatu kaedah lain. Perkara ini dijangka. Cuba pasang beberapa rupa dari [https://www.mediawiki.org/wiki/Category:All_skins direktori rupa mediawiki.org], dengan:\n:* Memuat turun [https://www.mediawiki.org/wiki/Download pemasang tarball] yang datang dengan beberapa rupa dan sambungan. Anda boleh menyalin-tampal direktori skins/ daripadanya.\n:* Memuatkan satu persatu tarball rupa dari [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Menggunakan Git untuk memuat turun rupa].\n: Tindakan ini seharusnya tidak mengganggu repositori git anda jika anda seorang pembangun MediaWiki.\n\n; Jika anda baru menaik taraf MediaWiki:\n: MediaWiki 1.24 ke atas tidak lagi membolehkan secara automatik rupa-rupa yang terpasang dari luaran (rujuk [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual: Skin autodiscovery]). Anda boleh menampalkan {{PLURAL:$5|baris|baris-baris}} berikut kepada LocalSettings.php untuk membolehkan {{PLURAL:$5|rupa|semua rupa}} yang terpasang:\n\n
    $3
    \n\n; Jika anda baru mengubahsuai LocalSettings.php:\n: Semak nama-nama rupa untuk kesilapan ejaan.", "default-skin-not-found-no-skins": "Maaf, tidak terdapat rupa asali wiki anda yang tertakrif dalam $wgDefaultSkin sebagai $1.\n\nTiadanya rupa yang terpasang.\n\n; Jika anda baru memasang atau menaik taraf MediaWiki:\n: Mungkin anda memasangnya dari git, atau terus dari kod sumber dengan menggunakan suatu kaedah lain. Perkara ini dijangka. MediaWiki 1.24 ke atas tidak menyertakan sebarang rupa dalam repositori utama. Cuba pasang beberapa rupa dari [https://www.mediawiki.org/wiki/Category:All_skins direktori rupa mediawiki.org], dengan:\n:* Memuatkan tarball rupa satu persatu dari [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Menggunakan Git untuk memuat turun rupa].\n: Tindakan ini seharusnya tidak mengganggu repositori git anda jika anda seorang pembangun MediaWiki. Rujuk [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Skin configuration] untuk cara-cara membolehkan penggunaan rupa-rupa serta memilih rupa asali.", diff --git a/languages/i18n/mwl.json b/languages/i18n/mwl.json index 472130a2b4..47045988c9 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,15 @@ "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", + "namespaces": "Domínios", + "variants": "Bariadades", + "navigation-heading": "Menu de nabegaçon", "errorpagetitle": "Erro", "returnto": "Retornar pa $1.", "tagline": "De {{SITENAME}}", @@ -137,58 +160,52 @@ "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", + "view": "Ber", "edit": "Eiditar", "create": "Criar", - "editthispage": "Eiditar esta páigina", - "create-this-page": "Criar esta páigina", + "create-local": "Poner çcriçon lhocal", "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", - "talkpagelinktext": "Cumbersar", + "unprotect": "Altarar la proteçon", + "newpage": "Páigina nuoba", + "talkpagelinktext": "cumbersa", "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 +213,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 +229,22 @@ "viewdeleted": "Ber $1?", "restorelink": "{{PLURAL:$1|ua eidiçon apagada|$1 eidiçones apagadas}}", "feedlinks": "Feed:", - "site-rss-feed": "Feed RSS $1", - "site-atom-feed": "Feed Atom $1", - "page-rss-feed": "Feed RSS de \"$1\"", + "site-rss-feed": "''Feed'' RSS $1", + "site-atom-feed": "''Feed'' Atom $1", + "page-rss-feed": "''Feed'' RSS de \"$1\"", "page-atom-feed": "Feed Atom de \"$1\"", "red-link-title": "$1 (la páigina nun eisiste)", "nstab-main": "Páigina", - "nstab-user": "Páigina de l outelizador", + "nstab-user": "Páigina d{{GENDER:{{BASEPAGENAME}}|e l outelizador|e la outelizadora|e outelizador(a)}}", "nstab-media": "Páigina de média", "nstab-special": "Páigina special", - "nstab-project": "Páigina de porjeto", + "nstab-project": "Páigina de l porjeto", "nstab-image": "Fexeiro", "nstab-mediawiki": "Mensaige", "nstab-template": "Modelo", "nstab-help": "Páigina d'ajuda", "nstab-category": "Catadorie", + "mainpage-nstab": "Páigina percipal", "nosuchaction": "Acion nun eisiste", "nosuchspecialpage": "Nun eisiste la páigina special que pediste", "error": "Erro", @@ -245,15 +264,18 @@ "unexpected": "Balor nun sperado: \"$1\"=\"$2\".", "formerror": "Erro: Nun fui possible ambiar l formulário", "badarticleerror": "Esta acion nun puode ser feita nesta páigina.", + "cannotdelete": "Nun fui possible botar fuora la páigina ó fexeiro \"$1\".\nPuode yá tener sido botado fuora por outro outelizador.", + "cannotdelete-title": "Nun ye possible botar fuora la páigina \"$1\"", "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.", + "translateinterface": "Pa poner ó altarar traduçones pa todas las wikis, cunsidre outelizar la [https://translatewiki.net/wiki/Main_Page?setlang=mwl translatewiki.net], un porjeto çtinado a la traduçon de l MediaWiki.", "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 +284,48 @@ "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-login": "Antrar", + "pt-createaccount": "Criar ua cuonta", + "pt-userlogout": "Salir", + "changepassword": "Demudar palabra-chabe", + "resetpass_header": "Demudar palabra-chabe de la cuonta", "retypenew": "Pon outra beç la nuoba palabra chabe:", - "bold_sample": "Testo carregado", + "botpasswords": "Palabras-chabe de robós", + "botpasswords-label-resetpassword": "Redefenir palabra-chabe", + "resetpass-submit-loggedin": "Demudar palabra-chabe", + "passwordreset": "Redefenir palabra-chabe", + "changeemail": "Altarar ó remober l'andereço de correio eiletrónico", + "resettokens": "Redefenir chabes", + "bold_sample": "Testo a negrito", "bold_tip": "Testo a negrito", - "italic_sample": "Testo eitálico", + "italic_sample": "Testo an eitálico", "italic_tip": "Testo an eitálico", "link_sample": "Títalo de la lhigaçon", "link_tip": "Lhigaçon anterna", "extlink_sample": "http://www.example.com títalo de la lhigaçon", "extlink_tip": "Lhigaçon sterna (lembra-te de l perfixo http://)", - "headline_sample": "Testo de cabeçailho", + "headline_sample": "Testo de l cabeçailho", "headline_tip": "Cacho de nible 2", "nowiki_sample": "Poner testo nun-formatado eiqui", "nowiki_tip": "Nun fazer causo de la formataçon biqui", @@ -299,46 +333,51 @@ "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|perfré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 outelizada 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|perfré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!", + "continue-editing": "Nabegar pa la ária d'eidiçon", "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 botada fuora.\nL registro de la eileminaçon, porteçon i arrastramiento 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,111 +385,202 @@ "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", "rev-delundel": "amostrar/scunder", "revdel-restore": "Demudar besiblidade", + "revdelete-edit-reasonlist": "Eiditar rezones de botar fuora", + "mergehistory": "Fundir ls stóricos de las páiginas", "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}}", + "shown-title": "Amostrar $1 {{PLURAL:$1|resultado|resultados}} por páigina", "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-articles-tooltip": "Percurar an $1", + "searchprofile-images-tooltip": "Percurar fexeiros", + "searchprofile-everything-tooltip": "Percurar an todo l cuntenido (ancluindo páiginas de cumbersa)", + "searchprofile-advanced-tooltip": "Personalizar ls domínios adonde percurar", "search-result-size": "$1 ({{PLURAL:$2|1 palabra|$2 palabras}})", "search-redirect": "(ancaminamiento pa $1)", "search-section": "(cacho $1)", "search-suggest": "Será que queries dezir: $1", - "search-interwiki-caption": "Porjetos armanos", + "search-interwiki-caption": "Resultados de porjetos armanos", "search-interwiki-default": "Resultados de $1:", "search-interwiki-more": "(mais)", "searchall": "todos", + "showingresultsinrange": "Apersenta-se ambaixo {{PLURAL:$1|1 resultado|anté $1 resultados}} ne l'anterbalo #$2 a #$3.", + "search-nonefound": "La percura nun porduziu resultados.", "powersearch-legend": "Percura abançada", "powersearch-ns": "Percurar ne ls spácios nominales:", + "powersearch-remember": "Lhembrar seleçon pa las percuras feturas", "preferences": "Perfréncias", "mypreferences": "Las mies perfréncias", + "prefs-edits": "Númaro d'eidiçones:", "prefs-skin": "Maçcarilha", - "skin-preview": "Amostrar", + "skin-preview": "amostrar", + "datedefault": "Sin perfréncia", "prefs-personal": "Calantriç", - "prefs-rc": "Redadeiras alteraçones", + "prefs-rc": "Redadeiras altaraçones", + "prefs-watchlist": "Páiginas begiadas", + "prefs-editwatchlist": "Eiditar la lhista de páiginas begiadas", + "prefs-editwatchlist-label": "Eiditar antradas na sue lhista de páiginas begiadas:", + "prefs-editwatchlist-edit": "Ber i remober títalos de la sue lhista de páiginas begiadas", + "prefs-editwatchlist-raw": "Eiditar lhista de páiginas begiadas an forma de testo", + "prefs-editwatchlist-clear": "Lhimpar la sue lhista de páiginas begiadas", + "prefs-watchlist-days": "Dies a amostrar nas altaraçones a las páiginas begiadas:", + "prefs-watchlist-days-max": "Mássimo: $1 {{PLURAL:$1|die|dies}}", + "prefs-watchlist-edits": "Númaro mássimo d'eidiçones a amostrar na lhista de begiadas:", + "prefs-watchlist-edits-max": "Númaro mássimo: 1000", + "prefs-watchlist-token": "Chabe secreta de la lhista de páiginas begiadas:", + "prefs-resetpass": "Altarar palabra-chabe", + "prefs-changeemail": "Altarar ó remober correio eiletrónico", + "prefs-email": "Oupçones de l correio eiletrónico", + "prefs-rendering": "Aparéncia", "saveprefs": "Grabar", + "restoreprefs": "Restourar todas las cunfiguraçones padron (an todas las seçones)", "prefs-editing": "Oupçones de eidiçon", + "stub-threshold": "Lhemite pa la formataçon de lhigaçones pa rabiscos ($1):", + "stub-threshold-sample-link": "eisemplo", + "stub-threshold-disabled": "Zatibado", + "recentchangesdays": "Dies a apersentar nas mudanças recentes:", + "recentchangesdays-max": "Mássimo: $1 {{PLURAL:$1|die|dies}}", + "recentchangescount": "Númaro d'eidiçones a apersentar por omisson:", + "prefs-help-recentchangescount": "Anclui mudanças recentes, stórico de páiginas i registros.", + "prefs-help-watchlist-token2": "Esta ye la chabe secreta pa l ''feed'' RSS de la sue lhista de páiginas begiadas.\nQualquiera pessona que coinça la chabe será capaç de lher la sue lhista de páiginas begiadas, por esso nun la dibulgue.\n[[Special:ResetTokens|Clique eiqui pa redefenir eilha]].", + "timezonelegend": "Fuso hourário:", + "localtime": "Hora lhocal:", + "timezoneuseoffset": "Outro (specificar defréncia)", "servertime": "Hora de l serbidor:", + "guesstimezone": "Prencher a partir de l nabegador", "timezoneregion-africa": "África", "timezoneregion-america": "América", "timezoneregion-antarctica": "Antártida", "timezoneregion-arctic": "Ártico", "timezoneregion-asia": "Ásia", - "timezoneregion-atlantic": "Ouceano Atlântico", + "timezoneregion-atlantic": "Ouceano Atlántico", "timezoneregion-australia": "Oustrália", "timezoneregion-europe": "Ouropa", "timezoneregion-indian": "Ouceano Índico", "timezoneregion-pacific": "Ouceano Pacífico", - "default": "defeito", + "allowemail": "Aceitar correio eiletrónico d'outros outelizadores", + "prefs-searchoptions": "Percura", + "default": "padron", "prefs-files": "Fexeiros", + "prefs-custom-css": "CSS personalizada", + "prefs-custom-js": "JS personalizado", + "prefs-common-css-js": "CSS/JS partilhado por todas las maçcarilhas:", "prefs-emailconfirm-label": "Cunfirmaçon de l correio eiletrónico:", "youremail": "Morada de correio eiletrónico:", - "username": "Nome de outelizador:", - "prefs-memberingroups": "Nembro {{PLURAL:$1|de l grupo|de ls grupos}}:", + "username": "Nome de {{GENDER:$1|outelizador|outelizadora|outelizador(a)}}:", + "prefs-memberingroups": "{{GENDER:$2|Nembro}} {{PLURAL:$1|de l grupo|de ls grupos}}:", + "prefs-registration": "Data i hora de registro:", "yourrealname": "Nome berdadeiro:", "yourlanguage": "Lhéngua:", "yournick": "Assinatura:", - "yourgender": "Sexo:", - "gender-unknown": "Nun specificado", - "gender-male": "Home", - "gender-female": "Mulhier", - "email": "Morada Eiletrónica", + "prefs-help-signature": "Al anserir comentairos nas páiginas de cumbersa, assine eilhes poniendo quatro tiles \"~~~~\" ne l fin de ls comentairos. Al grabar, estes seran cumbertidos na sue assinatura cula data i la hora de la eidiçon.", + "yourgender": "Cumo prefire ser çcrito(a)?", + "gender-unknown": "Al fazer mençon a la sue pessona, l software eirá outelizar palabras de l género neutro siempre que possible", + "gender-male": "El ye un outelizador", + "gender-female": "Eilha ye ua outelizadora", + "prefs-help-gender": "Esta perfréncia ye oupcional.\nL software outeliza l sou balor pa l'andereçar i pa l mencionar a outros outelizando l género gramatical apropiado.\nEsta anformaçon será pública.", + "email": "Morada eiletrónica", "prefs-help-realname": "L nome berdadeiro ye oupcional.\nCauso l çponiblizes, este será outelizado pa te dar crédito pul tou trabalho.", + "prefs-help-email": "Oupcional: l'andereço de correio eiletrónico ye oupcional, mas será necessairo pa redefenir la palabra-chabe causo squeça l'antiga.", + "prefs-help-email-others": "Tamien puode ouptar por permitir que outros antren an cuntato cunsigo por correio eiletrónico, atrabeç dua lhigaçon nas sues páiginas de outelizador ó de cumbersa, sin rebelar l sou andereço de correio eiletrónico.", + "prefs-info": "Anformaçones básicas", + "prefs-i18n": "Anternacionalizaçon", "prefs-signature": "Assinatura", "prefs-dateformat": "Formato de la data", - "editusergroup": "Eiditar grupos de outelizadores", + "prefs-timeoffset": "Zbio hourário", + "prefs-advancedediting": "Oupçones girales", + "prefs-editor": "Eiditor", + "prefs-preview": "Ber cumo queda", + "prefs-advancedrc": "Oupçones abançadas", + "prefs-advancedrendering": "Oupçones abançadas", + "prefs-advancedsearchoptions": "Oupçones abançadas", + "prefs-advancedwatchlist": "Oupçones abançadas", + "prefs-displayrc": "Oupçones de bisualizaçon", + "prefs-displaywatchlist": "Oupçones de bisualizaçon", + "prefs-tokenwatchlist": "Chabe", + "prefs-diffs": "Defréncias", + "userrights": "Prebilégios {{GENDER:{{BASEPAGENAME}}|de l outelizador|de la outelizadora|de outelizador(a)}}", + "editusergroup": "Cargar grupos de outelizadores", "userrights-groupsmember": "Nembro de:", "group": "Grupo:", "group-user": "Outelizadores", + "group-autoconfirmed": "Outelizadores outocunfirmados", "group-bot": "Rubós", "group-sysop": "Admenistradores", "group-bureaucrat": "Burocratas", - "group-bot-member": "Rubó", - "group-sysop-member": "Admenistrador", - "group-bureaucrat-member": "Burocrata", + "group-bot-member": "{{GENDER:$1|rubó}}", + "group-sysop-member": "{{GENDER:$1|admenistrador|admenistradora|admenistrador(a)}}", + "group-bureaucrat-member": "{{GENDER:$1|burocrata}}", + "grouppage-user": "{{ns:project}}:Outelizadores", + "grouppage-autoconfirmed": "{{ns:project}}:Outocunfirmados", "grouppage-bot": "{{ns:project}}:Rubós", "grouppage-sysop": "{{ns:project}}:Admenistradores", + "grouppage-bureaucrat": "{{ns:project}}:Burocratas", + "grouppage-suppress": "{{ns:project}}:Suprimir", "right-edit": "Eiditar páiginas", "right-move": "Arrastrar páiginas", "right-movefile": "Arrastrar fexeiros", + "right-writeapi": "Outelizar la API de scrita", + "grant-editmycssjs": "Eiditar l sou CSS/JavaScript personalizado", "newuserlogpage": "Registro de criaçon de outelizadores", "rightslog": "Registro de dreitos de l outelizador", "action-read": "lher esta páigina", "action-edit": "eiditar esta páigina", - "action-createpage": "criar páiginas", + "action-createpage": "criar esta páigina", "action-move": "arrastrar esta páigina", "action-movefile": "arrastrar este fexeiro", "action-delete": "apagar esta páigina", + "action-purge": "recargar esta páigina", "nchanges": "$1 {{PLURAL:$1|altaraçon|altaraçones}}", "recentchanges": "Redadeiras altaraçones", "recentchanges-legend": "Oupçones de las redadeiras altaraçones", "recentchanges-feed-description": "Acumpanha las redadeiras altaraçones de l biqui por esta semiente.", - "recentchanges-legend-newpage": "$1 - nuoba páigina", - "rcnotefrom": "Alteraçones feitas zde $2 (amostradas até $1).", - "rclistfrom": "Amostrar las noubas altaraçones a partir de $3 $2", + "recentchanges-label-newpage": "Esta eidiçon criou ua nuoba páigina", + "recentchanges-label-minor": "Esta ye ua eidiçon pequerrixa", + "recentchanges-label-bot": "Esta eidiçon fui feita por un robó", + "recentchanges-label-plusminus": "Altaraçon ne l tamanho de la páigina, an bytes", + "recentchanges-legend-heading": "Lhegenda:", + "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (ber tamien la [[Special:NewPages|lhista de páiginas nuobas]])", + "recentchanges-submit": "Amostrar", + "rcfilters-filtergroup-watchlist": "Páiginas begiadas", + "rcfilters-watchlist-markseen-button": "Marcar todas las altaraçones cumo yá bistas", + "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", + "rcshowhideminor-show": "Amostrar", "rcshowhidebots": "$1 robós", + "rcshowhidebots-show": "Amostrar", "rcshowhideliu": "$1 outelizadores registrados", + "rcshowhideliu-show": "Amostrar", "rcshowhideanons": "$1 outelizadores anónimos", + "rcshowhideanons-show": "Amostrar", "rcshowhidepatr": "$1 eidiçones patrulhadas", + "rcshowhidepatr-show": "Amostrar", "rcshowhidemine": "$1 mies eidiçones", + "rcshowhidemine-show": "Amostrar", + "rcshowhidecategorization-show": "Amostrar", "rclinks": "Amostrar las redadeiras $1 altaraçones ne ls redadeiros $2 dies", "diff": "defr", "hist": "stór", @@ -459,28 +589,31 @@ "minoreditletter": "m", "newpageletter": "N", "boteditletter": "b", - "rc_categories_any": "Qualquiera", + "rc_categories_any": "Qualquiera de ls scolhidos", + "rc-change-size-new": "$1 {{PLURAL:$1|byte|bytes}} açpuis las altaraçones", "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", "savefile": "Grabar fexeiro", + "uploaddisabled": "Ambio de fexeiros zatibado.", "watchthisupload": "Begiar este fexeiro", + "upload-dialog-title": "Cargar 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,37 +626,47 @@ "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-nothumb": "Meniatura andisponible", "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.", + "sharedupload-desc-here": "Este fexeiro ye de $1 i puode ser outelizado por outros porjetos.\nLa çcriçon na [$2 páigina oureginal] ye amostrada ambaixo.", "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", "filedelete-nofile": "'''$1''' nun eisiste.", "filedelete-reason-otherlist": "Outra rezon", + "filedelete-edit-reasonlist": "Eiditar rezones de botar fuora", "mimesearch": "Percura MIME", + "unwatchedpages": "Páiginas nun begiadas", "listredirects": "Amostrar ancaminamientos", + "listduplicatedfiles": "Fexeiros cun duplicados", "unusedtemplates": "Modelos nun outelizados", "randompage": "Páigina al calhas", + "randomincategory": "Páigina aleatória na catadorie", + "randomincategory-legend": "Páigina aleatória na catadorie", "randomredirect": "Ancaminamiento al calhas", "statistics": "Statísticas", + "statistics-articles": "Páiginas de cuntenido", "statistics-pages": "Páiginas", "statistics-users-active": "Outelizadores atibos", + "pageswithprop": "Páiginas que outelizan ua propiadade", + "pageswithprop-legend": "Páiginas que outelizan ua propiadade", "doubleredirects": "Ancaminamientos duplos", "brokenredirects": "Ancaminamientos scachados", "brokenredirects-edit": "eiditar", - "brokenredirects-delete": "Botar fuora", + "brokenredirects-delete": "botar fuora", "withoutinterwiki": "Páiginas sin lhigaçones de lhénguas", "withoutinterwiki-submit": "Amostrar", "fewestrevisions": "Páiginas de cuntenido cun menos rebisones", @@ -539,30 +682,48 @@ "unusedimages": "Fexeiros nun outelizados", "wantedcategories": "Catadories pedidas", "wantedpages": "Páiginas pedidas", + "wantedfiles": "Fexeiros zeiados", + "wantedtemplates": "Modelos zeiados", "mostlinked": "Páiginas mais lhigadas", "mostlinkedcategories": "Catadories cun mais nembros", - "mostlinkedtemplates": "Modelos mais populares de lhigaçones", + "mostlinkedtemplates": "Páiginas mais transcluídas", "mostcategories": "Páiginas de cuntenido cun mais catadories", "mostimages": "Eimaiges cun mais refréncias", + "mostinterwikis": "Páiginas cun mais lhigaçones anterwikis", "mostrevisions": "Páiginas de cuntenido cun mais rebisones", "prefixindex": "Todas las páiginas cun perfixo", + "prefixindex-submit": "Amostrar", "shortpages": "Páiginas pequeinhas", "longpages": "Páiginas cumpridas", "deadendpages": "Páiginas sin salida", - "protectedpages": "Páginas protegidas", + "protectedpages": "Páiginas portegidas", + "protectedtitles": "Títalos portegidos", "listusers": "Lhista de outelizadores", - "newpages": "Nuobas páiginas", + "newpages": "Páiginas nuobas", + "newpages-submit": "Amostrar", "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}}", + "apisandbox": "Testes de la API", "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", + "logeventslist-submit": "Amostrar", "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,44 +733,66 @@ "allpagessubmit": "Bota", "allpagesprefix": "Amostrar páiginas cul perfixo:", "categories": "Catadories", - "linksearch": "Lhigaçones sternas", + "categories-submit": "Amostrar", + "deletedcontributions": "Eidiçones botadas fuora", + "deletedcontributions-title": "Cuntribuiçones botadas fuora", + "linksearch": "Percura de lhigaçones sternas", "linksearch-ok": "Percurar", "listusers-submit": "Amostrar", + "activeusers": "Lhista de outelizadores atibos", + "listgrouprights": "Prebilégios de ls grupos de outelizadores", "listgrouprights-rights": "Dreitos", "listgrouprights-members": "(lista de nembros)", - "emailuser": "Ambiar carta eiletrónica a este outelizador", + "listgrants": "Cuncessones de permissones a las aplicaçones lhigadas", + "trackingcategories": "Catadories de monitorizaçon", + "emailuser": "Ambiar carta eiletrónica a {{GENDER:{{BASEPAGENAME}}|este outelizador|esta outelizadora|este(a) outelizador(a)}}", "emailfrom": "De:", "emailto": "Para:", - "watchlist": "Ls mius begiados", + "watchlist": "Páiginas begiadas", "mywatchlist": "Las mies páiginas begiadas", - "addedwatchtext": "La páigina \"[[:$1]]\" fui ajuntada a la tue [[Special:Watchlist|lista de páiginas begiadas]].\nAltaraçones feturas na tal páigina i páiginas de çcusson a eilha associadas seran listadas alhá, cun la páigina aparecendo a '''negrito''' na [[Special:RecentChanges|lista de redadeiras altaraçones]], para que se pouda ancuntrar cun maior facelidade.", - "removedwatchtext": "La páigina \"[[:$1]]\" fui botada fuora de la [[Special:Watchlist|tue lista de páiginas begiadas]].", + "addedwatchtext": "\"[[:$1]]\" i la sue páigina de cumbersa fúrun ajuntadas a la tue [[Special:Watchlist|lhista de páiginas begiadas]].", + "removedwatchtext": "La páigina \"[[:$1]]\" i la sue páigina de cumbersa fúrun botadas fuora de la [[Special:Watchlist|tue lista de páiginas begiadas]].", "watch": "Begiar", "watchthispage": "Begiar esta páigina", "unwatch": "Zantressar-se", - "watchlist-details": "{{PLURAL:$1|$1 páigina begiada|$1 páiginas begiadas}}, fuora las páiginas de çcuçon.", + "watchlist-details": "{{PLURAL:$1|Eisiste $1 páigina|Eisisten $1 páiginas}} na sue lhista de páiginas begiadas (mais 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-submit": "Amostrar", + "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", + "deletepage": "Botar fuora la páigina", + "excontent": "l cuntenido era: \"$1\"", + "excontentauthor": "l cuntenido era: \"$1\", i {{GENDER:$2|l único eiditor|la única eiditora|l(a) único(a) eiditor(a)}} era [[Special:Contributions/$2|$2]] ([[User talk:$2|cumbersa]])", + "exbeforeblank": "l cuntenido antes de sbaziar era: \"$1\"", "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}}:", + "historyaction-submit": "Amostrar", "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.", - "dellogpage": "Registro de botado fuora", + "deletedtext": "\"$1\" fue botada fuora.\nCunsulte $2 pa un registro reciente de las páiginas botadas fuora.", + "dellogpage": "Registro de botados fuora", + "deletionlog": "registro de botados fuora", "deletecomment": "Rezon:", "deleteotherreason": "Rezon adicional:", "deletereasonotherlist": "Outra rezon", + "deletereason-dropdown": "* Motibos d'eliminaçon quemuns\n** Spam\n** Bandalismo\n** Biolaçon de dreitos d'outor\n** Pedido de l'outor\n** Ancaminamiento ambálido", + "delete-edit-reasonlist": "Eiditar rezones de botar fuora", + "deleting-backlinks-warning": "Abiso: Eisisten [[Special:WhatLinksHere/{{FULLPAGENAME}}|páiginas]] que cunténen lhigaçones ó que ancaminan pa la páigina que stá pristes a botar fuora.", "rollbacklink": "retornar", + "rollbacklinkcount": "çfazer $1 {{PLURAL:$1|eidiçon|eidiçones}}", + "revertpage": "Fúrun çfeitas las eidiçones de [[Special:Contributions/$2|$2]] ([[User talk:$2|cumbersa]]) pa la redadeira rebison de [[User:$1|$1]]", + "changecontentmodel": "Altarar l modelo de cuntenido dua páigina", "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 +800,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.", @@ -631,29 +814,34 @@ "restriction-level": "Nible de restriçon:", "restriction-edit": "Eiditar", "restriction-move": "Arrastrar", + "undelete": "Ber las páiginas botadas fuora", + "viewdeletedpage": "Ber las páiginas botadas fuora", "undeletebtn": "Recuperar", "undeletelink": "ber/restourar", "namespace": "Spácio de nomes:", "invert": "Amberter scuolha", + "tooltip-invert": "Marque esta caixa pa scunder las altaraçones la páiginas ne l domínio selecionado (i ne l domínio associado, se scolheu la oupçon)", + "namespace_association": "Domínio associado", + "tooltip-namespace_association": "Marque esta caixa pa ancluir tamien l domínio de cuntenido ó de cumbersa associado a la sue seleçon", "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-blocklog": "Registro de bloqueios", - "sp-contributions-talk": "Cumbersa", + "sp-contributions-newbies-sub": "Pa cuontas nuobas", + "sp-contributions-blocklog": "registro de bloqueios", + "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 +853,97 @@ "whatlinkshere-hidetrans": "$1 anclusones", "whatlinkshere-hidelinks": "$1 lhigaçones", "whatlinkshere-filters": "Filtros", - "blockip": "Bloquiar outelizador", + "unblock": "Zbloquiar outelizador", + "blockip": "Bloquiar {{GENDER:$1|outelizador|outelizadora|outelizador(a)}}", + "blockip-legend": "Bloquiar 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", + "unblockip": "Zbloquiar outelizador", + "blocklist": "Outelizadores bloquiados", + "autoblocklist": "Bloqueios outomáticos", + "ipblocklist": "Outelizadores bloquiados", "blocklink": "bloquiar", "unblocklink": "zbloquiar", "change-blocklink": "altarar bloqueio", - "contribslink": "contribs", - "blocklogpage": "Registro de l bloqueio", + "contribslink": "cuntribs", + "blocklogpage": "Registro de bloqueios", "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\"'''", + "movepage-moved": "\"$1\" fui arrastrada pa \"$2\"", + "movepage-moved-redirect": "Fui criado un ancaminamiento.", + "movepage-moved-noredirect": "La criaçon dun ancaminamiento fui suprimida.", "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)", + "movepage-page-moved": "La páigina $1 fui arrastrada pa $2.", "movelogpage": "Registro d'arrastros", "movereason": "Rezon:", "revertmove": "poner al robés", + "delete_and_move_text": "La páigina de çtino (\"[[:$1]]\") yá eisiste. \nDesea botar fuora eilha pa arrastrar la páigina?", + "move-leave-redirect": "Criar un ancaminamiento", "export": "Sportar páiginas", + "export-submit": "Sportar", "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", + "import": "Amportar páiginas", "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-pt-createaccount": "Ye ancorajado a criar ua cuonta i ampeçar sesson; inda assi, nun ye oubrigatório", + "tooltip-ca-talk": "Cumbersa subre l cuntenido de la páigina", + "tooltip-ca-edit": "Eiditar esta páigina", "tooltip-ca-addsection": "Ampeçar un cacho nuobo", - "tooltip-ca-viewsource": "Esta páigina stá portegida. Inda assi, tu puodes ber l sou código.", - "tooltip-ca-history": "Eidiçones mais antigas deste páigina.", + "tooltip-ca-viewsource": "Esta páigina stá portegida.\nInda assi, tu puodes ber l sou código.", + "tooltip-ca-history": "Eidiçones mais antigas desta páigina.", "tooltip-ca-protect": "Porteger esta páigina", "tooltip-ca-delete": "Botar fuora esta páigina", "tooltip-ca-move": "Arrastrar esta páigina", "tooltip-ca-watch": "Ajuntar esta páigina als mius begiados", "tooltip-ca-unwatch": "Botar pa la rue esta páigina de ls mius begiados", - "tooltip-search": "Pesquisa {{SITENAME}}", + "tooltip-search": "Percurar an {{SITENAME}}", "tooltip-search-go": "Ir pa ua páigina cun este nome, causo eisista", "tooltip-search-fulltext": "Percurar por páiginas cun este testo", - "tooltip-n-mainpage": "Besitar la Páigina Percipal", - "tooltip-n-mainpage-description": "Besitar la Páigina Percipal", - "tooltip-n-portal": "Subre l porjeto, l que puodes fazer, adonde ancuntrar cousas", + "tooltip-p-logo": "Bejitar la páigina percipal", + "tooltip-n-mainpage": "Besitar la páigina percipal", + "tooltip-n-mainpage-description": "Besitar la páigina percipal", + "tooltip-n-portal": "Subre l porjeto, l que puodes fazer, i adonde ancuntrar las cousas", "tooltip-n-currentevents": "Ancuntrar anformaçon de fondo subre amboras atuales", - "tooltip-n-recentchanges": "Lhista de redadeiras altaraçones nesta biqui.", + "tooltip-n-recentchanges": "Ua lhista de redadeiras altaraçones nesta biqui.", "tooltip-n-randompage": "Ber páigina al calhas", - "tooltip-n-help": "Lhugar cun anformaçon pa ajuda.", + "tooltip-n-help": "L lhugar cun anformaçon pa ajuda.", "tooltip-t-whatlinkshere": "Todas las páiginas que se lhigan eiqui", "tooltip-t-recentchangeslinked": "Redadeiras altaraçones an páiginas que ténen a ber cun esta", "tooltip-feed-rss": "Feed RSS pa esta páigina", "tooltip-feed-atom": "Feed Atom pa esta páigina", - "tooltip-t-contributions": "Ber las cuntribuiçones d'este outelizador", - "tooltip-t-emailuser": "Ambiar ua carta eiletrónica a este outelizador", + "tooltip-t-contributions": "Ber las cuntribuiçones {{GENDER:$1|deste outelizador|desta outelizadora|deste(a) outelizador(a)}}", + "tooltip-t-emailuser": "Ambiar ua carta eiletrónica a {{GENDER:$1|este outelizador|esta outelizadora|este(a) outelizador(a)}}", "tooltip-t-upload": "Cargar eimaiges ó fexeiros", "tooltip-t-specialpages": "Todas las páiginas speciales", "tooltip-t-print": "Berson pa ampremir desta páigina", "tooltip-t-permalink": "Lhigaçon pa siempre desta berson desta páigina", "tooltip-ca-nstab-main": "Ber la páigina de l cuntenido", - "tooltip-ca-nstab-user": "Ber la páigina de l outelizador", - "tooltip-ca-nstab-special": "Esta ye ua páigina special, nun puode ser eiditada.", + "tooltip-ca-nstab-user": "Ber la páigina de outelizador", + "tooltip-ca-nstab-special": "Esta ye ua páigina special, i nun puode ser eiditada.", "tooltip-ca-nstab-project": "Ber la páigina de l porjeto", "tooltip-ca-nstab-image": "Ber la páigina de l fexeiro", "tooltip-ca-nstab-template": "Ber l modelo", @@ -746,27 +951,39 @@ "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-robot-noindex": "Nun premitida", + "pageinfo-subpages-name": "Subpáiginas desta páigina", + "pageinfo-subpages-value": "$1 ($2 {{PLURAL:$2|ancaminamiento|ancaminamientos}}; $3 {{PLURAL:$3|nun ancaminamiento|nun ancaminamientos}})", + "pageinfo-magic-words": "{{PLURAL:$1|Palabra mágica|Palabras mágicas}} ($1)", + "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", + "show-big-image-preview": "Tamanho desta antebison: $1.", + "show-big-image-other": "{{PLURAL:$2|Outra resoluçon|Outras resoluçones}}: $1.", + "show-big-image-size": "$1 × $2 píxeles", "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,9 +1001,12 @@ "exif-sharpness-1": "Suabe", "exif-sharpness-2": "Duro", "exif-subjectdistancerange-0": "Çcoincido", - "namespacesall": "todas", + "namespacesall": "todos", "monthsall": "todos", + "confirm-purge-title": "Purgar esta páigina", "confirm_purge_button": "Stá bien", + "confirm-purge-top": "Lhimpar a mimória cache desta páigina?", + "confirm-purge-bottom": "Recargar ua páigina lhimpa la mimória cache i fuorça la sue berson mais reciente a aparecer.", "imgmultipageprev": "← páigina atrasada", "imgmultipagenext": "páigina seguinte →", "imgmultigo": "Bota!", @@ -799,24 +1019,75 @@ "table_pager_last": "Redadeira páigina", "table_pager_limit": "Amostrar $1 antradas por páigina", "table_pager_empty": "Sien resultados", + "autoredircomment": "Ancaminamiento pa [[$1]]", + "autosumm-new": "Criou la páigina cun \"$1\"", + "autosumm-newblank": "Páigina an branco criada", + "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": "Ancaminar por nome de fexeiro, ó eidentificaçon de outelizador, páigina, rebison ó registro", + "redirect-lookup": "Percurar:", + "fileduplicatesearch": "Percurar por fexeiros duplicados", "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", + "blankpage": "Páigina an branco", + "intentionallyblankpage": "Esta páigina fui antencionalmente deixada an branco", + "tags": "Eitiquetas de modeficaçon bálidas", + "tag-filter": "Filtrar las [[Special:Tags|etiquetas]]:", + "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Eitiqueta|Eitiquetas}}]]: $2)", "tags-title": "Eitiquetas", "tags-edit": "eiditar", - "rightsnone": "(nanhun)" + "tags-activate": "atibar", + "tags-deactivate": "zatibar", + "tags-activate-submit": "Atibar", + "comparepages": "Acumparar páiginas", + "diff-form": "Defréncias", + "permanentlink": "Lhigaçon permaniente", + "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", + "logentry-move-move_redir-noredirect": "$1 {{GENDER:$2|arrastrou}} $3 pa l sou ancaminamiento $4, suprimindo l purmeiro", + "logentry-newusers-create": "La cuonta de {{GENDER:$2|outelizador|outelizadora}} $1 fui criada", + "rightsnone": "(nanhun)", + "searchsuggest-search": "Percurar an {{SITENAME}}", + "expandtemplates": "Spandir modelos", + "mediastatistics": "Statísticas multimédia", + "mediastatistics-header-multimedia": "Média anriquecida", + "special-characters-group-canadianaboriginal": "Aborígene canadiano", + "mw-widgets-usersmultiselect-placeholder": "Poner mais...", + "randomrootpage": "Páigina aleatória de raiç", + "authmanager-email-label": "Correio eiletrónico", + "changecredentials": "Altarar credenciales", + "changecredentials-submit": "Altarar credenciales", + "removecredentials": "Remober credenciales", + "removecredentials-submit": "Remober credenciales", + "gotointerwiki": "Salindo de {{SITENAME}}" } diff --git a/languages/i18n/my.json b/languages/i18n/my.json index b164c2e1cd..0aec41ee8e 100644 --- a/languages/i18n/my.json +++ b/languages/i18n/my.json @@ -53,11 +53,13 @@ "tog-shownumberswatching": "စောင့်ကြည့်နေသော အသုံးပြုသူအရေအတွက်ကို ပြရန်", "tog-oldsig": "သင်၏ ရှိနှင့်ပြီးသား လက်မှတ်:", "tog-fancysig": "လက်မှတ်ကို ဝီကီလင့်အဖြစ် သတ်မှတ်ရန် (အလိုအလျောက်လင့်မပါဘဲနှင့်)", + "tog-uselivepreview": "စာမျက်နှာကို ပြန်လည် မခေါ်ယူဘဲ နမူနာများ ပြသရန်", "tog-forceeditsummary": "တည်းဖြတ်အတိုချုပ် ဗလာဖြစ်နေလျှင် သတိပေးရန်", "tog-watchlisthideown": "ကျွန်ုပ်၏ တည်းဖြတ်မှုများကို စောင့်ကြည့်စာရင်းမှ ဝှက်ထားရန်", "tog-watchlisthidebots": "ဘော့တည်းဖြတ်မှုများကို စောင့်ကြည့်စာရင်းမှ ဝှက်ထားရန်", "tog-watchlisthideminor": "အရေးမကြီးသော တည်းဖြတ်မှုများကို စောင့်ကြည့်စာရင်းမှ ဝှက်ထားရန်", "tog-watchlisthideliu": "စောင့်ကြည့်စာရင်းမှ log in ဝင်ထားသော အသုံးပြုသူတို့၏ တည်းဖြတ်မှုများကို ဝှက်ရန်", + "tog-watchlistreloadautomatically": "filter တစ်ခု အပြောင်းအလဲဖြစ်တိုင်း စောင့်ကြည့်စာရင်းကို အလိုအလျောက် ပြန်လည် ခေါ်ယူရန် (JavaScript လိုအပ်)", "tog-watchlisthideanons": "စောင့်ကြည့်စာရင်းမှ အမည်မသိ အသုံးပြုသူများ၏ တည်းဖြတ်မှုများကို ဝှက်ရန်", "tog-watchlisthidepatrolled": "စောင့်ကြည့်စစ်ဆေးထားသော တည်းဖြတ်မှုများကို စောင့်ကြည့်စာရင်းမှ ဝှက်ထားရန်", "tog-watchlisthidecategorization": "စာမျက်နှာများ၏ ကဏ္ဍကို ဝှက်ရန်", @@ -408,7 +410,7 @@ "createaccount-title": "{{SITENAME}} အတွက် အကောင့်ပြုလုပ်ခြင်း", "login-throttled": "သင်သည် login ဝင်ရန် အကြိမ်မြောက်မြားစွာ အားထုတ်ခဲ့ပြီးဖြစ်သည်။\nကျေးဇူးပြု၍ ထပ်မဝင်ခင် $1 စောင့်ပေးပါ။", "login-abort-generic": "လော့ဂ်အင်ဝင်ခြင်း မအောင်မြင်ပါ - ဖျက်သိမ်းပြီး", - "loginlanguagelabel": "ဘာသာ: $1", + "loginlanguagelabel": "ဘာသာစကား: $1", "pt-login": "အကောင့်ဝင်ရန်", "pt-login-button": "အကောင့်ဝင်ရန်", "pt-login-continue-button": "ဆက်လက် ဝင်ရောက်ပါ", @@ -536,7 +538,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": "အငြင်းပွားမှုကို တည်းဖြတ်ရန်။", @@ -704,7 +706,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": "အသေးအမွှား", @@ -752,7 +754,7 @@ "prefs-memberingroups": "{{PLURAL:$1|အုပ်စု|အုပ်စုများ}}၏ {{GENDER:$2|အဖွဲ့ဝင်}}", "prefs-registration": "မှတ်ပုံတင်သည့် အချိန် -", "yourrealname": "နာမည်ရင်း -", - "yourlanguage": "ဘာသာစကား -", + "yourlanguage": "ဘာသာစကား:", "yournick": "လက်မှတ်အသစ် -", "badsig": "တရားမဝင်သည့် လက်မှတ်အကြမ်း။\nHTML tags ကို စစ်ဆေးပါ။", "badsiglength": "သင့်လက်မှတ်သည် ရှည်လွန်းနေပါသည်။\nယင်းသည် စာလုံး {{PLURAL:$1|လုံး|လုံး}}ထက် မရှည်ရပါ။", @@ -1153,6 +1155,7 @@ "all-logs-page": "အများနှင့်ဆိုင်သောမှတ်တမ်းအားလုံး", "alllogstext": "{{SITENAME}}၏ ရရှိနိုင်သော မှတ်တမ်းများအားလုံး ပေါင်းစည်းပြသခြင်း ဖြစ်သည်။\nမှတ်တမ်းအမျိုးအစား၊ အသုံးပြုသူအမည် (စာလုံးအကြီးအသေး)၊ သို့မဟုတ် သက်ဆိုင်ရာ စာမျက်နှာ (စာလုံးအကြီးအသေး) ကို ရွေးချယ်ခြင်းဖြင့် ကြည့်ရှုမှုကို အကျဉ်းချုံးနိုင်ပါသည်။", "logempty": "မှတ်တမ်းထဲတွင် ကိုက်ညီသော အရာများ မရှိပါ။", + "showhideselectedlogentries": "ရွေးချယ်ထားသော မှတ်တမ်းများ၏ မြင်နိုင်မှုကို ပြောင်းလဲရန်", "checkbox-all": "အားလုံး", "allpages": "စာမျက်နှာအားလုံး", "nextpage": "နောက်ထပ်စာမျက်နှာ ($1)", @@ -1225,7 +1228,7 @@ "unwatch": "စောင့်မကြည့်ပါနှင့်", "unwatchthispage": "စောင့်ကြည့်ခြင်းကို ရပ်တန့်ရန်", "notanarticle": "မာတိကာစာမျက်နှာတစ်ခု မဟုတ်", - "watchlist-details": "{{PLURAL:$1|စာမျက်နှာ $1 ခု|စာမျက်နှာ $1 ခု}} သည် သင့်စောင့်ကြည့်စာရင်းတွင် ရှိပြီး ဆွေးနွေးချက်စာမျက်နှာများကို ထည့်တွက် မထားပါ။", + "watchlist-details": "သင့်စောင့်ကြည့်စာရင်းတွင် (ဆွေးနွေးချက် စာမျက်နှာများ အပါအဝင်){{PLURAL:$1|စာမျက်နှာ $1 ခု|စာမျက်နှာ $1 ခု}} ရှိသည်။", "wlheader-showupdated": "သင် နောက်ဆုံးကြည့်ရှုခဲ့ပြီးနောက် ပြောင်းလဲမှုရှိခဲ့သော စာမျက်နှာများကို စာလုံးမဲ ဖြင့် ပြသထားသည်", "wlnote": "အောက်ပါတို့သည် $3၊ $4 အထိ နောက်ဆုံး {{PLURAL:$2|နာရီ|$2 နာရီ}}အတွင်း {{PLURAL:$1|နောက်ဆုံးပြောင်းလဲချက် တစ်ခု|နောက်ဆုံးပြောင်းလဲချက်များ $1 ခု}} ဖြစ်သည်။", "wlshowlast": "နောက်ဆုံး $1 နာရီ $2 ရက် ကိုပြရန်", @@ -1266,6 +1269,7 @@ "deleting-backlinks-warning": "သတိပေးချက်။ သင်ဖျက်ပစ်တော့မည့် စာမျက်နှာအား [[Special:WhatLinksHere/{{FULLPAGENAME}}|အခြားစာမျက်နှာများမှ]] ချိတ်ဆက်ထားခြင်း သို့မဟုတ် ထည့်သွင်းထားခြင်း ရှိနေသည်။", "rollbacklink": "နောက်ပြန် ပြန်သွားရန်", "rollbacklinkcount": "{{PLURAL:$1|တည်းဖြတ်မှု|တည်းဖြတ်မှုများ}} $1 ကို နောက်ပြန်ပြင်ရန်", + "revertpage": "[[Special:Contributions/$2|$2]] ([[User talk:$2|ဆွေးနွေး]]) ၏ ပြင်ဆင်မှုများကို [[User:$1|$1]] ၏ နောက်ဆုံးတည်းဖြတ်မူသို့ နောက်ပြန် ပြန်ပြင်ခဲ့သည်", "protectlogpage": "ကာကွယ်မှုများ၏ မှတ်တမ်း", "protectlogtext": "အောက်ပါတို့သည် စာမျက်နှာ ကာကွယ်မှုများအတွက် အပြောင်းအလဲ စာရင်း ဖြစ်သည်။\nလက်ရှိ စာမျက်နှာ ကာကွယ်မှုများ စာရင်းအတွက် [[Special:ProtectedPages|ကာကွယ်ထားသော စာမျက်နှာများ စာရင်း]]ကို ကြည့်ပါ။", "protectedarticle": "\"[[$1]]\" ကို ကာကွယ်ထားသည်", @@ -1411,7 +1415,7 @@ "contribslink": "ပံ့ပိုး", "blocklogpage": "ပိတ်ပင်တားဆီးမှု မှတ်တမ်း", "blocklog-showlog": "ဤအသုံးပြုသူအား ယခင်က ပိတ်ပင်ထားပြီး ဖြစ်သည်။\nပိတ်ပင်မှု မှတ်တမ်းအား ကိုးကားနိုင်ရန် အောက်တွင် ဖော်ပြထားသည်။", - "blocklogentry": "[[$1]] ကို $2 ကြာအောင် ပိတ်ပင် တားဆီးလိုက်သည် $3", + "blocklogentry": "သက်တမ်း $2 ဖြင့် [[$1]] ကို ပိတ်ပင်လိုက်သည် $3", "reblock-logentry": "[[$1]] အတွက် ပိတ်ပင်မှု အပြင်အဆင်ကို သက်တမ်း $2 ဖြင့် ပြောင်းလဲခဲ့သည် $3", "blocklogtext": "ဤသည်မှာ အသုံးပြုသူအား ပိတ်ပင်ခြင်းနှင့် ပိတ်ပင်မှုဖယ်ရှားခြင်း ဆောင်ရွက်မှု မှတ်တမ်း ဖြစ်သည်။\nအလိုအလျောက် ပိတ်ပင်ထားသည့် အိုင်ပီလိပ်စာများအား မထည့်သွင်းထားပါ။\nလက်ရှိ တားမြစ်မှုများနှင့် ပိတ်ပင်မှုများ စာရင်းအတွက် [[Special:BlockList|ပိတ်ပင်စာရင်း]]ကို ကြည့်ပါ။", "unblocklogentry": "$1 ကို ပိတ်ထားရာမှ ပြန်ဖွင့်ရန်", @@ -1465,7 +1469,7 @@ "allmessages-filter-unmodified": "မပြုပြင်ထားသော", "allmessages-filter-all": "အားလုံး", "allmessages-filter-modified": "ပြုပြင်ထားသော", - "allmessages-language": "ဘာသာ -", + "allmessages-language": "ဘာသာစကား:", "allmessages-filter-submit": "သွား", "thumbnail-more": "ပုံကြီးချဲ့ရန်", "filemissing": "ဖိုင်ပျောက်နေသည်", @@ -1583,6 +1587,7 @@ "markedaspatrolledtext": "[[:$1]] ၏ ရွေးချယ်ထားသော တည်းဖြတ်မူကို စောင့်ကြပ်စစ်ဆေးပြီးကြောင်း မှတ်သားပြီးပါပြီ။", "markedaspatrollednotify": "$1 သို့ ဤပြောင်းလဲမှုအား စောင့်ကြပ်စစ်ဆေးပြီးကြောင်း မှတ်သားပြီးပါပြီ။", "patrol-log-page": "စောင့်ကြပ်စစ်ဆေးမှု မှတ်တမ်း", + "log-show-hide-patrol": "စောင့်ကြပ်စစ်ဆေးမှု မှတ်တမ်း $1", "filedeleteerror-short": "ဖိုင်ဖျက်ရာတွင် အမှားအယွင်း - $1", "previousdiff": "← တည်းဖြတ်မူ အဟောင်း", "nextdiff": "ပိုသစ်သော တည်းဖြတ်မှု", @@ -1720,7 +1725,7 @@ "fileduplicatesearch-filename": "ဖိုင်အမည် -", "fileduplicatesearch-submit": "ရှာဖွေရန်", "specialpages": "အထူး စာမျက်နှာများ", - "specialpages-note": "* ပုံမှန် အထူးစာမျက်နှာများ။\n* ကန့်သတ်ထားသော အထူးစာမျက်နှာများ။", + "specialpages-note-restricted": "* ပုံမှန် အထူးစာမျက်နှာများ။\n* ကန့်သတ်ထားသော အထူးစာမျက်နှာများ။", "specialpages-group-maintenance": "ထိန်းသိမ်းမှု အစီရင်ခံချက်များ", "specialpages-group-other": "အခြားအထူးစာမျက်နှာများ", "specialpages-group-login": "Log in ဝင်ရန်/ အကောင့် ဖန်တီးရန်", @@ -1771,7 +1776,9 @@ "logentry-move-move_redir-noredirect": "$3 မှ $4 သို့ ပြန်ညွှန်းပေါ်ထပ်အုပ်ကာ ပြန်ညွှန်းချန်မထားဘဲ $1 က {{GENDER:$2|ရွှေ့ခဲ့သည်}}", "logentry-patrol-patrol-auto": "စာမျက်နှာ $3 ၏ တည်းဖြတ်မူ $4 အား $1 က စောင့်ကြပ်စစ်ဆေးပြီးကြောင်း အလိုအလျောက် {{GENDER:$2|မှတ်သားခဲ့သည်}}", "logentry-newusers-create": "အသုံးပြုသူအကောင့် $1 ကို {{GENDER:$2|ဖန်တီးခဲ့သည်}}", + "logentry-newusers-create2": "အသုံးပြုသူအကောင့် $3 ကို $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 a3b47fbc24..3f350c27a0 100644 --- a/languages/i18n/nan.json +++ b/languages/i18n/nan.json @@ -504,10 +504,13 @@ "minoredit": "Che sī sió siu-kái", "watchthis": "Kàm-sī chit ia̍h", "savearticle": "Pó-chûn chit ia̍h", + "publishpage": "Hoat-pò͘ bûn-chiuⁿ", + "publishchanges": "Hoat-pò͘ siu-kái", "preview": "Seng khoàⁿ-māi", "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": "無寫理由", @@ -529,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", @@ -551,6 +555,7 @@ "permissionserrorstext-withaction": "Lí bô ún-chún chò $2, in-ūi ē-kha\n{{PLURAL:$1|iân-kò͘|iân-kò͘}}:", "recreate-moveddeleted-warn": "'''Sè-jī: Lí taⁿ chún-pī beh khui ê ia̍h, chêng bat hō͘ lâng thâi tiāu koè.''' Lí tio̍h chim-chiok soà-chiap pian-chi̍p chit ia̍h ê pit-iàu-sèng. Chia ū chit ia̍h ê san-tû kì-lo̍k (deletion log) hō͘ lí chham-khó:", "edit-conflict": "Siu-kái sio-chhiong", + "postedit-confirmation-saved": "Lí ê siu-kái í-keng pó-chûn.", "defaultmessagetext": "Siat piān ê bûn-jī", "content-model-wikitext": "wikitext", "content-model-text": "sûn bûn-pún", diff --git a/languages/i18n/nap.json b/languages/i18n/nap.json index 116b216d98..911fc80856 100644 --- a/languages/i18n/nap.json +++ b/languages/i18n/nap.json @@ -41,7 +41,7 @@ "tog-enotifminoredits": "Famme na masciata mail pure quanno se fanno cagnamiente piccerille 'e paggene e files", "tog-enotifrevealaddr": "Fa' vedé 'o ndirizzo mail ncopp'e mmasciate 'e notifica", "tog-shownumberswatching": "Fa' vedé 'o nummero d'utente che teneno 'a paggena cuntrullata", - "tog-oldsig": "Firma 'e mmo:", + "tog-oldsig": "'A firma vosta (mo' mo'):", "tog-fancysig": "Piglia 'a firma comme fosse nu wikitesto (senza fà link automatico)", "tog-uselivepreview": "Abbìa 'o \"Live preview\"", "tog-forceeditsummary": "Chiere a mme quanno se sta azzeccanno nu campo oggetto abbacante", @@ -58,7 +58,7 @@ "tog-showhiddencats": "Fa' vedé 'e categurie annascunnute", "tog-norollbackdiff": "Nun fà vedé 'o cunfronto nfra verziune quanno se fà nu rollback ('o torna arreto)", "tog-useeditwarning": "Famme sapé quanno lasso na paggena 'e mudifeca senza sarvà 'e cagnamiente", - "tog-prefershttps": "Usa sempe na connessione sicura quanno s'accummincia sessione", + "tog-prefershttps": "Usa sempe na connessione sicura pe' tramente ca s'accummincia sessione", "underline-always": "Sèmpe", "underline-never": "Màje", "underline-default": "Tiene sempe le mpostazzione d' 'o navigatóre", @@ -153,19 +153,13 @@ "newwindow": "(s'arape n'ata fenèsta)", "cancel": "Scancèlla", "moredotdotdot": "Cchiù...", - "morenotlisted": "Chisto elenco nun è cumpreto.", + "morenotlisted": "Chisto elenco putesse nun essere cumpleto sano sano.", "mypage": "Paggena", "mytalk": "'E chiàcchieriate mmie", "anontalk": "Chiacchierate", "navigation": "Navigazzione", "and": " e", - "qbfind": "Truòva", - "qbbrowse": "Sfoglia", - "qbedit": "Càgna", - "qbpageoptions": "Chesta paggena", - "qbmyoptions": "'E ppaggene mie", "faq": "FAQ", - "faqpage": "Project:Domanne frequente", "actions": "Azione", "namespaces": "Namespace", "variants": "Variante", @@ -181,6 +175,7 @@ "searcharticle": "Vàje", "history": "Verziune 'e primma", "history_short": "Cronologgia", + "history_small": "cronologgia", "updatedmarker": "cagnamiénte 'e ll'urdema visita d' 'a mia", "printableversion": "Verzione pe' stampa", "permalink": "Jonta permanente", @@ -191,29 +186,22 @@ "edit-local": "Càgna descrizione lucale", "create": "Crèa", "create-local": "Azzecca descrizione lucale", - "editthispage": "Càgna chesta paggena", - "create-this-page": "Crèa sta paggena", "delete": "Scancèlla", - "deletethispage": "Scancèlla chésta paggena", - "undeletethispage": "Arrepiglia chista paggena", "undelete_short": "Arremedia {{PLURAL:$1|na verziona|$1 vverziune}}", "viewdeleted_short": "Vide {{PLURAL:$1|nu cagnamiénto scancellato|$1 cagnamiénte scancellate}}", "protect": "Prutegge", "protect_change": "càgna", - "protectthispage": "Ferma chesta paggena", "unprotect": "Càgna prutezzione", - "unprotectthispage": "Càgna prutezzione 'e chesta paggena", "newpage": "Paggena nòva", - "talkpage": "Paggena 'e chiàcchiera", "talkpagelinktext": "Chiàcchiera", "specialpage": "Paggena speciàle", "personaltools": "Strumiente perzonale", - "articlepage": "Vere a paggena e contenuto", "talk": "Chiàcchiera", "views": "Visite", "toolbox": "Strumiente", - "userpage": "Vere a paggena utente", - "projectpage": "Vere a paggena 'e servizio", + "tool-link-userrights": "Càgna gruppe {{GENDER:$1|utente}}", + "tool-link-userrights-readonly": "Vire gruppe {{GENDER:$1|utente}}", + "tool-link-emailuser": "Manna na masciata email a st'{{GENDER:$1|utente}}", "imagepage": "Vere a paggena d' 'o file", "mediawikipage": "Vere 'a mmasciata", "templatepage": "Vere 'o template", @@ -224,7 +212,7 @@ "redirectedfrom": "(Redirect 'a $1)", "redirectpagesub": "Paggena 'e redirect", "redirectto": "Reindirizza a:", - "lastmodifiedat": "Urdemo cagnamiénto pe' a paggena: $2, $1.", + "lastmodifiedat": "Sta paggena fuje, n'urdema vota, cagnàta 'o $1, 'e $2.", "viewcount": "Chesta paggena è stata liggiùta {{PLURAL:$1|una vòta|$1 vòte}}.", "protectedpage": "Paggena prutetta", "jumpto": "Vaje a:", @@ -397,7 +385,7 @@ "createacct-another-username-ph": "'Nserisce 'o nomme utente", "yourpassword": "Password:", "userlogin-yourpassword": "Password", - "userlogin-yourpassword-ph": "'Nserisce 'a toja password", + "userlogin-yourpassword-ph": "Nzertàte 'a password vuosta", "createacct-yourpassword-ph": "'Nserisce 'na password", "yourpasswordagain": "Ripete 'a password:", "createacct-yourpasswordagain": "Cunferma password", @@ -479,7 +467,7 @@ "eauthentsent": "Na mmasciata 'e conferma t'è stata mannata a l'indirizzo e-mail nzignàto.\nApprimm' 'e te mannà n'atu mail, hè 'a stà 'a ffà 'e struzione dint'a l'e-mail, pe' cunfermà ca 'o cunto fosse d' 'o tujo overo.", "throttled-mailpassword": "S'è mannata na mail pe te' riabbià 'a password 'a meno 'e {{PLURAL:$1|n'ora|$1 ore}}.\nPe' ce sparagnà abbuse, 'a funzione 'e riabbiamento d' 'a password se può usa sulamente na vota ogne {{PLURAL:$1|ora|$1 ore}}.", "mailerror": "Errore pe' tramente ca se mannava na mmasciata: $1", - "acct_creation_throttle_hit": "{{PLURAL:$1|1 registrazzione è già stata effettuata|$1 registrazzione song già state effettuate}} 'e qualcuno cu 'o tujo stisso innerezzo IP dint'ô urdemo juorno: è 'o massimo cunsentito 'n chisto periodo 'e tiempo.\nPerciò, 'e utente ca ausano chisto innerezzo IP nun possono registrarse ppe 'o mumiento.", + "acct_creation_throttle_hit": "'E vvisite a sta wiki ausanno l'IP tuoja se so' mise a crià {{PLURAL:$1|1 registrazzione|$1 registrazzione}} int'a ll'urdeme juorne ($2), chesto fosse 'o massimo premmesso pe' stu periodo 'e tiempo.\nPerciò, 'e utente ca ausano chisto innerezzo IP nun se ponno riggistrà ancora mò mò.", "emailauthenticated": "'O ndirizzo email è stato cunfermato 'o $2 a 'e $3.", "emailnotauthenticated": "'O ndirizzo 'e posta elettronica nun è stat'ancora cunfermato.\nNun se mannarranno mmasciate e-mail p' ' funzione ccà abbascio.", "noemailprefs": "Avite 'a specificà nu ndirizzo e-mail pe ll'attivà sti funzione.", @@ -528,7 +516,7 @@ "botpasswords-label-delete": "Scancèlla", "botpasswords-label-resetpassword": "Riabbìa 'a password", "botpasswords-label-grants": "Assegnaziune apprecabbele:", - "botpasswords-help-grants": "Ogne assegnazione dà acciesso a 'e deritte utente elencate ca n'utenza avesse già. Vedite 'a [[Special:ListGrants|tabbella 'e ll'assegnaziune]] pe' ne mòvere cchiù nfurmaziune.", + "botpasswords-help-grants": "L'assegnazione premmettessero ausà deritte utente elencate ca n'utenza avesse già. Premmettenno st'assegnazione ccà nun è ca ve facesse trasì int'a sti deritte, pecché 'o cunto vuosto nun 'e tenisse pe' n'atu mezzo. Vedite 'a [[Special:ListGrants|tabbella 'e ll'assegnaziune]] pe' ne mòvere cchiù nfurmaziune.", "botpasswords-label-grants-column": "Assegnaziune date", "botpasswords-bad-appid": "'O nomme bot \"$1\" nun è bbuono.", "botpasswords-insert-failed": "Nun se pò azzeccà 'o nomme bot \"$1\". Fosse stato già azzeccato?", @@ -539,7 +527,7 @@ "botpasswords-updated-body": "'A password bot \"$1\" 'a ll'utente \"$2\" fuje agghiurnata.", "botpasswords-deleted-title": "Password bot scancellata", "botpasswords-deleted-body": "'A password bot \"$1\" 'a ll'utente \"$2\" è stata scancellata.", - "botpasswords-newpassword": "'A password nòva pe' puté trasì cu $1 è $2. Pe' piacere signatevello chesto pe' ve ffà conzurtaziune future.", + "botpasswords-newpassword": "'A password nòva pe' puté trasì cu $1 è $2. Pe' piacere signatevello chesto pe' ve ffà conzurtaziune future.
    ('E bott viecchie addò servisse nu nomme utente comm'a chell' 'e l'utente, putite ancora ausà $3 comm' 'o nomm' 'utente e $4 comm' 'a password.)", "botpasswords-no-provider": "BotPasswordsSessionProvider nun è disponibbele.", "botpasswords-restriction-failed": "'E restriziune 'e password bot nun ve permettessero st'acciesso.", "botpasswords-invalid-name": "'O nomme utente nnecato nun cuntenesse nu spartetóre 'e bot password (\"$1\").", @@ -636,6 +624,7 @@ "blockedtitle": "Utente bloccato.", "blockedtext": "'O nomme utente o ll'IP vuosto è stato bloccato.\n\n'O blocco è stato mpustato 'a $1. 'O mutivo d' 'o blocco è chesto: ''$2''\n\n* Abbiàta d' 'o blocco: $8\n* Ammaturità d' 'o blocco: $6\n* Tiempo 'e blocco: $7\n\nPutite cuntattà $1 o n'atu [[{{MediaWiki:Grouppage-sysop}}|ammenistratore]] pe' discutere 'o blocco.\n\nVedite c' 'a funzione 'Scrivete a ll'utente' nun è attiva si nun s'è riggistrato 'o ndirizzo e-mail buono dint' 'e [[Special:Preferences|preferenze]] o pùre si ll'uso 'e tale funzione è stato bloccato.\n\n'O ndirizzo IP attuale è $3, 'o nummero ID d' 'o blocco è #$5.\nPe' piacere avite 'e specificà tutte sti dettaglie ccà ncoppa quanno facite cocche dumanna.", "autoblockedtext": "Ll'IP vuosto è stato bloccato pecché 'o steva piglianno n'atu utente, ch'è stato bloccato pe' $1.\n\n'O mutivo d' 'o blocco è chesto:\n\n:''$2''\n\n* Abbiàta d' 'o blocco: $8\n* Ammaturità d' 'o blocco: $6\n* Tiempo 'e blocco: $7\n\nPutite cuntattà $1 o n'atu [[{{MediaWiki:Grouppage-sysop}}|ammenistratore]] pe' discutere 'o blocco.\n\nVedite c' 'a funzione 'Scrivete a ll'utente' nun è attiva si nun s'è riggistrato 'o ndirizzo e-mail buono dint' 'e [[Special:Preferences|preferenze]] o pùre si ll'uso 'e tale funzione è stato bloccato.\n\n'O ndirizzo IP attuale è $3, 'o nummero ID d' 'o blocco è #$5.\nPe' piacere avite 'e specificà tutte sti dettaglie ccà ncoppa quanno facite cocche dumanna.", + "systemblockedtext": "'O nomme utente d' 'o vuosto o ll'IP address fosse stata automaticamente bluccata 'a MediaWiki.\n'O mutivo fosse chesto:\n\n:$2\n\n* Inizio d' 'o blocco: $8\n* Ammatura 'o blocco: $6\n* Intervall' 'e blocco: $7\n\n'O indirizzo IP 'e mò fosse $3.\nPe' piacere, facite specifice tuttuquante 'e ddettaglie ccà quanno iate a ghienchere na richiesta 'e chiarimiente.", "blockednoreason": "nisciuna ragione è stata indicata", "whitelistedittext": "Pe' cagnà 'e ppaggene è necessario $1.", "confirmedittext": "Pe puté cagnà paggene avite 'a cunfermà l'indirizzo e-mail.\nPe' piacere abbiate e ffà 'a validazione d' 'o ndirizzo e-mail pe' bbìa d' 'e [[Special:Preferences|preferenze d'utente]].", @@ -690,7 +679,7 @@ "readonlywarning": "Attenziò: 'o database è bloccato pe se ffà 'a manutenzione. P' 'o mumento nun se ponno sarvà 'e cagnamiente fatte.\nPe' nun 'e sperdere, copia sti cuntenute dint'a nu file 'e testo e sarvatillo pe' tramente c'aspiette 'o sblocco d' 'o database.\n\nL'ammenistratore 'e sistema ca mpustaje 'o blocco ave scritto sta spiegazione: $1.", "protectedpagewarning": "'''Attenziò: sta paggena è stata bloccata 'n modo tale ca sulamente l'utente ch' 'e privilegge d'ammenistratore 'a ponno cagnà.'''\nL'urdemo elemento d' 'o riggistro è scritto ccà abbascio pe' n'avé riferimento:", "semiprotectedpagewarning": "'''Nota:''' Sta paggena è stata bloccata 'n modo ca sulamente l'utente riggistrate 'a ponno cagnà.\nL'urdemo elemento d' 'o riggistro è scritto ccà abbascio pe n'avé nfurmazione:", - "cascadeprotectedwarning": "'''Attenziò:''' Sta paggena è stata bloccata 'n modo ca sulamente l'utente ch' 'e privilegge d'ammenistratore 'a ponno cagnà. Chesto succiere pecché 'a paggena è appennuta dint'a {{PLURAL:$1|la paggena innecata ccà abbascio, ch'è stata prutetta|'e paggene innecate ccà abbascio, che so' state prutette}} sciglienno 'a prutezione \"ricurziva\":", + "cascadeprotectedwarning": "Attenziò: Sta paggena è stata bloccata 'n modo ca sulamente l'utente ch' 'e [[Special:ListGroupRights|privilegge specifiche]] 'a ponno cagnà. Chesto succiere pecché 'a paggena è appennuta dint'a {{PLURAL:$1|la paggena innecata ccà abbascio, ch'è stata prutetta|'e paggene innecate ccà abbascio, che so' state prutette}} sciglienno 'a prutezione \"ricurziva\":", "titleprotectedwarning": "'''Attenziò: sta paggena è stata bloccata 'n modo ca fossero necessarie [[Special:ListGroupRights|deritte specifici]] p' 'a crià.'''\nL'urdemo elemento d' 'o riggistro è riportato ccà abbascio pe nfurmazione:", "templatesused": "{{PLURAL:$1|Template|Templates}} ausate 'a chesta paggena:", "templatesusedpreview": "{{PLURAL:$1|Template|Templates}} ausate dint'a st'anteprimma:", @@ -723,6 +712,8 @@ "invalid-content-data": "Date cuntenute nun buone", "content-not-allowed-here": "'O cuntenuto \"$1\" nun è permesso dint'a paggena [[$2]]", "editwarning-warning": "Ascenno 'e sta paggena putisse ffà sperdere 'e cagnamiente fatte.\nSi sì trasuto, allora può stutà st'avviso dint'a sezziona \"{{int:prefs-editing}}\" d' 'e preferenze.", + "editpage-invalidcontentmodel-title": "Mudell' 'e cuntenute nun suppurtato", + "editpage-invalidcontentmodel-text": "'O mudell' 'e cuntenute \"$1\" nun è suppurtato.", "editpage-notsupportedcontentformat-title": "Furmato d' 'o cuntenuto nun suppurtato", "editpage-notsupportedcontentformat-text": "'O furmato d' 'o cuntenuto $1 nun è suppurtato d' 'o mudello 'e cuntenuto $2.", "content-model-wikitext": "wikitesto", @@ -743,6 +734,8 @@ "post-expand-template-argument-warning": "'''Attenziò:''' sta paggena cuntene uno o cchiù argumente 'e template troppo gruosse pe' 'a spannere. Sti argumente se lassarranno fore.", "post-expand-template-argument-category": "Paggene ca cunteneno argumente nun cunziderate", "parser-template-loop-warning": "È stato scummigliato n'aniello d' 'o template: [[$1]]", + "template-loop-category": "Paggene ca chiammassero a esse stisse", + "template-loop-category-desc": "Sta paggena tenesse nu template ca chiammasse a essa stissa, cioè nu template addò sta mmescat' 'o template ca 'o chiammasse.", "parser-template-recursion-depth-warning": "È arrivato 'o lemmeto 'e ricurzione d' 'o template ($1)", "language-converter-depth-warning": "'O fùto d' 'o lemmeto d' 'o scagnatòre 'e lengua è appassato ($1)", "node-count-exceeded-category": "Paggene addò 'o nummero 'e núrece è stato appassato", @@ -777,8 +770,8 @@ "page_first": "primma", "page_last": "úrdema", "histlegend": "Confronto nfra verziune: sciglite 'e casciulelle c'attoccassero a 'e verziune che vulite cunfruntà e spremmite Invio o pure 'o buttóne ccà abbascio.\n\nLiggenda: '''({{int:cur}})''' = differenze c' 'a verzione 'e mmò, '''({{int:last}})''' = differenze c' 'a verzione 'e primma, '''{{int:minoreditletter}}''' = cagnamiento minore", - "history-fieldset-title": "Naviga dint' 'a cronologgia", - "history-show-deleted": "Solo chille canciellate", + "history-fieldset-title": "Circa pe' verziune", + "history-show-deleted": "Sulo 'e verziune scancellate", "histfirst": "primma", "histlast": "urdema", "historysize": "({{PLURAL:$1|1 byte|$1 byte}})", @@ -925,15 +918,16 @@ "searchprofile-advanced-tooltip": "Circa dint'e namespace perzonalizzate", "search-result-size": "$1 ({{PLURAL:$2|'na parola|$2 parole}})", "search-result-category-size": "{{PLURAL:$1|1 utente|$1 utente}} ({{PLURAL:$2|1 sottocategurìa|$2 sottocategurìe}}, {{PLURAL:$3|1 file|$3 files}})", - "search-redirect": "(redirect $1)", + "search-redirect": "(redirect 'a $1)", "search-section": "(sezzione $1)", "search-category": "(categurìa $1)", "search-file-match": "(currispunnenza dint' 'e cuntenute d' 'o file)", "search-suggest": "Prova chisto: $1", "search-rewritten": "Mmustann' 'e risultate pe' $1. Circa mmece pe' $2.", - "search-interwiki-caption": "Prugiette frate", + "search-interwiki-caption": "Risultate 'a prugiette frate", "search-interwiki-default": "Risultate 'a $1:", "search-interwiki-more": "(cchiù)", + "search-interwiki-more-results": "cchiù risultate", "search-relatedarticle": "Azzeccato", "searchrelated": "azzeccato", "searchall": "Tutte", @@ -951,6 +945,7 @@ "search-external": "Ricerca 'a fore", "searchdisabled": "'A ricerca dint'a {{SITENAME}} nun è attiva; pe' tramente se putesse ausà nu mutore 'e cerca sterno comm'a Google. (Avite 'e sapé però, ca sti cuntenute d' 'o {{SITENAME}} dint' 'e mutore, può darse ca nun stanno agghiurnate.)", "search-error": "È succiesso n'errore pe' tramente ca se faceva 'a ricerca: $1", + "search-warning": "È succiesso n'avvertimento pe' tramente ca se vaceva 'a ricerca: $1", "preferences": "Preferenze d''e mmeje", "mypreferences": "Preferenze d''e mmeje", "prefs-edits": "Cagnamiente affettuate:", @@ -992,7 +987,7 @@ "prefs-help-recentchangescount": "Chesto ntenne ll'urdeme cagnamiente, 'e cronologgie 'e paggena, e riggistre.", "prefs-help-watchlist-token2": "Chest'è 'a chiave segreta pe se ffà 'o feed web 'e l'elenco 'e cuntrolo d' 'o vuosto.\nSi coccheruno 'a cunoscesse, allora putesse vedé l'elenco 'e cuntrollo, picciò nun 'a spartite. [[Special:ResetTokens|Cliccate ccà se tenite necessità d' 'a rimpizzà]].", "savedprefs": "'E preferenze songo state sarvate.", - "savedrights": "'E dritte 'e l'utente {{GENDER:$1|$1}} sto state sarvate.", + "savedrights": "'E dritte 'e gruppe 'utente {{GENDER:$1|$1}} sto state sarvate.", "timezonelegend": "Fuso orario:", "localtime": "Ora lucale:", "timezoneuseserverdefault": "Aúsa ora predefinita d' 'o wiki ($1)", @@ -1022,6 +1017,7 @@ "youremail": "E-mail:", "username": "{{GENDER:$1|Nomme utente}}:", "prefs-memberingroups": "{{GENDER:$2|Membro}} {{PLURAL:$1|d' 'o gruppo|d' 'e gruppe}}:", + "group-membership-link-with-expiry": "$1 (nzin' 'a $2)", "prefs-registration": "Data 'e riggistrazione:", "yourrealname": "Nomme vero", "yourlanguage": "Lengua:", @@ -1060,21 +1056,32 @@ "prefs-help-prefershttps": "Sta preferenza averrà affetto 'a 'o prossimo acciesso vuosto.", "prefswarning-warning": "Avite fatto cagnamiente a 'e preferenze d' 'e vuoste ca nun so' stat'ancora sarvate.\nSi ascite 'a sta paggena senza clickà \"$1\" 'e preferenze d' 'e vuoste nun sarranno agghiurnate.", "prefs-tabs-navigation-hint": "Suggerimento: se ponno ausà 'e buttòne 'e freccia a manca e a dritta pe' ve muovere nfra 'e schede dint'a l'elenco d' 'e schede.", - "userrights": "Gestione d' 'e permesse 'e l'utente", - "userrights-lookup-user": "Gestione 'e gruppe d'utenza", + "userrights": "Deritte utente", + "userrights-lookup-user": "Sciglie n'utente", "userrights-user-editname": "Nzertàte nu nomme utente:", - "editusergroup": "Cagnate 'e gruppe d'{{GENDER:$1|utenze}}", + "editusergroup": "Càrreca gruppe 'utente", "editinguser": "Cagnamiento d' 'e deritte d'{{GENDER:$1|utente}} '''[[User:$1|$1]]''' $2", - "userrights-editusergroup": "Cagnate 'e gruppe d'utenze", + "viewinguserrights": "Verenn' 'e deritte '{{GENDER:$1|utente}} [[User:$1|$1]] $2", + "userrights-editusergroup": "Cagna 'e gruppe '{{GENDER:$1|utente}}", + "userrights-viewusergroup": "Vire gruppe {{GENDER:$1|utente}}", "saveusergroups": "Sarvate 'e gruppe d'{{GENDER:$1|utenza}}", "userrights-groupsmember": "Ffà parte {{PLURAL:$1|d' 'o gruppo|d' 'e gruppe}}:", "userrights-groupsmember-auto": "Membro mplicito 'e:", - "userrights-groups-help": "Putite cagnà 'e gruppe assegnate a l'utente:\n* Na cascia 'e spunta scigliuta significasse ca appartenenza 'e l'utente a 'o gruppo\n* Na cascia 'e spunta nun scigliuta significasse 'a nun appartenenza a 'o gruppo.\n* 'O simmolo * significasse ca nun se può scancellà l'appartenenza a 'o gruppo aropp'a ll'avé miso (o viceversa).", + "userrights-groups-help": "Putite cagnà 'e gruppe assegnate a l'utente:\n* Na cascia 'e spunta scigliuta significasse ca appartenenza 'e l'utente a 'o gruppo\n* Na cascia 'e spunta nun scigliuta significasse 'a nun appartenenza a 'o gruppo.\n* 'O simmolo * significasse ca nun se può scancellà l'appartenenza a 'o gruppo aropp'a ll'avé miso (o viceversa).\n* 'O # significasse ca vuje putite surtanto tirà arreto nu tiempo 'e ammatura 'e stu gruppo utente; nun 'o putite fà annanze.", "userrights-reason": "Mutivo:", "userrights-no-interwiki": "Nun tenite permesse pe' cagnà 'e deritte 'e l'utente ncopp'a l'ati wiki.", "userrights-nodatabase": "'O database $1 nun esiste o nun è nu database lucale.", "userrights-changeable-col": "Gruppe ca putite cagnà", "userrights-unchangeable-col": "Gruppe ca nun putite cagnà", + "userrights-expiry-current": "Ammatura 'o $1", + "userrights-expiry-none": "Nun ammaturasse", + "userrights-expiry": "Ammatura:", + "userrights-expiry-existing": "'O tiempo d'ammaturamiento esistente: $3, $2", + "userrights-expiry-othertime": "N'ata durata:", + "userrights-expiry-options": "1 juorne:1 day,1 semmana:1 week,1 mese:1 month,3 mise:3 mise,6 mesi:6 months,1 anno:1 year", + "userrights-invalid-expiry": "'O tiempo pe' quanno ammatura 'o gruppo \"$1\" nun è buono.", + "userrights-expiry-in-past": "'O tiempo pe' quanno ammatura 'o gruppo \"$1\" fosse int' 'o passato.", + "userrights-cannot-shorten-expiry": "Nun putite turnà arreto 'o tiempo ammatura int' 'o gruppo \"$1\". Surtanto ll'utente cu nu permesso pe' puté azzeccà o luvà stu gruppo ponno ffà annanze 'e tiempe ammaturamiento.", "userrights-conflict": "Conflitto 'e cagnamiento 'e deritte utente! Cuntrullate e cunfermate 'e cagnamiente vuoste.", "group": "Gruppo:", "group-user": "Utente", @@ -1201,6 +1208,7 @@ "grant-basic": "Deritte 'e base", "grant-viewdeleted": "Vide 'e file e paggene scancellate", "grant-viewmywatchlist": "Vide l'elenco 'e cuntrullate", + "grant-viewrestrictedlogs": "Vide 'e valure private d' 'o riggistro", "newuserlogpage": "Riggistro 'e nuove utente", "newuserlogpagetext": "Chest'è nu riggistro 'e criazione d'utenze.", "rightslog": "Deritte 'e ll'utente", @@ -1224,7 +1232,7 @@ "action-upload_by_url": "carreca stu file 'a n'indirizzo URL", "action-writeapi": "usa l'API 'n scrittura", "action-delete": "scancèlla chista paggena", - "action-deleterevision": "scancellà sta verziona", + "action-deleterevision": "scancellà 'e verziune", "action-deletedhistory": "vide 'a cronologgia scancellata 'e sta paggena", "action-browsearchive": "ascìa dint' 'e paggene scancellate", "action-undelete": "arripiglia chista paggena", @@ -3166,7 +3174,6 @@ "fileduplicatesearch-noresults": "Nisciuno file chiamato \"$1\" è stato accucchiato.", "specialpages": "Paggene speciale", "specialpages-note-top": "Liggenda", - "specialpages-note": "* Paggene speciale normale.\n* Paggene speciale ch' 'e restriziune.", "specialpages-group-maintenance": "Report 'e manutenzione", "specialpages-group-other": "Ati paggene speciale", "specialpages-group-login": "Trasite o criate n'acciesso nuovo", diff --git a/languages/i18n/nb.json b/languages/i18n/nb.json index 1bae5d8c3b..c882caf5a7 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", @@ -709,8 +710,8 @@ "explainconflict": "Noen andre har endret teksten siden du begynte å redigere.\nDen øverste boksen inneholder den nåværende teksten.\nDine endringer vises i den nederste boksen.\nDu er nødt til å flette dine endringer sammen med den nåværende teksten.\n'''Kun''' teksten i den øverste tekstboksen blir lagret når du trykker «$1».", "yourtext": "Din tekst", "storedversion": "Den lagrede versjonen", - "nonunicodebrowser": "'''Advarsel: Nettleseren din har ikke Unicode-støtte.'''\nFor å unngå problemer blir som ikke er med i ASCII vist som heksadesimale kode i redigeringsruten.", "editingold": "'''Advarsel: Du redigerer en gammel versjon av denne siden.'''\nOm du lagrer den slik vil alle endringer som ble gjort etter revisjonen du redigerer gå tapt.", + "unicode-support-fail": "Det virker som om nettleseren din ikke støtter Unicode. Det er påkrevd for å redigere sider, så redigeringen din ble ikke lagret.", "yourdiff": "Forskjeller", "copyrightwarning": "Merk at alle bidrag til {{SITENAME}} anses som frigitt under $2 (se $1 for detaljer).\nOm du ikke vil at ditt materiale skal kunne redigeres og distribueres fritt må du ikke lagre det her.
    \nDu lover oss også at du har skrevet teksten selv, eller kopiert den fra en kilde i offentlig eie eller en annen fri ressurs.\n'''Ikke lagre opphavsrettsbeskyttet materiale uten tillatelse!'''", "copyrightwarning2": "Vennligst merk at alle bidrag til {{SITENAME}} kan bli redigert, endret eller fjernet av andre bidragsytere.\nOm du ikke vil at dine bidrag skal kunne redigeres fritt, ikke legg det til her.
    \nDu lover ogsÃ¥ at du har skrevet dette selv, eller kopiert det fra en ressurs som er i offentlig eie eller en lignende fri ressurs (se $1 for detaljer).\n'''Ikke legg til opphavsrettsbeskyttet materiale uten tillatelse!'''", @@ -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.", @@ -777,6 +778,7 @@ "parser-template-loop-warning": "Mal-loop oppdaget: [[$1]]", "template-loop-category": "Sider med malsløyfer", "template-loop-category-desc": "Siden inneholder en malløkke, altsÃ¥ en mal som kaller seg selv rekursivt.", + "template-loop-warning": "Advarsel: Denne sider henter inn [[:$1]], som forÃ¥rsaker en malsløyfe (en uendelig rekursiv innhenting).", "parser-template-recursion-depth-warning": "Mal er brukt for mange ganger ($1)", "language-converter-depth-warning": "Dybdegrense for sprÃ¥kkonvertering overskredet ($1)", "node-count-exceeded-category": "Sider hvor antallet noder er overskredet", @@ -928,7 +930,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 +958,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 +1008,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", @@ -1046,6 +1048,7 @@ "timezoneregion-indian": "Indiahavet", "timezoneregion-pacific": "Stillehavet", "allowemail": "Tillat andre Ã¥ sende meg e-post", + "email-blacklist-label": "Forhindre disse brukerne fra Ã¥ sende meg e-post:", "prefs-searchoptions": "Søk", "prefs-namespaces": "Navnerom", "default": "standard", @@ -1087,6 +1090,7 @@ "prefs-editor": "Tekstbehandling", "prefs-preview": "ForhÃ¥ndsvisning", "prefs-advancedrc": "Avanserte alternativ", + "prefs-opt-out": "Velg Ã¥ ikke fÃ¥ forbedret utgave", "prefs-advancedrendering": "Avanserte alternativer", "prefs-advancedsearchoptions": "Avanserte alternativer", "prefs-advancedwatchlist": "Avanserte alternativer", @@ -1318,13 +1322,25 @@ "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-tag-remove": "Fjern «$1»", + "rcfilters-legend-heading": "Liste over forkortelser:", + "rcfilters-other-review-tools": "Andre gjennomgangsverktøy", + "rcfilters-group-results-by-page": "Grupper resultater etter side", + "rcfilters-grouping-title": "Gruppering", "rcfilters-activefilters": "Aktive filtre", "rcfilters-advancedfilters": "Avanserte filtre", + "rcfilters-limit-title": "Endringer som skal vises", + "rcfilters-limit-shownum": "Vis {{PLURAL:$1|den siste endringen|de siste $1 endringene}}", + "rcfilters-days-title": "De siste dagene", + "rcfilters-hours-title": "De siste timene", + "rcfilters-days-show-days": "{{PLURAL:$1|Én dag|$1 dager}}", + "rcfilters-days-show-hours": "{{PLURAL:$1|Én time|$1 timer}}", + "rcfilters-highlighted-filters-list": "Fremhevet: $1", "rcfilters-quickfilters": "Lagrede filtre", "rcfilters-quickfilters-placeholder-title": "Ingen lenker lagret enda", "rcfilters-quickfilters-placeholder-description": "For Ã¥ lagre filterinnstillingene og gjenbruk dem senere, klikk pÃ¥ bokmerkeikonet i omrÃ¥det Aktive Filtre under.", @@ -1336,43 +1352,41 @@ "rcfilters-savedqueries-new-name-label": "Navn", "rcfilters-savedqueries-new-name-placeholder": "Beskriv formÃ¥let til filteret", "rcfilters-savedqueries-apply-label": "Opprett filter", + "rcfilters-savedqueries-apply-and-setdefault-label": "Opprett standardfilter", "rcfilters-savedqueries-cancel-label": "Avbryt", "rcfilters-savedqueries-add-new-title": "Lagre de gjeldende filterinnstillingene", "rcfilters-restore-default-filters": "Gjenopprett standardfiltre", "rcfilters-clear-all-filters": "Nullstill alle filtre", - "rcfilters-search-placeholder": "Filtrer siste endringer (søk eller begyn Ã¥ skrive)", + "rcfilters-show-new-changes": "Vis de nyeste endringene", + "rcfilters-search-placeholder": "Filtrer siste endringer (gÃ¥ gjennom eller begynn Ã¥ skrive)", "rcfilters-invalid-filter": "Ugyldig filter", "rcfilters-empty-filter": "Ingen aktive filtre. Alle bidrag vises.", "rcfilters-filterlist-title": "Filtre", - "rcfilters-filterlist-whatsthis": "Hva er dette?", - "rcfilters-filterlist-feedbacklink": "Gi tilbakemelding pÃ¥ de nye (beta)filtrene", + "rcfilters-filterlist-whatsthis": "Hvordan virker dette?", + "rcfilters-filterlist-feedbacklink": "Gi tilbakemelding pÃ¥ disse (nye) filterverktøyene", "rcfilters-highlightbutton-title": "Marker resultater", "rcfilters-highlightmenu-title": "Velg en farge", "rcfilters-highlightmenu-help": "Velg en farge for Ã¥ merke denne egenskapen", "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-filtergroup-registration": "Brukerregistrering", - "rcfilters-filter-registered-label": "Registrerte", - "rcfilters-filter-registered-description": "Innloggede brukere.", - "rcfilters-filter-unregistered-label": "Uregistrerte", - "rcfilters-filter-unregistered-description": "Brukere som ikke er logget inn.", - "rcfilters-filter-unregistered-conflicts-user-experience-level": "Dette filteret konflikterer med følgende {{PLURAL:$2|erfaringsfilter|erfaringsfiltre}}, som finner kun registrerte brukere: $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.", "rcfilters-filter-editsbyother-label": "Endringer av andre", "rcfilters-filter-editsbyother-description": "Alle endringer utenom dine egne.", - "rcfilters-filtergroup-userExpLevel": "ErfaringsnivÃ¥ (kun for registrerte brukere)", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Erfaringsfiltre finner kun registrerte brukere, sÃ¥ dette filteret konflikterer med filteret «Uregistrerte».", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Filteret «Uregistrerte» konflikterer med ett eller flere erfaringsfiltre, som kun finner registrerte brukere. De konflikterende filtrene merkes i omrÃ¥det for aktive filtre ovenfor.", + "rcfilters-filtergroup-userExpLevel": "Brukerregistrering og -erfaring", + "rcfilters-filter-user-experience-level-registered-label": "Registrerte", + "rcfilters-filter-user-experience-level-registered-description": "Innloggede brukere.", + "rcfilters-filter-user-experience-level-unregistered-label": "Uregistrerte", + "rcfilters-filter-user-experience-level-unregistered-description": "Brukere som ikke er logget inn.", "rcfilters-filter-user-experience-level-newcomer-label": "Nykommere", - "rcfilters-filter-user-experience-level-newcomer-description": "Færre enn 10 redigeringer og 4 dagers aktivitet.", + "rcfilters-filter-user-experience-level-newcomer-description": "Registrerte brukere med færre enn 10 redigeringer og 4 dagers aktivitet.", "rcfilters-filter-user-experience-level-learner-label": "Nybegynnere", - "rcfilters-filter-user-experience-level-learner-description": "Mer erfaring enn «Nykommere», men mindre enn «Erfarne brukere».", + "rcfilters-filter-user-experience-level-learner-description": "Registrerte brukere med mer erfaring enn «Nykommere», men mindre enn «Erfarne brukere».", "rcfilters-filter-user-experience-level-experienced-label": "Erfarne brukere", - "rcfilters-filter-user-experience-level-experienced-description": "Mer enn 30 dagers aktivitet og 500 redigeringer.", + "rcfilters-filter-user-experience-level-experienced-description": "Registrerte brukere med mer enn 500 redigeringer og 30 dagers aktivitet.", "rcfilters-filtergroup-automated": "Automatiske bidrag", "rcfilters-filter-bots-label": "Bot", "rcfilters-filter-bots-description": "Redigeringer gjort med automatiske verktøy.", @@ -1395,6 +1409,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 ...", @@ -1407,21 +1426,35 @@ "rcfilters-hideminor-conflicts-typeofchange-global": "Filteret for «Mindre endringer» konflikterer med ett eller flere endringstypefiltre, fordi visse endringstyper ikke kan merkes som «mindre». De konflikterende fultrene merkes i omrÃ¥det for aktive filtre ovenfor.", "rcfilters-hideminor-conflicts-typeofchange": "Visse endringstyper kan ikke merkes som «mindre», sÃ¥ dette filteret konflikterer med følgende endringstypefiltre: $1", "rcfilters-typeofchange-conflicts-hideminor": "Dette endringstypefilteret konflikterer med filteret for «Mindre endringer». Visse endringstyper kan ikke merkes som «mindre».", - "rcfilters-filtergroup-lastRevision": "Siste revisjon", + "rcfilters-filtergroup-lastRevision": "Siste revisjoner", "rcfilters-filter-lastrevision-label": "Siste revisjon", - "rcfilters-filter-lastrevision-description": "Den nyeste endringen av en side.", - "rcfilters-filter-previousrevision-label": "Tidligere revisjoner", - "rcfilters-filter-previousrevision-description": "Alle endringer som ikke er den nyeste endringen av en side.", + "rcfilters-filter-lastrevision-description": "Kun den nyeste endringen av en side.", + "rcfilters-filter-previousrevision-label": "Ikke den siste versjonen", + "rcfilters-filter-previousrevision-description": "Alle endringer som ikke er den nyeste versjonen.", "rcfilters-filter-excluded": "Ekskludert", "rcfilters-tag-prefix-namespace-inverted": ":not $1", + "rcfilters-exclude-button-off": "Ekskluder de valgte", + "rcfilters-exclude-button-on": "Ekskluderer de valgte", + "rcfilters-view-advanced-filters-label": "Avanserte filtre", "rcfilters-view-tags": "Taggede redigeringer", + "rcfilters-view-namespaces-tooltip": "Filtrer resultater etter navnerom", + "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.", + "rcfilters-watchlist-edit-watchlist-button": "Rediger listen over sider du overvÃ¥ker", + "rcfilters-watchlist-showupdated": "Endringer til sider du ikke har besøkt siden endringene ble gjort vises med fet skrift.", + "rcfilters-preference-label": "Skjul den forbedrede versjonen av siste endringer", + "rcfilters-preference-help": "Fjerner grensesnittendringen fra 2017 og alle verktøyene som ble lagt fra og med da.", "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", @@ -1433,13 +1466,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", @@ -1459,7 +1492,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", @@ -1471,6 +1504,7 @@ "uploadbtn": "Last opp fil", "reuploaddesc": "Avbryt opplasting og gÃ¥ tilbake til opplastingsskjemaet", "upload-tryagain": "Send inn endret filbeskrivelse", + "upload-tryagain-nostash": "Send inn nyopplastet fil og endret beskrivelse", "uploadnologin": "Ikke logget inn", "uploadnologintext": "Du mÃ¥ $1 for Ã¥ kunne laste opp filer.", "upload_directory_missing": "Oppplastingsmappen ($1) mangler og kunne ikke opprettes av tjeneren.", @@ -1530,6 +1564,7 @@ "file-deleted-duplicate-notitle": "En annen fil identisk med denne filen har tidligere blitt slettet og tittelen har blitt fjernet. Du bør sjekke med noen som kan se pÃ¥ fjernede fildata Ã¥ vurdere saken før filen lastes opp igjen.", "uploadwarning": "Opplastingsadvarsel", "uploadwarning-text": "Vennligst endre filbeskrivelsen nedenfor og prøv igjen.", + "uploadwarning-text-nostash": "Vennligst last opp filen pÃ¥ nytt, endre beskrivelsen nedenfor og prøv igjen.", "savefile": "Lagre fil", "uploaddisabled": "Opplastingsfunksjonen er slÃ¥tt av", "copyuploaddisabled": "Opplasting via nettadresse deaktivert.", @@ -1692,7 +1727,7 @@ "listfiles_size": "Størrelse (bytes)", "listfiles_description": "Beskrivelse", "listfiles_count": "Versjoner", - "listfiles-show-all": "Inkluderer gamle versjoner av bilder", + "listfiles-show-all": "Inkluderer gamle versjoner av filer", "listfiles-latestversion": "Gjeldende versjon", "listfiles-latestversion-yes": "Ja", "listfiles-latestversion-no": "Nei", @@ -1703,7 +1738,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", @@ -1795,6 +1830,8 @@ "pageswithprop-legend": "Sider med en sideverdi", "pageswithprop-text": "Denne siden lister opp sider som bruker en viss sideverdi.", "pageswithprop-prop": "Verdinavn:", + "pageswithprop-reverse": "Sorter i omvendt rekkefølge", + "pageswithprop-sortbyvalue": "Sorter etter egenskapsverdi", "pageswithprop-submit": "GÃ¥", "pageswithprop-prophidden-long": "skjult verdi for egenskap langtekst ($1)", "pageswithprop-prophidden-binary": "skjult verdi for binæregenskap ($1)", @@ -1812,7 +1849,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}}", @@ -2131,6 +2168,7 @@ "enotif_lastdiff": "Se $1 for Ã¥ se denne endringen.", "enotif_anon_editor": "anonym bruker $1", "enotif_body": "Kjære $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nRedigeringssammendrag: $PAGESUMMARY $PAGEMINOREDIT\n\nKontakt brukeren:\ne-post: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nDet vil ikke komme flere varsler om endringer pÃ¥ denne siden med mindre du besøker den mens du er innlogget. Du kan ogsÃ¥ fjerne varslingsflagg for alle overvÃ¥kede sider i overvÃ¥kningslisten din.\n\n Ditt vennlige varslingssystem for {{SITENAME}}\n\n--\nFor Ã¥ endre innstillingene for e-postvarsler, se\n{{canonicalurl:{{#special:Preferences}}}}\n\nFor Ã¥ endre innstillingene for overvÃ¥kningslisten, se\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nFor Ã¥ slette en side fra overvÃ¥kningssiden, se\n$UNWATCHURL\n\nTilbakemelding og videre assistanse:\n$HELPPAGE", + "enotif_minoredit": "Dette er en mindre endring", "created": "opprettet", "changed": "endret", "deletepage": "Slett side", @@ -2159,6 +2197,7 @@ "delete-warning-toobig": "Denne siden har en stor redigeringshistorikk, med over {{PLURAL:$1|$1 revisjon|$1 revisjoner}}. Sletting av denne siden kan forstyrre databasen til {{SITENAME}}; vær varsom.", "deleteprotected": "Du kan ikke slette denne siden fordi den er beskyttet.", "deleting-backlinks-warning": "Advarsel: [[Special:WhatLinksHere/{{FULLPAGENAME}}|Andre sider]] lenker til eller inkluderer siden du er i ferd med Ã¥ slette.", + "deleting-subpages-warning": "Advarsel: Siden du er i ferd med Ã¥ slette har [[Special:PrefixIndex/{{FULLPAGENAME}}/|{{PLURAL:$1|en underside|$1 undersider|51=over 50 undersider}}]].", "rollback": "Fjern redigeringer", "rollbacklink": "tilbakestill", "rollbacklinkcount": "tilbakestill {{PLURAL:$1|én endring|$1 endringer}}", @@ -2187,7 +2226,7 @@ "changecontentmodel-nodirectediting": "Innholdsmodellen $1 støtter ikke direkte redigering", "changecontentmodel-emptymodels-title": "Ingen innholdsmodeller er tilgjengelige", "changecontentmodel-emptymodels-text": "Innholdet pÃ¥ [[:$1]] kan ikke konverteres til noen type.", - "log-name-contentmodel": "Logg over endringer i endringsloggen", + "log-name-contentmodel": "Logg over endringer av innholdsmodell", "log-description-contentmodel": "Denne siden lister endringer i innholdsmodellen til sider, og sider som ble laget med andre innholdsmodeller enn den som er standard.", "logentry-contentmodel-new": "$1 {{GENDER:$2|opprettet}} siden $3 med den ikke-standard innholdsmodellen «$5»", "logentry-contentmodel-change": "$1 {{GENDER:$2|endret}} innholdsmodellen for siden $3 fra «$4» til «$5»", @@ -2255,7 +2294,7 @@ "undeletepage": "Se og gjenopprett slettede sider", "undeletepagetitle": "'''Følgende innhold er slettede revisjoner av [[:$1]].'''", "viewdeletedpage": "Vis slettede sider", - "undeletepagetext": "Følgende {{PLURAL:$1|side|sider}} er slettet, men finnes fortsatt i arkivet og kan gjenopprettes. Arkivet blir periodevis slettet.", + "undeletepagetext": "Følgende {{PLURAL:$1|side|sider}} er slettet, men finnes fortsatt i arkivet og kan gjenopprettes. Arkivet kan periodevis bli slettet.", "undelete-fieldset-title": "Gjenopprett revisjoner", "undeleteextrahelp": "For Ã¥ gjenopprette hele sidens historikk, la alle boksene være tomme og klikk '''''{{int:undeletebtn}}'''''.\nFor Ã¥ gjenopprette kun deler, kryss av boksene for revisjonene du vil gjenopprette og klikk '''''{{int:undeletebtn}}'''''.", "undeleterevisions": "{{PLURAL:$1|Én revisjon|$1 revisjoner}} slettet", @@ -2277,6 +2316,7 @@ "undelete-search-title": "Søk i slettede sider", "undelete-search-box": "Søk i slettede sider", "undelete-search-prefix": "Vis sider som starter med:", + "undelete-search-full": "Vis sidetitler som inneholder:", "undelete-search-submit": "Søk", "undelete-no-results": "Ingen passende sider funnet i slettingsarkivet.", "undelete-filename-mismatch": "Kan ikke gjenopprette filrevisjon med tidstrykk $1: ikke samsvarende filnavn", @@ -2290,10 +2330,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", @@ -2323,7 +2363,8 @@ "sp-contributions-newonly": "Bare vis bidrag som er sideopprettinger", "sp-contributions-hideminor": "Skjul mindre endringer", "sp-contributions-submit": "Søk", - "whatlinkshere": "Hva lenker hit", + "sp-contributions-outofrange": "Kan ikke vise resultater. Det gitte IP-intervallet er større enn CIDR-grensen pÃ¥ /$1.", + "whatlinkshere": "Det som lenker hit", "whatlinkshere-title": "Sider som lenker til «$1»", "whatlinkshere-page": "Side:", "linkshere": "Følgende sider lenker til '''[[:$1]]''':", @@ -2611,7 +2652,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.", @@ -2638,10 +2679,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", @@ -2659,7 +2700,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.", @@ -2872,7 +2913,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", @@ -3421,7 +3462,7 @@ "fileduplicatesearch-noresults": "Ingen ved navn «$1» funnet.", "specialpages": "Spesialsider", "specialpages-note-top": "Tegnforklaring", - "specialpages-note": "* Normale spesialsider.\n* Spesialsider med begrenset tilgang.", + "specialpages-note-restricted": "* Vanlige spesialsider.\n* Spesialsider med begrenset tilgang.", "specialpages-group-maintenance": "Vedlikeholdsrapporter", "specialpages-group-other": "Andre spesialsider", "specialpages-group-login": "Innlogging / opprette bruker", @@ -3540,6 +3581,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..ff06964788 100644 --- a/languages/i18n/ne.json +++ b/languages/i18n/ne.json @@ -24,7 +24,8 @@ "जनक राज भट्ट", "Suniltheblue", "Irus", - "रमेश सिंह बोहरा" + "रमेश सिंह बोहरा", + "Nirajan pant" ] }, "tog-underline": "रेखाङ्कित लिङ्क:", @@ -54,7 +55,7 @@ "tog-shownumberswatching": "निगरानी गरिरहेका प्रयोगकर्ताहरूको संख्या देखाउने", "tog-oldsig": "वर्तमान हस्ताक्षर:", "tog-fancysig": "मेरो दस्तखतलाई विकि पाठको रुपमा लिने (स्वत लिङ्क बिना)", - "tog-uselivepreview": "प्रत्यक्ष पूर्वरुप प्रयोग गर्नुहोस", + "tog-uselivepreview": "पृष्ठ पुनर्भरण नगरीकन पूर्वावलोकनहरू देखाउनुहोस्", "tog-forceeditsummary": "खाली सम्पादन शीर्षक प्रविष्टि गरेमा मलाई सोध्ने", "tog-watchlisthideown": "मेरा सम्पादनहरू निगनारी सूचीबाट लुकाउने", "tog-watchlisthidebots": "बोट सम्पादनहरू निगरानी सूचीबाट लुकाउने", @@ -230,7 +231,7 @@ "jumptonavigation": "अन्वेषण", "jumptosearch": "खोज्नुहोस्", "view-pool-error": "माफ गर्नुहोस् , यस समयमा सर्भरहरूमा कार्यभार उच्च रहेको छ ।\nअति धेरै प्रयोगकर्ताहरू यो पृष्ट हेर्ने प्रयास गरी रहनु भएको छ।\nकृपया यो पृष्ठ पुन: हेर्नु अगाडि केही समय पर्खिदिनुहोस् ।\n\n$1", - "generic-pool-error": "माफ गर्नुहोस् , यस समयमा सर्भरहरुमा कार्यभार उच्च रहेको छ।\nअति धेरै प्रयोगकर्ताहरू यो पृष्ट हेर्ने प्रयास गरी रहनु भएको छ।\nकृपया यो सामग्री हेर्नु अगाडि केही समय पर्खिदिनुहोस् ।", + "generic-pool-error": "माफ गर्नुहोस् , यस समयमा सर्भरहरूमा कार्यभार उच्च रहेको छ।\nअति धेरै प्रयोगकर्ताहरू यो पृष्ट हेर्ने प्रयास गरी रहनु भएको छ।\nकृपया यो सामग्री हेर्नु अगाडि केही समय पर्खिदिनुहोस् ।", "pool-timeout": "समय सकियो बन्द गर्ने प्रतीक्षामा", "pool-queuefull": "प्रतीक्षा पङ्क्ति भरियो", "pool-errorunknown": "अज्ञात त्रुटि", @@ -429,6 +430,7 @@ "userlogin-resetpassword-link": "पासवर्ड भुल्नुभयो?", "userlogin-helplink2": "प्रवेश गर्नको लागि सहयोग", "userlogin-loggedin": "तपाईं {{GENDER:$1|$1}}को रूपमा प्रवेश (लग इन) भइ सक्नु भयो ।\nअर्को प्रयोगकर्ताको रूपमा प्रवेश (लग इन) गर्न तलको फारम प्रयोग गर्नुहोस् ।", + "userlogin-reauth": "तपाईं {{GENDER:$1|$1}} नै हो भनी प्रमाणित गर्न तपाईंले पुनः लगइन गर्नुपर्दछ।", "userlogin-createanother": "अर्को खाता खोल्नुहोस्", "createacct-emailrequired": "इमेल ठेगाना", "createacct-emailoptional": "इमेल ठेगाना (ऐच्छिक)", @@ -440,6 +442,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|पृष्ठ|पृष्ठहरू}}", @@ -471,7 +475,7 @@ "passwordremindertext": "कसैले (सायद तपाईं, IP ठेगाना $1 बाट), {{SITENAME}}($4) को लागि नयाँ प्रवेशशब्द अनुरोध गर्नुभएको छ । प्रयोगकर्ता \"$2\" को लागि नयाँ अस्थायी प्रवेशशब्द \"$3\"तयार पारिएको छ । यदि यो तपाईंको इच्छामा भएको भए अहिले तपाईँले प्रवेशगरी नयाँ प्रवेशशब्द छान्नु पर्ने हुन्छ ।\nतपाईंको अस्थायी प्रवेशशब्द {{PLURAL:$5|एक दिन|$5 दिनहरू पछि}} अमान्य हुनेछ ।\n\nयदि कोही अरुले नै अनुरोध गरेको हो भने , या तपाईंले आफ्नो प्रवेशशब्द सम्झिनु भयो भने, अथवा\nत्यसलाई परिवर्तन गर्न चाहनुहुन्न भने, तपाईंले यो सन्देशको वेवास्ता गर्नसक्नुहुन्छ र पुरानै प्रवेशशब्द प्रयोग गरिरहन सक्नुहुन्छ ।", "noemail": "प्रयोगकर्ता \"$1\"को लागि कुनै पनि इ-मेल दर्ता गरिएको छैन ।", "noemailcreate": "तपाईंले सही ई-मेल ठेगाना दिनुपर्छ", - "passwordsent": "\"$1\" को लागि दर्ता गरिएको ई-मेल ठेगानामा एक प्रवेशशव्द पठाइएको छ।\nकृपया त्यसलाई प्राप्त गरेपछि प्रवेश गर्नुहोला ।", + "passwordsent": "\"$1\" को लागि दर्ता गरिएको ई-मेल ठेगानामा एक प्रवेश शब्द पठाइएको छ।\nकृपया त्यसलाई प्राप्त गरेपछि प्रवेश गर्नुहोला ।", "blocked-mailpassword": "तपाईंको IP ठेगानालाई सम्पादनगर्नबाट रोक लगाइएको छ, र त्यसैले दुरुपयोग रोक्नको लागि प्रवेसशब्द पुनर्लाभ प्रक्रिया प्रयोग गर्न अनुमति छैन ।", "eauthentsent": "दिइएको इमेल ठेगानामा इमेल पठाइएको छ ।\nतपाईंको खातामा अरु इमेल पठउनु अघि , इमेलमा लेखिएको मार्गदर्शन अनुसार , त्यो खाता तपाईंकै हो भनेर निश्चित गर्नु पर्नेछ ।", "throttled-mailpassword": "बितेको {{PLURAL:$1|घण्टा|$1 घण्टाहरु}} भित्र एउटा पासवर्ड अनुस्मारक पठाई सकिएको छ।\nदुरुपयोगबाट बचाउकोलागि प्रत्येक {{PLURAL:$1|घण्टा|$1 घण्टाहरु}}मा केवल एउटा पासवर्ड अनुस्मारक पठाइन्छ।", @@ -513,6 +517,7 @@ "changepassword-success": "तपाईंको पासवर्ड सफलतापूर्वक परिवर्तन भयो!", "changepassword-throttled": "तपाईंले भर्खरै धेरै पल्ट प्रवेश (लग इन)को निम्ति प्रयास गर्नुभएको छ। \nकृपया $1 पर्खेर मात्र प्रयास गर्नुहोस्।", "botpasswords": "बोट पासवर्ड", + "botpasswords-disabled": "बोट पासवर्डहरू असक्षम गरिएका छन्।", "botpasswords-createnew": "नयाँ बोटको लागि पासवर्ड बनाउने", "botpasswords-label-appid": "बोट नाम", "botpasswords-label-create": "बनाउनुहोस्", @@ -541,10 +546,11 @@ "passwordreset-domain": "डोमेन", "passwordreset-email": "इमेल ठेगाना:", "passwordreset-emailtitle": "{{SITENAME}}मा खाता विवरण", - "passwordreset-emailtext-ip": "कसैले (सायद तपाईंले, $1 आईपि ठेगानाबाट) {{SITENAME}} ($4)मा तपाईंको खाता विवरणको निम्ति एउटा अनुस्मारकको अनुरोध गरेको छ। निम्न प्रयोगकर्ता {{PLURAL:$3|खाता यस इमेल ठेगानासित सम्बन्धित छ|खाताहरू यस इमेल ठेगानासित सम्बन्धित छन्}}:\n\n$2\n\n{{PLURAL:$3|यो अस्थाई पासवर्डको|यी अस्थाई पासवर्डहरुको}} समय {{PLURAL:$5|एक दिन|$5 दिन}}मा सकिनेछ।\nतपाईंले प्रवेश गरेर अहिले नैं नयाँ पासवर्ड छान्नुहोस्। यदि अरु कसैले अनुरोध गरेको भए अथवा यदि तपाईंलाई मूल पासवर्ड याद भए अनि यसलाई परिवर्तन गर्न चाहनुहुन्न भने, तपाईंले यस सन्देशलाई अनदेखा गर्नुहोस् र पुरानै पासवर्डलाई चालू राख्नुहोस्।", + "passwordreset-emailtext-ip": "कसैले (सायद तपाईंले, $1 आईपि ठेगानाबाट) {{SITENAME}} ($4)मा तपाईंको खाता विवरणको निम्ति एउटा अनुस्मारकको अनुरोध गरेको छ। निम्न प्रयोगकर्ता {{PLURAL:$3|खाता यस इमेल ठेगानासित सम्बन्धित छ|खाताहरू यस इमेल ठेगानासित सम्बन्धित छन्}}:\n\n$2\n\n{{PLURAL:$3|यो अस्थाई पासवर्डको|यी अस्थाई पासवर्डहरूको}} समय {{PLURAL:$5|एक दिन|$5 दिन}}मा सकिनेछ।\nतपाईंले प्रवेश गरेर अहिले नैं नयाँ पासवर्ड छान्नुहोस्। यदि अरु कसैले अनुरोध गरेको भए अथवा यदि तपाईंलाई मूल पासवर्ड याद भए अनि यसलाई परिवर्तन गर्न चाहनुहुन्न भने, तपाईंले यस सन्देशलाई अनदेखा गर्नुहोस् र पुरानै पासवर्डलाई चालू राख्नुहोस्।", "passwordreset-emailtext-user": "{{SITENAME}} को $1 प्रयोगकर्ताले {{SITENAME}} ($4)को लागि खाता विवरणको निम्ति एउटा अनुस्मारकको अनुरोध गरेको छ । निम्न प्रयोगकर्ता {{PLURAL:$3|खाता यस इमेल ठेगानासित सम्बन्धित छ|खाताहरू यस इमेल ठेगानासित सम्बन्धित छन् ।}}:\n\n$2\n\n{{PLURAL:$3|यो अस्थाई पासवर्डको|यी अस्थाई पासवर्डहरूको}} समय {{PLURAL:$5|एक दिन|$5 दिन}}मा सकिनेछ ।\nतपाईंले प्रवेश गरेर अहिले नैं नयाँ पासवर्ड छान्नुहोस्। यदि अरु कसैले अनुरोध गरेको भए अथवा यदि तपाईंलाई मूल पासवर्ड याद भए अनि यसलाई परिवर्तन गर्न चाहनुहुन्न भने, तपाईंले यस सन्देशलाई अनदेखा गर्नुहोस् र पुरानै पासवर्डलाई चालू राख्नुहोस् ।", "passwordreset-emailelement": "प्रयोगकर्ताको नाम: \n$1\n\nअस्थाई पासवर्ड: \n$2", "passwordreset-emailsentemail": "पासवर्ड परिवर्तनको लागि इमेल पठाइएको छ।", + "passwordreset-invalidemail": "अमान्य इमेल ठेगाना", "changeemail": "इमेल ठेगाना परिवर्तन गर्नुहोस", "changeemail-header": "खाताको इमेल ठेगाना परिवर्तन गर्नुहोस", "changeemail-no-info": "यस पृष्ठमा सिधै जानको लागि प्रवेश गर्नु पर्ने हुन्छ ।", @@ -555,7 +561,7 @@ "changeemail-submit": "इमेल परिवर्तन गर्ने", "changeemail-throttled": "तपाईंले भर्खरै धेरै पल्ट प्रवेशको निम्ति प्रयास गर्नुभएको छ।\nकृपया $1 पर्खेर मात्र प्रयास गर्नुहोस्।", "resettokens": "टोकन पूर्वरुपमा फर्काउने", - "resettokens-text": "जुन टोकन तपाईंको खातासँग सम्बद्ध केहि विशिष्ट व्यक्तिगत जानकारी प्रदान गर्छन, तपाईं त्यसलाई यहाँ रिसेट गर्न सक्नुहुन्छ।\n\nयदि तपाईंले तिनलाई भुलवस कसैलाई देखाईदिनु भएको छ वा तपाईंको खाता ह्याक भइसकेको छ भने तपाईं यसलाई रिसेट गर्नुहोला।", + "resettokens-text": "जुन टोकनले तपाईंको खातासँग सम्बद्ध केहि विशिष्ट व्यक्तिगत जानकारी प्रदान गर्छन्, तपाईं त्यसलाई यहाँ रिसेट गर्न सक्नुहुन्छ।\n\nयदि तपाईंले तिनलाई भुलवस कसैलाई देखाउनु भएको छ वा तपाईंको खाता ह्याक भइसकेको छ भने तपाईं यसलाई रिसेट गर्नुहोला।", "resettokens-no-tokens": "पूर्वरुपमा फर्काउन कुनै पनि टोकन छैन ।", "resettokens-tokens": "टोकनहरू:", "resettokens-token-label": "$1 (वर्तमान मूल्यः $2)", @@ -581,7 +587,7 @@ "sig_tip": "तपाईंको समयछाप सहितको दस्तखत", "hr_tip": "क्षितिजिय रेखा (कम प्रयोग गर्नुहोस्)", "summary": "सारांश:", - "subject": "विषय/शीर्षक:", + "subject": "विषय:", "minoredit": "यो सानो सम्पादन हो", "watchthis": "यो पृष्ठ अवलोकन गर्नुहोस्", "savearticle": "सङ्ग्रह गर्ने", @@ -598,8 +604,8 @@ "selfredirect": "चेतावनी: तपाईं यस पृष्ठलाई आफुमा पुनः निर्देशित गर्दै हुनुहुन्छ।\nहुनसक्छ तपाईं अनुप्रेषितको लागि गलत लक्ष्य निर्दिष्ट गर्दै हुनुहुन्छ, वा गलत पृष्ठको सम्पादन गर्दै हुनुहुन्छ।\nतपाईं पुनः एकपटक \"$1\" क्लिक गर्नुहुन्छ, पुनः निर्देशित त्यसै पनि बनाइनेछ।", "missingcommenttext": "कृपया टिप्पणी प्रविष्ठ गर्नुहोस् ।", "missingcommentheader": "याद गर्नुहोस् : तपाईंले टिप्पणीमा विषय /शीर्ष पंक्ति दिनुभएको छैन ।\nतपाईंले फेरि \"$1\" थिच्नु भएमा , तपाईंको सम्पादन यसै रुपमा सङ्ग्रहित हुनेछ ।", - "summary-preview": "सारांश पूर्वालोकन:", - "subject-preview": "विषय/शीर्षपंक्ति पूर्वरुप:", + "summary-preview": "सम्पादन सारांशको पूर्वालोकन:", + "subject-preview": "विषयको पूर्वावलोकन:", "previewerrortext": "तपाईंको परिवर्तनको पूर्वावलोकन बनाउन खोज्दा समस्या आएको छ ।", "blockedtitle": "प्रयोककर्तालाई रोक लगाइएको छ", "blockedtext": "'''तपाईंको प्रयोगकर्ता नाम या आइ पी ठेगानालाई रोक लगाइएको छ ।'''\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कृपया तपाईँको प्रश्नमा सबै जानकारी खुलाउनुहोला ।", @@ -637,7 +643,7 @@ "continue-editing": "सम्पादन क्षेत्रमा जानुहोस", "previewconflict": "यस पूर्वावलोकनले सम्पादन क्षेत्र को माथिल्लो भागको पाठ परिवर्तन गर्ने ठाउँको पाठलाइ देखाउँछ अनि तपाईंले यसलाई सेभ गरेपछि देखापर्छ।", "session_fail_preview": "'''माफ गर्नुहोस्! सत्र-आँकड़ा (session data) हराउनाले हामीले तपाईंको सम्पादन प्रक्रिया अघि बढाउन सकेनौं।.'''\nकृपया पुनः प्रयास गर्नुहोस्।\nयदि फेरि पनि काम भएन भनें, [[Special:UserLogout|बाहिर गई(लग आउट गरी)]] फेरि प्रवेश गर्नुहोस्।", - "session_fail_preview_html": "माफ गर्नुहोला ! सेशन डाटा नष्ट भएको कारण तपाईंको परिवर्तन शुरक्षित गर्न सकिएन ।\n\nकिनकी {{SITENAME}}मा raw HTML सक्षम छ, जावास्क्रिप्ट हमहरूबाट बचाउनको लागि झलक नहीं देखाइएको छैन ।\n\nयदी यो तपाईंको वैध सम्पादन यत्न थियो भने कृपया पुनः प्रयास गर्नुहोस् ।\nयदी यस पनि यस्तै भयो भने कृपया [[Special:UserLogout|लग आउट]] गरेर पुनः लग इन गर्नुहोस् तथा तपाईंको ब्राउजरले यस साइटसँग कुकीजको अनुमति दिन्छ दिन्न जाँच गर्नुहोस् ।", + "session_fail_preview_html": "माफ गर्नुहोला ! सेशन डाटा नष्ट भएको कारण तपाईंको परिवर्तन शुरक्षित गर्न सकिएन ।\n\nकिनकी {{SITENAME}}मा raw HTML सक्षम छ, जावास्क्रिप्ट हमलाहरूबाट बचाउनको लागि झलक देखाइएको छैन ।\n\nयदी यो तपाईंको वैध सम्पादन यत्न थियो भने कृपया पुनः प्रयास गर्नुहोस् ।\nयदी फेरी पनि यस्तै भयो भने कृपया [[Special:UserLogout|लग आउट]] गरेर पुनः लग इन गर्नुहोस् तथा तपाईंको ब्राउजरले यस साइटसँग कुकीजको अनुमति दिन्छ दिन्न जाँच गर्नुहोस् ।", "token_suffix_mismatch": "'''सम्पादन टोकनमा विराम चिह्न र वर्ण सम्बन्धित गड़बड़ीको कारण तपाईंको सम्पादन अस्वीकार गरिएको छ'''\nपृष्ठको पाठ बचाउन सम्पादन अस्वीकार गरिएको हो।\nयस्तो त्यसबेला हुन्छ जब तपाईंले बगी वेवमा आधारित अज्ञात प्रोक्सी सेवा प्रयोग गर्नुहुन्छ।", "edit_form_incomplete": "'''सम्पादनको केहि भाग सर्वरसम्म पुग्न सकेन, दुइपल्ट जाँच गर्नुहोस्, तपाईंको सम्पादन यथावत रहे पुनः प्रयास गर्नुहोस्'''", "editing": "$1 सम्पादन गरिदै", @@ -645,7 +651,7 @@ "editingsection": "$1 (खण्ड) सम्पादन गरिदै", "editingcomment": "$1 सम्पादन गर्दै(नयाँ खण्ड)", "editconflict": "सम्पादन बाँझियो: $1", - "explainconflict": "तपाईंले सम्पादन कार्य सुरु गरेपछि कसैले यस पृष्टलाई परिवर्तन गरेकोछ।\nमाथिल्लो पाठक्षेत्रमा पृष्ठको वर्तमान पाठ छ।\nतपाईंको परिवर्तन तल्लो भागमा दर्शाइएकोछ। \nतपाईंले गर्नुभएको परिवर्तनलाई वर्तमान पाठसित मिसाउनु पर्नेछ, यदि तपाईंले \"$1\" थिच्नु भयो भनें पाठको माथिल्लो भाग '''मात्र''' संग्रह गरिनेछ।", + "explainconflict": "तपाईंले सम्पादन कार्य सुरु गरेपछि कसैले यस पृष्टलाई परिवर्तन गरेकोछ।\nमाथिल्लो पाठक्षेत्रमा पृष्ठको वर्तमान पाठ छ।\nतपाईंको परिवर्तन तल्लो भागमा दर्शाइएकोछ। \nतपाईंले गर्नुभएको परिवर्तनलाई वर्तमान पाठसित मिसाउनु पर्नेछ, यदि तपाईंले \"$1\" थिच्नु भयो भने पाठको माथिल्लो भाग '''मात्र''' सङ्ग्रह गरिनेछ।", "yourtext": "तपाईंका पाठहरु", "storedversion": "संग्रहित पुनरावलोकन", "nonunicodebrowser": "चेतावनी: तपाईंको ब्राउजर युनिकोडलाई स्वीकार गर्दैन। \nतपाईंद्वारा सहि रुपले पृष्ठ सम्पादनको लागि: गैर-एयससिआइआइ क्यारेक्टर हेक्जाडेसिमल कोड (hexadecimal) मा देखाइनेछ।", @@ -675,7 +681,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,8 +746,8 @@ "page_first": "पहिलो", "page_last": "अन्तिम", "histlegend": "अन्तर चयन:संशोधनहरूको तुलनाको लागि रेडियो बाकसमा क्लिक गरेर इण्टर गर्नुहोस् अथवा तल दिएको बटनमा थिच्नुहोस्
    \nलिजेंड: (चालू): '''({{int:cur}})''' = अवतरणको बीचमा अन्तर, '''({{int:last}})''' = पहिलाका अवतरणको बीचमा अन्तर, '''{{int:minoreditletter}}''' = सानो परिवर्तन।", - "history-fieldset-title": "इतिहासको विचरण गर्ने", - "history-show-deleted": "मेटिएका मात्र", + "history-fieldset-title": "संशोधनका लागि खोजी गर्नुहोस्", + "history-show-deleted": "संशोधन मेटिएका मात्र", "histfirst": "पुरानो", "histlast": "नयाँ", "historysize": "({{PLURAL:$1|१ बाइट |$1 बाइटहरू}})", @@ -757,7 +763,7 @@ "rev-deleted-user-contribs": "[प्रयोगकर्ताको नाम अथवा IP ठेगाना हटाइयो - योगदानहरुबाट सम्पादन लुकाइयो]", "rev-deleted-text-permission": "यस पृष्ठको पुनरावलोकन '''मेटिएकोछ'''।\nयसको पूर्ण विवरण [{{fullurl:{{#Special:Log}}/delete|पृष्ठ={{FULLPAGENAMEE}}}}को मेटिएको लगमा पाउन सकिन्छ]।", "rev-suppressed-text-permission": "यो पृष्ठ संशोधनलाई दमन गरिएको छ । \nविस्तृत जानकारी [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} दमन लग]मा पाउन सकिन्छ ।", - "rev-deleted-text-unhide": "यस पृष्ठको संशोधन '''मेटिएकोछ'''।\nयसको पूर्ण विवरण [{{fullurl:{{#Special:Log}}/delete|पृष्ठ={{FULLPAGENAMEE}}}} को मेटिएको लगमा पाउन सकिन्छ].\nयदि चाहनु भयो भनें [$1 संशोधन हेर्न] सक्नुहुन्छ।", + "rev-deleted-text-unhide": "यस पृष्ठको संशोधन '''मेटिएकोछ'''।\nयसको पूर्ण विवरण [{{fullurl:{{#Special:Log}}/delete|पृष्ठ={{FULLPAGENAMEE}}}} को मेटिएको लगमा पाउन सकिन्छ].\nयदि चाहनु भयो भने [$1 संशोधन हेर्न] सक्नुहुन्छ।", "rev-suppressed-text-unhide": "यस पृष्ठको पुनरावलोकन '''दमन''' गरिएको छ ।\nविस्तृत जानकारी [{{fullurl:{{#Special:Log}}/delete|पृष्ठ={{FULLPAGENAMEE}}}} दमन लग] पाउन सकिन्छ ।\nयदि तपाईं अगाडि बढ्न चाहनु हुन्छ भने पनि तपाईंले [$1 यि संशोधनहरू हेर्न] पाउनु हुनेछ ।", "rev-deleted-text-view": "यस पृष्ठको संशोधन '''मेटिएकोछ'''।\nतपाईंले हेर्न सक्नुहुन्छ; [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} मेटिएको लगमा विवरण पाउन सकिन्छ]।", "rev-suppressed-text-view": "यस पृष्ठको पुनरावलोकन थिचिएको छ।\nप्रबन्धकको हैसियतले हेर्न सक्नुहुन्छ; [{{fullurl:{{#Special:Log}}/delete|पृष्ठ={{FULLPAGENAMEE}}}}को थिचिएको लगमा विवरण पाउन सकिन्छ]", @@ -765,8 +771,8 @@ "rev-suppressed-no-diff": "तपाईं यसको भिन्नता हेर्न सक्नुहुन्न किनभने यसको एउटा संशोधन मेटाइएकोछ।", "rev-deleted-unhide-diff": "यस पृष्ठका पुनरावलोकनहरू मध्ये एउटा भिन्नता मेटाइएकोछ।\nयसको पूर्ण विवरण [{{fullurl:{{#Special:Log}}/delete|पृष्ठ={{FULLPAGENAMEE}}}}को मेटाइएको लगमा पाउन सकिन्छ]।\nयदि चाहनु भयो भने प्रवन्धकको हैसियतले [यो भिन्नता $1] हेर्न सक्नुहुन्छ।", "rev-suppressed-unhide-diff": "यस पृष्ठको पुनरावलोकनहरू मध्ये एउटा भिन्नता थिचिएको छ।\nयसको पूर्ण विवरण [{{fullurl:{{#Special:Log}}/suppress|पृष्ठ={{FULLPAGENAMEE}}}}को थिचिएको लगमा पाउन सकिन्छ]।\nयदि चाहनु भयो भने प्रबन्धकको हैसियतमा [यो भिन्नता $1] हेर्न सक्नुहुन्छ।", - "rev-deleted-diff-view": "यस भिन्नताका संशोधनहरुमध्येको एउटा चाहिं मेटियो। \nतपाईंले यस भिन्नतालाई हेर्न सक्नुहुन्छ; सबै विवरण [{{fullurl:{{#Special:Log}}/delete|पृष्ठ={{FULLPAGENAMEE}}}} मेटाइएको लग]मा पाउन सकिनेछ।", - "rev-suppressed-diff-view": "यस भिन्नताका संशोधनहरुमध्येको एउटा चाहिं दबाइयो। \nतपाईंले यस भिन्नतालाई हेर्न सक्नुहुन्छ; सबै विवरण [{{fullurl:{{#Special:Log}}/delete|पृष्ठ={{FULLPAGENAMEE}}}} दबाइएको लग]मा पाउन सकिनेछ।", + "rev-deleted-diff-view": "यस भिन्नताका संशोधनहरू मध्येको एउटा चाहिं मेटियो। \nतपाईंले यस भिन्नतालाई हेर्न सक्नुहुन्छ; सबै विवरण [{{fullurl:{{#Special:Log}}/delete|पृष्ठ={{FULLPAGENAMEE}}}} मेटाइएको लग]मा पाउन सकिनेछ।", + "rev-suppressed-diff-view": "यस भिन्नताका संशोधनहरू मध्येको एउटा चाहिं दबाइयो। \nतपाईंले यस भिन्नतालाई हेर्न सक्नुहुन्छ; सबै विवरण [{{fullurl:{{#Special:Log}}/delete|पृष्ठ={{FULLPAGENAMEE}}}} दबाइएको लग]मा पाउन सकिनेछ।", "rev-delundel": "दृश्यता परिवर्तन गर्ने", "rev-showdeleted": "देखाउनुहोस्", "revisiondelete": "मेटाउने/मेटाएको रद्दगर्ने पुनरावलोकनहरू", @@ -798,7 +804,7 @@ "revdelete-unsuppress": "पुनर्स्थापित पुनरावृत्तिबाट बन्देज हटाउने", "revdelete-log": "कारण :", "revdelete-submit": "{{PLURAL:$1|छानिएको संशोधन|छानिएका संशोधनहरु}}मा प्रयोग गर्ने", - "revdelete-success": "'''संशोधन दृश्यता सफलतापूर्वक अद्यतन भयो।'''", + "revdelete-success": "संशोधन दृश्यता अद्यतन भयो।", "revdelete-failure": "'''संशोधन दृश्यता अद्यतन गर्न सकिएन:'''\n$1", "logdelete-success": "'''लग दृष्टि सफलतापूर्वक मिलाइयो ।'''", "logdelete-failure": "'''लग दृष्टि मिलाउन सकिएन :'''\n$1", @@ -818,7 +824,7 @@ "revdelete-edit-reasonlist": "मेट्ने कार्यहरु सम्पादन गर्ने", "revdelete-offender": "संशोधन कर्ता:", "suppressionlog": "कमगरेको लग", - "suppressionlogtext": "मेट्न र रोक्नका निमित्त निम्न सुची रहेको छ जसमा प्रवन्धकबाट लुकाइएका सामग्री समेत रहेका छन।\nकृपया हाल प्रयोगमा रहेका रोक र रोकावटको सुचीका लागि [[Special:BlockList|रोक सुची]] हेर्नुहोला।", + "suppressionlogtext": "मेट्न र रोक्नका निमित्त निम्न सूची रहेको छ जसमा प्रवन्धकबाट लुकाइएका सामग्री समेत रहेका छन्।\nकृपया हाल प्रयोगमा रहेका रोक र रोकावटको सूचीका लागि [[Special:BlockList|रोक सूची]] हेर्नुहोला।", "mergehistory": "पृष्ठ इतिहासहरु मिसाउने", "mergehistory-header": "यो पृष्ठ एक स्रोत पृष्ठको इतिहास कुनै अन्य पृष्ठमा मिलाउनको लागि हो।\nसुनिश्चित गर्नुस कि यो परिवर्तन पृष्ठ इतिहासमा निरन्तरता प्रदान गर्न सकोस।", "mergehistory-box": "दुई पृष्ठहरूको पुनरावलोकन जोड्नुहोस् :", @@ -927,7 +933,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": "साधारण", @@ -1018,7 +1024,7 @@ "prefs-help-prefershttps": "यो अभिरूची तपाईंको अर्को प्रवेश (लग इन) बाट लागु हुनेछ ।", "prefswarning-warning": "तपाईंले आफ्नो अभिरूचीमा गर्नुभएको परिवर्तन अहिले सम्म सङ्ग्रह गरिएको छैन। यदि तपाईं \"$1\" मा क्लिक नगरी यस पृष्ठबाट बाहिर जानुभयो भने तपाईंको अभिरूची अपडेट गर्न सकिदैन।", "prefs-tabs-navigation-hint": "सुझाव: तपाईं ट्याबसहरूमा ट्याबसको बीच आवागमन गर्नका लागि देब्रे वा दाहिने तीर साँचोको प्रयोग गर्न सक्नुहुन्छ।", - "userrights": "प्रयोगकर्ता अधिकार व्यवस्थापन", + "userrights": "प्रयोगकर्ता अधिकारहरू", "userrights-lookup-user": "प्रयोगकर्ता समूह व्यवस्थापन गर्नुहोस", "userrights-user-editname": "प्रयोगकर्ता नाम दिनुहोस् :", "editusergroup": "प्रयोगकर्ता समूह सम्पादन गर्नुहोस्", @@ -1171,10 +1177,10 @@ "action-userrights-interwiki": "अरु विकिका प्रयोगकर्ताहरूको प्रयोगकर्ता अधिकारलाई सम्पादन गर्ने", "action-siteadmin": "डेटाबेस बन्दगर्ने वा खोल्ने", "action-sendemail": "इमेलहरु पठाउने", - "action-editmywatchlist": "तपाईंको निगरानी सूची सम्पादन गर्नुहोस", + "action-editmywatchlist": "तपाईंको निगरानी सूची सम्पादन गर्नुहोस्", "action-viewmywatchlist": "तपाईंको निगरानी सूची हेर्नुहोस्", "action-viewmyprivateinfo": "तपाईंको व्यक्तिगत जानकारी हेर्नुहोस", - "action-editmyprivateinfo": "तपाईंको व्यक्तिगत जानकारी सम्पादन गर्नुहोस", + "action-editmyprivateinfo": "तपाईंको व्यक्तिगत जानकारी सम्पादन गर्नुहोस्", "action-editcontentmodel": "पृष्ठको सामग्री नमुना सम्पादन", "action-managechangetags": "डाटाबेसबाट ट्यागहरू बनाउने र मेटाउने", "action-applychangetags": "तपाईंको परिवर्तनसँगै ट्यागहरू लागु गर्ने", @@ -1196,6 +1202,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 +1228,7 @@ "rcshowhidemine-hide": "लुकाउनुहोस्", "rcshowhidecategorization-show": "देखाउनुहोस्", "rcshowhidecategorization-hide": "लुकाउनुहोस्", - "rclinks": "पछिल्ला $1 परिवर्तनहरू पछिल्ला $2 दिनहरूमा", + "rclinks": "पछिल्ला $2 दिनहरूमा भएका पछिल्ला $1 परिवर्तनहरू देखाउनुहोस्", "diff": "भिन्न", "hist": "इतिहास", "hide": "लुकाउनुहोस्", @@ -1273,7 +1283,7 @@ "badfilename": "फाइलको नाम \"$1\"मा सारियो।", "filetype-mime-mismatch": "\".$1\" फाइल विस्तार पाइएको फाइल ($2)को MIME प्रकारसित मेल खाँदैन।", "filetype-badmime": "MIME \"$1\" प्रकारको फाइल उर्ध्वभरण गर्ने अनुमति छैन।", - "filetype-bad-ie-mime": "यो फाइल उर्ध्वभरण गर्न सकिएन किनभनें '''इण्टरनेट एक्स्प्लोरर'''ले यस फाइललाई \"$1\" बतायो जसलाई संभावित खतरनाक प्रकारको फाइल मानियो।", + "filetype-bad-ie-mime": "यो फाइल उर्ध्वभरण गर्न सकिएन किन भने '''इण्टरनेट एक्स्प्लोरर'''ले यस फाइललाई \"$1\" बतायो जसलाई सम्भावित खतरनाक प्रकारको फाइल मानियो।", "filetype-unwanted-type": "\".$1\" फाइल नचाहिने प्रकारको फाइल हो।\nमुख्यतया {{PLURAL:$3|फाइलको प्रकार हो|फाइलका प्रकार हुन्}} $2।", "filetype-banned-type": "\".$1\" फाइल {{PLURAL:$4|प्रकार|प्रकारहरू}} को अनुमति छैन।\nफाइल प्रकार {{PLURAL:$3|जसको|जुनको}} अनुमति छ: $2।", "filetype-missing": "फाइलको एक्स्टेन्शन छैन (उदा- \".jpg\")।", @@ -1513,7 +1523,7 @@ "randompage-nopages": "{{PLURAL:$2| $1 नाम भएको कुनै पृष्ट छैन|$1 नाम भएका कुनै पृष्टहरु छैनन्}}", "randomincategory": "श्रेणीमा रहेको अनियमित पृष्ठ", "randomincategory-invalidcategory": "''$1'' वैध श्रेणी नाम होइन ।", - "randomincategory-nopages": "यस [[:Category:$1|$1]] श्रेणीमा कुनै पनि पृष्ठ छैन् ।", + "randomincategory-nopages": "यस [[:Category:$1|$1]] श्रेणीमा कुनै पनि पृष्ठ छैन ।", "randomincategory-category": "श्रेणी:", "randomincategory-legend": "श्रेणीमा अनियमित पृष्ठ", "randomincategory-submit": "जाउ", @@ -1523,7 +1533,7 @@ "statistics-header-pages": "पृष्ठहरूको तथ्याङ्क", "statistics-header-edits": "सम्पादनहरूको तथ्याङ्क", "statistics-header-users": "प्रयोगकर्ता तथ्याङ्कहरू", - "statistics-header-hooks": "अन्य तथ्याङ्कहरु", + "statistics-header-hooks": "अन्य तथ्याङ्कहरू", "statistics-articles": "सामग्री पृष्ठहरू", "statistics-pages": "पृष्ठहरू", "statistics-pages-desc": "विकिका सबै पृष्ठहरू, वार्तापका पृष्ठहरूसमेत, रिडाइरेक्ट, इत्यादि ।", @@ -1652,7 +1662,7 @@ "booksources-text": "तल दिइएको सूची नयाँ तथा पूराना किताब बेच्ने लगायत तपाईंले खोज्नु भएको किताबका बारेमा थप जानकारी भएका अन्य साइटका लिंकहरू हुन् ।", "booksources-invalid-isbn": "यो आइएसबीएन सहि छैन; मूल स्रोतबाट नक्कल गर्दा भएको त्रुटिको जाँच गर्नुहोस।", "specialloguserlabel": "निष्पादक:", - "speciallogtitlelabel": "लक्ष्य (शीर्षक वा प्रयोगकर्ता)", + "speciallogtitlelabel": "लक्ष्य (शीर्षक वा {{ns:user}}:प्रयोगकर्ताका लागि प्रयोगकर्ता नाम)", "log": "लगहरू", "logeventslist-submit": "देखाउनुहोस्", "all-logs-page": "सबै सार्वजनिक लगहरू", @@ -1858,7 +1868,7 @@ "revertpage-nouser": "(सदस्य नाम हटाइएको छ) को सम्पादनहरूलाई हटाएर {{GENDER:$1|[[User:$1|$1]]}} ले अन्तिम अवतरणमा पूर्ववत गर्यो।", "rollback-success": "$1द्वारा उल्टाइएका सम्पादनहरू;\nपछिल्लो संशोधनमा $2द्वारा परिवर्तन गरि पुनः फर्काइएको।", "sessionfailure-title": "सत्र त्रुटी", - "sessionfailure": "यस्तो लागदैछ कि तपाईंको लगइन सत्रसँग कुनै समस्या छ। सत्र अपहरणबाट बचाउन को लागि सावधानीको रूपमा तपाईंको यो क्रियाकलाप रद्द गरिएको छ। कृपया पछाडी जानुहोस र पृष्ठलाई पुनः लोड गर्नुहोस, अनि फेरी प्रयास गर्नुहोला।", + "sessionfailure": "यस्तो लाग्दैछ कि तपाईंको लगइन सत्रसँग कुनै समस्या छ। सत्र अपहरणबाट बचाउन को लागि सावधानीको रूपमा तपाईंको यो क्रियाकलाप रद्द गरिएको छ। कृपया पछाडी जानुहोस र पृष्ठलाई पुनः लोड गर्नुहोस्, अनि फेरी प्रयास गर्नुहोला।", "changecontentmodel-title-label": "पाना शीर्षक", "changecontentmodel-reason-label": "कारण:", "logentry-contentmodel-change-revertlink": "पहिलेको रुपमा फर्काउने", @@ -1924,7 +1934,7 @@ "viewdeletedpage": "मेटिएका पृष्ठहरू हेर्नुहोस्", "undeletepagetext": "निम्नलिखित {{PLURAL:$1|पृष्ठ मेटिएकोछ तर पूरालेखभित्रै छ|$1 पृष्ठ मेटिएकाछन् तर पूरालेखभित्रै छन्}} र पुनर्स्थापित गर्न सकिन्छ।\nपूरालेखको समय-समयमा सफाई गर्न सकिन्छ।", "undelete-fieldset-title": "पुनरावलोकनहरू पूर्वावस्थामा ल्याउनुहोस्", - "undeleteextrahelp": "यस पृष्ठक पुरै इतिहास पूर्वरुपमा फर्काउनको लागि छनोट सन्दुकहरुलाई नछानी '''''{{int:undeletebtn}}''''' मा क्लिक गर्नुहोस।\nअनुकुल पूर्वरुपमा फर्काउने कार्य गर्न छनौट चाहिएका संस्करणक सन्दुकहरुलाई छानेर '''''{{int:undeletebtn}}'''''मा क्लिक गर्नुहोस।", + "undeleteextrahelp": "यस पृष्ठको पुरै इतिहास पूर्वरुपमा फर्काउनको लागि छनोट सन्दुकहरूलाई नछानी '''''{{int:undeletebtn}}''''' मा क्लिक गर्नुहोस।\nअनुकुल पूर्वरुपमा फर्काउने कार्य गर्न छनौट चाहिएका संस्करणका सन्दुकहरूलाई छानेर '''''{{int:undeletebtn}}'''''मा क्लिक गर्नुहोस।", "undeleterevisions": "$1 {{PLURAL:$1|संशोधन|संशोधनहरू}} संग्रहित", "undeletehistory": "यदि कुनै पृष्टलाई पुन: स्थापन गराउनु भयो भने सम्पूर्ण संस्करणहरू इतिहासमा पुन:स्थापन हुनेछन् ।\nयदि यसै नामबाट नयाँ पृष्ठ निर्माण भैसकेको छ भने पुन: स्थापित संस्करणहरू पूर्व इतिहासको रुपमा स्थापित हुनेछन् ।", "undeleterevdel": "यदि यो माथिल्लो पृष्ठ बन्छ या फाइल संस्करणहरू आंशिक मेटिएका छन् भने मेट्ने काम रद्द गरिने छैन।\nत्यस अवस्थामा तपाईंले छनौटमा अन्तिम मेटिएको नयाँ संस्करण नलुकाउनेमा चिनो लगाउनु पर्छ ।", @@ -2024,7 +2034,7 @@ "ipbother": "अरु समय:", "ipboptions": "२ घण्टाहरू:2 hours,१ दिन :1 day,३ दिनहरू:3 days,१ हप्ता:1 week,२ हप्ताहरू:2 weeks,१ महिना:1 month,३ महिनाहरू:3 months,६ महिनाहरू:6 months,१ वर्ष:1 year,अनगिन्ती:infinite", "ipbhidename": "प्रयोगकर्ताको नाम सम्पादनबाट र सूचीबाट हटाउने", - "ipbwatchuser": "यो प्रयोगकर्ताको प्रयपोगकर्ता र वार्तलाप पृष्ठ हेर्नुहोस्", + "ipbwatchuser": "यो प्रयोगकर्ताको प्रयपोगकर्ता पृष्ठ र वार्तालाप पृष्ठ हेर्नुहोस्", "ipb-disableusertalk": "यस प्रयोगकर्तालाई निषेधित समयमा आफ्नै वार्तालाप पृष्ठ सम्पादन गर्न नदिने", "ipb-change-block": "निम्म स्थितीमा प्रयोगकर्तालाई पुन: निषेध गर्ने", "ipb-confirm": "रोक सुनिश्चित गर्ने", @@ -2061,7 +2071,7 @@ "blocklist-reason": "कारण", "ipblocklist-submit": "खोज्ने", "ipblocklist-localblock": "स्थानीय रोक", - "ipblocklist-otherblocks": "अन्य {{PLURAL:$1|रोक|रोकहरु}}", + "ipblocklist-otherblocks": "अन्य {{PLURAL:$1|रोक|रोकहरू}}", "infiniteblock": "अनिश्चित काल", "expiringblock": "$1 को दिन $2 मा सकिनेछ", "anononlyblock": "अज्ञातहरु मात्र", @@ -2082,7 +2092,7 @@ "blocklog-showsuppresslog": "यो प्रयोगकर्तालाई पहिला रोक लगाइएको र लुकेको थियो ।\nलु्काइएको लग सन्दर्भको निम्ति तल दिइन्छ:", "blocklogentry": " [[$1]]लाई $2 $3 समयसम्म को लागि निषेध गरिएको छ", "reblock-logentry": "$2 $3 मा सकिने गरि [[$1]] को निषेध स्थिति परिवर्तन गरिएको छ ।", - "blocklogtext": "यो लग प्रयोगकर्ताको रोकावट र फुकुवा कार्यहरुको हो।\nस्वतः रोकिएका आईपी ठेगानाहरू सूचीमा छैनन्।\nवर्तमानका चालू रोक र प्रतिबन्धहरूको सूचीकोलागि हेर्नुहोस् [[Special:BlockList|आईपी निषेध सूची]]।", + "blocklogtext": "यो लग प्रयोगकर्ताको रोकावट र फुकुवा कार्यहरूको हो।\nस्वतः रोकिएका आईपी ठेगानाहरू सूचीमा छैनन्।\nवर्तमानका चालू रोक र प्रतिबन्धहरूको सूचीकोलागि हेर्नुहोस् [[Special:BlockList|आईपी निषेध सूची]]।", "unblocklogentry": "$1 लाई अनिषेधित गरियो", "block-log-flags-anononly": "अज्ञात प्रयोगकर्ताहरू मात्र", "block-log-flags-nocreate": "खाता खोल्न निस्क्रिय पारिएको", @@ -2097,7 +2107,7 @@ "ipb_hide_invalid": "यो खातालाई दबाउन सकिने छैन; किन कि यसका धेरै {{PLURAL:$1|एक सम्पादन|$1 सम्पादनहरू}} छन्।", "ipb_already_blocked": "\"$1\"लाई पहिले नै रोक लगाइएको छ", "ipb-needreblock": "$1लाई अघिबाट नैं प्रतिबन्ध लगाइएकोछ।\nके तपाईं यसको व्यवस्थालाई परिवर्तन गर्न चाहनुहुन्छ?", - "ipb-otherblocks-header": "अरु {{PLURAL:$1|रोक|रोकहरु}}", + "ipb-otherblocks-header": "अरु {{PLURAL:$1|रोक|रोकहरू}}", "unblock-hideuser": "यस प्रयोगकर्तालाई रोक फुकुवा गर्न सक्नु हुन्न, यस प्रयोगकर्ताको नाम लुकेको छ।", "ipb_cant_unblock": "त्रुटी: रोक आइडी $1 भेटिएन। या यो पहिले नै खोलिइसकेको हुनसक्छ ।", "ipb_blocked_as_range": "त्रुटी: IP ठेगाना $1 is लाई सिधै रोकलगाइएको छैन र यस रोकलाई खोल्न मिल्दैन\nयो एक रेन्ज रोक $2, को अन्तर्गत रहेको छ जसलाई रोक खोल्न मिल्छ ।", @@ -2114,7 +2124,7 @@ "ipbnounblockself": "तपाईं आफैले आफैलाई रोक खुलाउन सक्नुहुन्न ।", "lockdb": "डेटाबेस ताल्चामार्ने", "unlockdb": "डेटाबेसको ताल्चा खोल्ने", - "lockdbtext": "डेटाबेसमा ताला लगाउनाले सबै प्रयोगकर्ता पृष्ठ सम्पादन, आफ्नो अभिरूचीमा परिवर्तन, आफ्नो ध्यानसूचीमा सम्पादन, र अन्य वस्तु जसको लागि डेटाबेसमा परिवर्तन गरें हुन्छ, त्यसबाट वन्चित हुनेछ। कृपया यो सुनिश्चित गर्नुहोस् कि तपाईं यो गर्न चाहनुहुन्छ, र तपाईं रक्षण पश्चात ताला खोल्नुहुन्छ ।", + "lockdbtext": "डेटाबेसमा ताला लगाउनाले सबै प्रयोगकर्ता पृष्ठ सम्पादन, आफ्नो अभिरूचीमा परिवर्तन, आफ्नो ध्यानसूचीमा सम्पादन, र अन्य वस्तु जसको लागि डेटाबेसमा परिवर्तन गर्नु पर्ने हुन्छ, त्यसबाट वन्चित हुनेछ। कृपया यो सुनिश्चित गर्नुहोस् कि तपाईं यो गर्न चाहनुहुन्छ, र तपाईं रक्षण पश्चात ताला खोल्नुहुन्छ ।", "unlockdbtext": "डेटाबेसको ताला खोल्नका लागि सबै प्रयोगकर्ता पृष्ठ सम्पादन, आफ्नो अभिरूचीहरूमा परिवर्तन, आफ्नो ध्यानसूचीमा सम्पादन, र अन्य वस्तु जसको लागि डेटाबेसमा परिवर्तन गर्नु पर्छ, को सक्षमतालाई पुनर्स्थापित गर्नछ। कृपया यो सुनिश्चित गर्नुस कि तपाईं यो गर्न चाहनुहुन्छ।", "lockconfirm": "हो, म साँच्चिकै डेटाबेस थुन्न चाहन्छु।", "unlockconfirm": "हो , म साँच्चै डेटाबेसको ताल्चा खोल्न चाहन्छु ।", @@ -2262,7 +2272,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\" आयात गरिएन ।", @@ -2270,7 +2280,7 @@ "import-error-special": "पृष्ठ \"$1\" आयात गर्न सकिएन किनभने यो एउटा यस्तो विशेष नामस्थान अन्तर्गत आउँछ जसमा पृष्ठ बनाउन सकिंदैन।", "import-error-invalid": "पृष्ठ \"$1\" आयात गर्न सकिएन किनभने यसको आयात पश्चात जुन नाम हुन्थ्यो त्यो यस विकिमा मान्य छैन।", "import-error-unserialize": "पृष्ठ \"$1\" को संशोधन $2 लाई क्रमबाट हटाउन सकिएन। संशोधनको बारेमा भनिएको छ कि सामग्री नमूना $3 लाई क्रम $4 को रूप प्रयोगमा ल्याइएको थियो।", - "import-error-bad-location": "संशोधन $2 जसमा सामग्री नमूनाहरू $3 मा प्रयोग गरिएको छ, लाई यस विकिमा \"$1\" मा सङ्ग्रह गर्न सकिंदैन, किनकि त्यो नमूना यस पृष्ठको नमूनहरू भन्दा भिन्न छ।", + "import-error-bad-location": "संशोधन $2 जसमा सामग्री नमूनाहरू $3 मा प्रयोग गरिएको छ, लाई यस विकिमा \"$1\" मा सङ्ग्रह गर्न सकिंदैन, किनकि त्यो नमूना यस पृष्ठको नमूनाहरू भन्दा भिन्न छ।", "import-options-wrong": "गलत {{PLURAL:$2|विकल्प|विकल्पहरू}}: $1", "import-rootpage-invalid": "दिइएको उपसर्ग पृष्ठ शीर्षक अमान्य छ।", "import-rootpage-nosubpage": "दिइएको उपसर्ग पृष्ठ \"$1\" को नामस्थानमा उप-पृष्ठ बनाउन सकिंदैन।", @@ -2319,7 +2329,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": "सबै विशेष पृष्ठहरूको सूची", @@ -2363,7 +2373,7 @@ "creditspage": "क्रेडिट पृष्ठ", "nocredits": "यो पृष्ठको लागि कुनै श्रेय उपलब्ध छैन ।", "spamprotectiontitle": "स्प्याम सुरक्षा फिल्टर", - "spamprotectiontext": "तपाईंले जुन पन्ना लाइ सेभ गर्न चाहनुहुन्थ्यो त्यसलाई रद्दी छननी कार्यक्रमले रोक लगाएको छ।\nयो संभवतः कुनै कर्पसूचित बाहिरी स्थल संग सम्बन्धित कडी को कारणले भएको हुन सक्छ।", + "spamprotectiontext": "तपाईंले जुन पृष्ठलाई सेभ गर्न चाहनुहुन्थ्यो त्यसलाई रद्दी छननी कार्यक्रमले रोक लगाएको छ।\nयो संभवतः कुनै कर्पसूचित बाहिरी स्थलसँग सम्बन्धित लिङ्कको कारणले भएको हुन सक्छ।", "spamprotectionmatch": "निम्न पाठले हाम्रो स्प्प्याम फिल्टर : $1 घच्घच्यायो", "spambot_username": "MediaWiki स्पाम सर-सफाइ", "spam_reverting": "$1 मा कडीहरू नभएका पुरानो अवतरणमा पुनर्स्थापित गर्दै", @@ -2869,8 +2879,8 @@ "confirmemail_loggedin": "तपाईंको इमेल ठेगाना प्रमाणित भएको छ।", "confirmemail_subject": "{{SITENAME}} ई मेलl ठेगानाको पुष्टि", "confirmemail_body": "कसैले, सायद तपाईंले, आई पी ठेगाना $1बाट,\n{{SITENAME}}मा एउटा खाता \"$2\"को नाममा यस ई मेल ठेगानामा पञ्जीकरण गरेकोछ।\n\nयो खाता साँच्ची नैं तपाईंको हो भनेर पुष्टि गर्न र {{SITENAME}}मा यो ई मेलका सुविधाहरु सक्रिय गर्न तपाईंको ब्राउजरमा यो लिंक खोल्नुहोस्:\n\n$3 \n\nयदि त्यो खाता तपाईंले पञ्जीकरण गर्नु भएको *होइन* भनें, ई मेलको पुष्टिकरण रद्द गर्न यो लिंक पहिल्याउनुहोस्:\n\n$5\n\nयो पुष्टिकरणको समय $4 मा सकिनेछ।", - "confirmemail_body_changed": "कसैले, सायद तपाईंले, आई पी ठेगाना $1बाट,\n{{SITENAME}}मा \"$2\" नामको खाताको ई मेल ठेगाना यस ठेगानामा परिवर्तन गरेकोछ।\n\nयो खाता साँच्ची नैं तपाईंको हो भनेर पुष्टि गर्न र {{SITENAME}}मा यो ई मेलका सुविधाहरु पुनः सक्रिय गर्न तपाईंको ब्राउजरमा यो लिंक खोल्नुहोस्:\n\n$3 \n\nयदि त्यो खाता तपाईंको *होइन* भनें, ई मेल ठेगानाको पुष्टिकरण रद्द गर्न यो लिंक पहिल्याउनुहोस्:\n\n$5\n\nयो पुष्टिकरणको समय $4 मा सकिनेछ।", - "confirmemail_body_set": "कसैले, सायद तपाईंले, आईपी ठेगाना $1बाट,\n{{SITENAME}}मा \"$2\" नामको खाताको ईमेल ठेगाना यस ठेगानासित जोडेको छ।\n\nयो खाता साँच्ची नैं तपाईंको हो भनेर पुष्टि गर्न र {{SITENAME}}मा यो ईमेलका सुविधाहरु पुनः सक्रिय गर्न तपाईंको ब्राउजरमा यो लिङ्क खोल्नुहोस्:\n\n$3 \n\nयदि त्यो खाता तपाईंको *होइन* भनें, ईमेल ठेगानाको पुष्टिकरण रद्द गर्न यो लिङ्क पहिल्याउनुहोस्:\n\n$5\n\nयो पुष्टिकरणको समय $4 मा सकिनेछ।", + "confirmemail_body_changed": "कसैले, सायद तपाईंले, आई पी ठेगाना $1बाट,\n{{SITENAME}}मा \"$2\" नामको खाताको ई मेल ठेगाना यस ठेगानामा परिवर्तन गरेकोछ।\n\nयो खाता साँच्ची नैं तपाईंको हो भनेर पुष्टि गर्न र {{SITENAME}}मा यो ई मेलका सुविधाहरू पुनः सक्रिय गर्न तपाईंको ब्राउजरमा यो लिंक खोल्नुहोस्:\n\n$3 \n\nयदि त्यो खाता तपाईंको *होइन* भने, ई मेल ठेगानाको पुष्टिकरण रद्द गर्न यो लिंक पहिल्याउनुहोस्:\n\n$5\n\nयो पुष्टिकरणको समय $4 मा सकिनेछ।", + "confirmemail_body_set": "कसैले, सायद तपाईंले, आईपी ठेगाना $1बाट,\n{{SITENAME}}मा \"$2\" नामको खाताको ईमेल ठेगाना यस ठेगानासित जोडेको छ।\n\nयो खाता साँच्ची नैं तपाईंको हो भनेर पुष्टि गर्न र {{SITENAME}}मा यो ईमेलका सुविधाहरू पुनः सक्रिय गर्न तपाईंको ब्राउजरमा यो लिङ्क खोल्नुहोस्:\n\n$3 \n\nयदि त्यो खाता तपाईंको *होइन* भने, ईमेल ठेगानाको पुष्टिकरण रद्द गर्न यो लिङ्क पहिल्याउनुहोस्:\n\n$5\n\nयो पुष्टिकरणको समय $4 मा सकिनेछ।", "confirmemail_invalidated": "ई मेल ठेगाना रद्द भएको पुष्टिकरण", "invalidateemail": "इमेल यकिन कार्य रद्द गर्नुहोस्", "scarytranscludedisabled": "[अन्तरविकि दस्तावेज अन्तरकरण निस्क्रिय]", @@ -3075,7 +3085,6 @@ "fileduplicatesearch-noresults": "\"$1\" नामको फाइल पाइएन।", "specialpages": "विशेष पृष्ठ", "specialpages-note-top": "आदर्श वाक्य", - "specialpages-note": "* साधारण विशेष पृष्ठहरू।\n* निषेधित विशेष पृष्ठहरू।", "specialpages-group-maintenance": "मर्मत प्रतिवेदनहरू", "specialpages-group-other": "अरू विशेष पृष्ठहरू", "specialpages-group-login": "प्रवेश गर्ने / नयाँ खाता बनाउने", @@ -3097,7 +3106,7 @@ "tag-filter-submit": "फिल्टर", "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|ट्याग|ट्यागहरू}}]]: $2)", "tags-title": "ट्यागहरु", - "tags-intro": "यो पृष्ठले पुच्छरहरु सुचीकृत गर्छ जससँग यो सफ्टवेयरले चिनो लगाउन र सम्पादन गर्न सक्छ र तिनका अर्थहरु ।", + "tags-intro": "यो पृष्ठले ट्यागहरू सूचीकृत गर्छ जससँग यो सफ्टवेयरले चिनो लगाउन र सम्पादन गर्न सक्छ र तिनका अर्थहरू ।", "tags-tag": "आन्तरिक ट्याग नाम", "tags-display-header": "परिवर्तन सूचीहरूमाथि झलक", "tags-description-header": "पूर्ण अर्थको वर्णन", @@ -3188,6 +3197,7 @@ "compare-invalid-title": "तपाईंले खुलाउनु भएको शिर्षक अमान्य छ।", "compare-title-not-exists": "तपाईंले खुलाउनु भएको शिर्षक उपलब्ध छैन ।", "compare-revision-not-exists": "तपाईंले खुलाउनु भएको संस्करण उपलब्ध छैन ।", + "diff-form": "भिन्नताहरू", "dberr-problems": "क्षमा पाउँ! यो साइटमा तकनीकी गड़बड़ी आइपरेकोछ।", "dberr-again": "केही समय पर्खिएर पुन: लोड हुन दिनुहोस् ।", "dberr-info": "(डेटाबेस सर्भर: $1 सँग सम्पर्क स्थापित गर्न सकिएन)", @@ -3212,7 +3222,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 +3415,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 0334cd89b8..5b042537a6 100644 --- a/languages/i18n/nl.json +++ b/languages/i18n/nl.json @@ -85,7 +85,9 @@ "Mainframe98", "QZanden", "Huhbakker", - "Jos1950" + "Jos1950", + "Ooswesthoesbes", + "MarcoSwart" ] }, "tog-underline": "Verwijzingen onderstrepen:", @@ -115,7 +117,7 @@ "tog-shownumberswatching": "Het aantal gebruikers weergeven dat deze pagina volgt", "tog-oldsig": "Uw bestaande ondertekening:", "tog-fancysig": "Handtekening als wikitekst behandelen (zonder automatische koppeling)", - "tog-uselivepreview": "Livevoorvertoning gebruiken", + "tog-uselivepreview": "Voorvertoningen weergeven zonder de pagina opnieuw te laden", "tog-forceeditsummary": "Een melding geven bij een lege bewerkingssamenvatting", "tog-watchlisthideown": "Eigen bewerkingen op mijn volglijst verbergen", "tog-watchlisthidebots": "Botbewerkingen op mijn volglijst verbergen", @@ -241,7 +243,7 @@ "tagline": "Uit {{SITENAME}}", "help": "Hulp", "search": "Zoeken", - "search-ignored-headings": " #
    \n# Koppen die worden genegeerd tijdens het zoeken.\n# Wijzigingen worden van kracht als een kop wordt geïndexeerd.\n# U kunt opnieuw indexeren afdwingen door het uitvoeren van een nullbewerking.\n# De syntaxis is al volgt:\n#   * All tekst vanaf het teken \"#\" tot het einde van de regel wordt gezien als een opmerking;\n#   * Iedere niet-lege regel is de precieze te negeren kop, inclusief hoofdlettergebruik en degelijke.\nReferenties\nExterne koppelingen\nZie ook\n #
    ", + "search-ignored-headings": " #
    \n# Koppen die worden genegeerd tijdens het zoeken.\n# Wijzigingen worden van kracht als een kop wordt geïndexeerd.\n# U kunt opnieuw indexeren afdwingen door het uitvoeren van een nullbewerking.\n# De syntaxis is als volgt:\n#   * Alle tekst vanaf het teken \"#\" tot het einde van de regel wordt gezien als een opmerking;\n#   * Iedere niet-lege regel is de precieze te negeren kop, inclusief hoofdlettergebruik en degelijke.\nReferenties\nExterne koppelingen\nZie ook\n #
    ", "searchbutton": "Zoeken", "go": "OK", "searcharticle": "OK", @@ -743,14 +745,14 @@ "explainconflict": "Een andere gebruiker heeft deze pagina bewerkt sinds u met uw bewerking bent begonnen.\nIn het bovenste deel van het venster staat de tekst van de huidige pagina.\nUw bewerking staat in het onderste gedeelte.\nU dient uw bewerkingen in te voegen in de bestaande tekst.\n'''Alleen''' de tekst in het bovenste gedeelte wordt opgeslagen als u op \"$1\" klikt.", "yourtext": "Uw tekst", "storedversion": "Opgeslagen versie", - "nonunicodebrowser": "'''Waarschuwing: uw browser kan niet goed overweg met Unicode.'''\nHiermee wordt door de MediaWiki-software rekening gehouden zodat u toch zonder problemen pagina's kunt bewerken: niet-ASCII tekens worden in het bewerkingsveld weergegeven als hexadecimale codes.", "editingold": "'''Waarschuwing: u bewerkt een oude versie van deze pagina.'''\nAls u uw bewerking opslaat, gaan alle wijzigingen verloren die na deze versie zijn gemaakt.", + "unicode-support-fail": "Het lijkt er op dat uw browser geen Unicode ondersteunt. Ondersteuning voor Unicode is vereist om pagina's te bewerken, dus is uw bewerking niet opgeslagen.", "yourdiff": "Wijzigingen", "copyrightwarning": "Let op: alle bijdragen aan {{SITENAME}} worden geacht te zijn vrijgegeven onder de $2 (zie $1 voor details).\nAls u niet wilt dat uw tekst door anderen naar believen bewerkt en verspreid kan worden, kies dan niet voor \"Pagina opslaan\".
    \nHierbij belooft u ons tevens dat u deze tekst zelf hebt geschreven of overgenomen uit een vrije, openbare bron.
    \n'''Gebruik geen materiaal dat beschermd wordt door auteursrecht, tenzij u daarvoor toestemming hebt!'''", "copyrightwarning2": "Al uw bijdragen aan {{SITENAME}} kunnen bewerkt, gewijzigd of verwijderd worden door andere gebruikers.\nAls u niet wilt dat uw teksten rigoureus aangepast worden door anderen, plaats ze hier dan niet.
    \nU belooft ook dat u de oorspronkelijke auteur bent van dit materiaal of dat u het hebt gekopieerd uit een bron in het publieke domein of een soortgelijke vrije bron (zie $1 voor details).\n'''Gebruik geen materiaal dat beschermd wordt door auteursrecht, tenzij u daarvoor toestemming hebt!'''", "editpage-cannot-use-custom-model": "Het inhoudsmodel van deze pagina kan niet worden gewijzigd.", "longpageerror": "'''Fout: de tekst die u hebt toegevoegd is {{PLURAL:$1|één kilobyte|$1 kilobyte}} groot, wat groter is dan het maximum van {{PLURAL:$2|één kilobyte|$2 kilobyte}}.'''\nOpslaan is niet mogelijk.", - "readonlywarning": "Waarschuwing: u kunt deze bewerking nu niet opslaan omdat de database is geblokkeerd voor bewerkingen wegens onderhoudswerkzaamheden.\nHet is misschien verstandig om uw tekst tijdelijk in een tekstbestand op te slaan en te bewaren voor een later moment.\n\nDe systeembeheerder heeft de database geblokkeerd om de volgende reden: $1", + "readonlywarning": "Waarschuwing: u kunt deze bewerking nu niet opslaan omdat de database is geblokkeerd voor bewerkingen wegens onderhoudswerkzaamheden.\nHet is misschien verstandig om uw tekst tijdelijk in een tekstbestand op te slaan en te bewaren voor een later moment.\n\nDe systeembeheerder heeft de database geblokkeerd met de volgende reden: $1", "protectedpagewarning": "'''Waarschuwing: deze beveiligde pagina kan alleen door gebruikers met beheerdersrechten bewerkt worden.'''\nDe laatste logboekregel staat hieronder:", "semiprotectedpagewarning": "'''Let op:''' deze pagina is beveiligd en kan alleen door geregistreerde gebruikers bewerkt worden.\nDe laatste logboekregel staat hieronder:", "cascadeprotectedwarning": "Waarschuwing: deze pagina is beveiligd en kan alleen door gebruikers met [[Special:ListGroupRights|specifieke rechten]] bewerkt worden, omdat ze is opgenomen in de volgende {{PLURAL:$1|pagina|pagina's}} die beveiligd {{PLURAL:$1|is|zijn}} met de cascade-optie:", @@ -771,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.", @@ -811,6 +813,7 @@ "parser-template-loop-warning": "Er is een kringloop in sjablonen geconstateerd: [[$1]]", "template-loop-category": "Pagina's met sjablonen die zichzelf insluiten", "template-loop-category-desc": "De pagina bevat een sjabloon dat zichzelf insluit, bijvoorbeeld een sjabloon dat zichzelf recursief aanroept.", + "template-loop-warning": "Waarschuwing: Deze pagina roept [[:$1]] aan, wat een sjabloon kringloop veroorzaakt (een oneindige recursieve aanroep).", "parser-template-recursion-depth-warning": "De recursiediepte voor sjablonen is overschreden ($1)", "language-converter-depth-warning": "De dieptelimiet voor de taalconvertor is overschreden ($1)", "node-count-exceeded-category": "Pagina's waar het maximaal aantal nodes is overschreden", @@ -1040,7 +1043,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", @@ -1080,6 +1083,7 @@ "timezoneregion-indian": "Indische Oceaan", "timezoneregion-pacific": "Stille Oceaan", "allowemail": "E-mail van andere gebruikers toestaan", + "email-blacklist-label": "Voorkom dat deze gebruikers e-mails naar mij kunnen sturen:", "prefs-searchoptions": "Zoeken", "prefs-namespaces": "Naamruimten", "default": "standaard", @@ -1186,7 +1190,7 @@ "right-autocreateaccount": "Automatisch aanmelden met een extern gebruikersaccount", "right-minoredit": "Bewerkingen als klein markeren", "right-move": "Pagina's hernoemen", - "right-move-subpages": "Pagina's inclusief subpagina's verplaatsen", + "right-move-subpages": "Pagina's inclusief deelpagina's verplaatsen", "right-move-rootuserpages": "Gebruikerspagina's van het hoogste niveau hernoemen", "right-move-categorypages": "Categoriepagina's hernoemen", "right-movefile": "Bestanden hernoemen", @@ -1297,7 +1301,7 @@ "action-history": "de geschiedenis van deze pagina te bekijken", "action-minoredit": "deze bewerking als klein te markeren", "action-move": "deze pagina te hernoemen", - "action-move-subpages": "deze pagina en bijbehorende subpagina's te hernoemen", + "action-move-subpages": "deze pagina en bijbehorende deelpagina's te hernoemen", "action-move-rootuserpages": "gebruikerspagina's van het hoogste niveau te hernoemen", "action-move-categorypages": "categoriepagina's te hernoemen", "action-movefile": "dit bestand te hernoemen", @@ -1356,9 +1360,19 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (zie ook de [[Special:NewPages|lijst met nieuwe pagina's]])", "recentchanges-legend-plusminus": "(±123)", "recentchanges-submit": "Weergeven", + "rcfilters-tag-remove": "Verwijder '$1'", "rcfilters-legend-heading": "Lijst met afkortingen:", + "rcfilters-other-review-tools": "Andere controlehulpmiddelen", + "rcfilters-group-results-by-page": "Resultaten per pagina groeperen", + "rcfilters-grouping-title": "Groeperen", "rcfilters-activefilters": "Actieve filters", "rcfilters-advancedfilters": "Geavanceerde filters", + "rcfilters-limit-title": "Wijzigingen om te tonen", + "rcfilters-limit-shownum": "Toon laatste {{PLURAL:$1|wijziging|$1 wijzigingen}}", + "rcfilters-days-title": "Afgelopen dagen", + "rcfilters-hours-title": "Afgelopen uren", + "rcfilters-days-show-days": "$1 {{PLURAL:$1|dag|dagen}}", + "rcfilters-days-show-hours": "$1 {{PLURAL:$1|uur|uren}}", "rcfilters-quickfilters": "Opgeslagen filters", "rcfilters-quickfilters-placeholder-title": "Nog geen koppelingen opgeslagen", "rcfilters-quickfilters-placeholder-description": "Om uw filterinstellingen op te slaan en later te kunnen hergebruiken, klik op het bladwijzer pictogram in het Actieve Filter gebied beneden.", @@ -1368,42 +1382,43 @@ "rcfilters-savedqueries-unsetdefault": "Als standaard verwijderen", "rcfilters-savedqueries-remove": "Verwijderen", "rcfilters-savedqueries-new-name-label": "Naam", + "rcfilters-savedqueries-new-name-placeholder": "Beschrijf het doel van het filter", "rcfilters-savedqueries-apply-label": "Filter aanmaken", + "rcfilters-savedqueries-apply-and-setdefault-label": "Standaard filter aanmaken", "rcfilters-savedqueries-cancel-label": "Annuleren", "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 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.", "rcfilters-filterlist-title": "Filters", - "rcfilters-filterlist-whatsthis": "Wat is dit?", - "rcfilters-filterlist-feedbacklink": "Geef terugkoppeling op de nieuwe (beta)filters", + "rcfilters-filterlist-whatsthis": "Hoe werkt dit?", + "rcfilters-filterlist-feedbacklink": "Laat ons weten wat u denkt over deze (nieuwe) filterhulpmiddelen", "rcfilters-highlightbutton-title": "Resultaten markeren", "rcfilters-highlightmenu-title": "Kies een kleur", "rcfilters-highlightmenu-help": "Selecteer een kleur om deze eigenschap uit te lichten", "rcfilters-filterlist-noresults": "Geen filters gevonden", "rcfilters-noresults-conflict": "Geen resultaten gevonden omdat de zoekcriteria met elkaar conflicteren", "rcfilters-state-message-subset": "Dit filter heeft geen effect omdat de resultaten ook worden gefilterd door {{PLURAL:$2|het|de}} bredere {{PLURAL:$2|filter|filters}} (probeer ze te markeren om ze te onderscheiden): $1", - "rcfilters-state-message-fullcoverage": "Het selecteren van alle filters in deze groep is hetzelfde als geen filter selecteren, waardoor dit filter geen effect heeft. De groep bevat: $1", - "rcfilters-filtergroup-registration": "Gebruikersregistratie", - "rcfilters-filter-registered-label": "Geregistreerd", - "rcfilters-filter-registered-description": "Ingelogde gebruikers.", - "rcfilters-filter-unregistered-label": "Niet-geregistreerd", - "rcfilters-filter-unregistered-description": "Gebruikers die niet zijn ingelogd.", - "rcfilters-filter-unregistered-conflicts-user-experience-level": "Het \"Niet geregistreerd\" filter is niet actief, omdat het effect ongedaan wordt gemaakt door de volgende {{PLURAL:$2|filter|filters}} die alleen geregistreerde gebruikers {{PLURAL:$2|vindt|vinden}}: $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.", "rcfilters-filter-editsbyother-label": "Wijzigingen door anderen", "rcfilters-filter-editsbyother-description": "Alle wijzigingen behalve die door u gemaakt zijn.", - "rcfilters-filtergroup-userExpLevel": "Ervaringsniveau (alleen voor geregistreerde gebruikers)", + "rcfilters-filtergroup-userExpLevel": "Gebruikersregistratie en ervaring", + "rcfilters-filter-user-experience-level-registered-label": "Geregistreerd", + "rcfilters-filter-user-experience-level-registered-description": "Aangemelde bewerkers.", + "rcfilters-filter-user-experience-level-unregistered-label": "Niet-geregistreerd", + "rcfilters-filter-user-experience-level-unregistered-description": "Bewerkers die niet zijn aangemeld.", "rcfilters-filter-user-experience-level-newcomer-label": "Nieuwkomers", - "rcfilters-filter-user-experience-level-newcomer-description": "Minder dan 10 bewerkingen en 4 dagen van activiteit.", + "rcfilters-filter-user-experience-level-newcomer-description": "Geregistreerde bewerkers met minder dan 10 bewerkingen en 4 dagen van activiteit.", "rcfilters-filter-user-experience-level-learner-label": "Leerlingen", - "rcfilters-filter-user-experience-level-learner-description": "Meer ervaring dan \"nieuwkomers\", maar minder dan \"ervaren gebruikers\".", + "rcfilters-filter-user-experience-level-learner-description": "Geregistreerde bewerkers met meer ervaring dan \"nieuwkomers\", maar minder dan \"ervaren gebruikers\".", "rcfilters-filter-user-experience-level-experienced-label": "Ervaren gebruikers", - "rcfilters-filter-user-experience-level-experienced-description": "Meer dan 30 dagen van activiteit en 500 bewerkingen.", + "rcfilters-filter-user-experience-level-experienced-description": "Geregistreerde bewerkers met meer dan 500 bewerkingen en 30 dagen van activiteit.", "rcfilters-filtergroup-automated": "Automatische bijdragen", "rcfilters-filter-bots-label": "Bot", "rcfilters-filter-bots-description": "De wijzigingen van geautomatiseerde hulpmiddelen.", @@ -1426,6 +1441,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": "Volglijstactiviteit", + "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…", @@ -1435,18 +1455,29 @@ "rcfilters-filter-categorization-description": "Categorisatie van pagina's tonen.", "rcfilters-filter-logactions-label": "Geregistreerde acties", "rcfilters-filter-logactions-description": "Administratieve handelingen, account creaties, pagina verwijderingen, uploads…", + "rcfilters-hideminor-conflicts-typeofchange-global": "Het \"Kleine bewerkingen\" filter conflicteert met een of meerdere soorten wijzigingenfilters, omdat bepaalde soorten wijzigingen niet als \"klein\" kunnen worden aangewezen. De conflicterende filters zijn gemarkeerd in het Actieve filter vak hierboven.", "rcfilters-hideminor-conflicts-typeofchange": "Bepaalde soorten wijzigingen kunnen niet worden aangemerkt als \"klein\", dus dit filter is in conflict met de volgende soorten wijzigingenfilters: $1", - "rcfilters-filtergroup-lastRevision": "Laatste versie", + "rcfilters-typeofchange-conflicts-hideminor": "Dit type wijzigingsfilter is in conflict met het \"Kleine bewerkingen\" filter. Bepaalde type wijzigingen kunnen niet als \"klein\" worden aangewezen.", + "rcfilters-filtergroup-lastRevision": "Laatste versies", "rcfilters-filter-lastrevision-label": "Laatste versie", - "rcfilters-filter-lastrevision-description": "De meest recente wijziging aan de pagina.", - "rcfilters-filter-previousrevision-label": "Eerdere versies", - "rcfilters-filter-previousrevision-description": "Alle wijzigingen die niet de meest recente wijziging op de pagina zijn.", + "rcfilters-filter-lastrevision-description": "Alleen de meest recente wijziging aan de pagina.", + "rcfilters-filter-previousrevision-label": "Niet de laatste versie", + "rcfilters-filter-previousrevision-description": "Alle wijzigingen die niet de \"laatste versie\" zijn.", "rcfilters-filter-excluded": "Uitgesloten", "rcfilters-tag-prefix-namespace-inverted": ":niet $1", + "rcfilters-exclude-button-off": "Geselecteerde uitsluiten", + "rcfilters-exclude-button-on": "Geselecteerde uitsluiten", + "rcfilters-view-advanced-filters-label": "Geavanceerde filters", "rcfilters-view-tags": "Gelabelde bewerkingen", "rcfilters-view-namespaces-tooltip": "Filter resultaten op naamruimte", "rcfilters-view-tags-tooltip": "Filter resultaten door middel van bewerkingslabels", "rcfilters-view-return-to-default-tooltip": "Terug naar het filter hoofdmenu", + "rcfilters-liveupdates-button": "Liveupdates", + "rcfilters-liveupdates-button-title-on": "Live updates uitschakelen", + "rcfilters-liveupdates-button-title-off": "Toon nieuwe wijzigingen op het moment dat ze gebeuren", + "rcfilters-watchlist-markseen-button": "Alle wijzigingen markeren als bezocht", + "rcfilters-watchlist-edit-watchlist-button": "Bewerk uw volglijst", + "rcfilters-preference-label": "Verberg de verbeterde versie van Recente Wijzigingen", "rcnotefrom": "Wijzigingen sinds $3 om $4 (maximaal $1 {{PLURAL:$1|wijziging|wijzigingen}}).", "rclistfromreset": "Datum selectie opnieuw instellen", "rclistfrom": "Wijzigingen bekijken vanaf $3 $2", @@ -1562,6 +1593,7 @@ "file-deleted-duplicate-notitle": "Er is een verwijderd bestand aangetroffen dat identiek is aan dit bestand, en de naam van het bestand is onderdrukt.\nVraag iemand die onderdrukte bestandsgegevens kan bekijken om de situatie opnieuw te beoordelen voordat u het bestand opnieuw toevoegt.", "uploadwarning": "Uploadwaarschuwing", "uploadwarning-text": "Pas de onderstaande bestandsbeschrijving aan en probeer het daarna opnieuw.", + "uploadwarning-text-nostash": "Upload het bestand opnieuw, pas de beschrijving hier beneden aan en probeer het opnieuw.", "savefile": "Bestand opslaan", "uploaddisabled": "Uploaden is uitgeschakeld", "copyuploaddisabled": "Het uploaden van bestanden via een URL is uitgeschakeld.", @@ -1724,7 +1756,7 @@ "listfiles_size": "Grootte", "listfiles_description": "Beschrijving", "listfiles_count": "Versies", - "listfiles-show-all": "Oude versies van afbeeldingen opnemen", + "listfiles-show-all": "Oude versies van bestanden opnemen", "listfiles-latestversion": "Huidige versie", "listfiles-latestversion-yes": "Ja", "listfiles-latestversion-no": "Nee", @@ -1828,6 +1860,8 @@ "pageswithprop-legend": "Pagina's met een pagina-eigenschap", "pageswithprop-text": "Op deze pagina worden pagina's weergegeven met een bepaalde pagina-eigenschap.", "pageswithprop-prop": "Naam van de eigenschap:", + "pageswithprop-reverse": "Sorteren met omgekeerde volgorde", + "pageswithprop-sortbyvalue": "Sorteren op eigenschapwaarde", "pageswithprop-submit": "OK", "pageswithprop-prophidden-long": "lange teksteigenschapswaarde verborgen ($1)", "pageswithprop-prophidden-binary": "binaire eigenschapswaarde verborgen ($1)", @@ -1960,6 +1994,7 @@ "apisandbox-sending-request": "API-verzoek verzenden...", "apisandbox-loading-results": "API-resultaten ontvangen...", "apisandbox-results-error": "Er is een fout opgetreden tijdens het laden van het antwoord op het API-verzoek: $1.", + "apisandbox-results-login-suppressed": "Dit verzoek is verwerkt als een afgemelde gebruiker omdat het gebruikt zou kunnen worden voor het omzeilen van de Same-Origin browser beveiliging. Merk op dat de automatische token afhandeling van de API zandbak niet correct werkt met zulke verzoeken. Voer deze handmatig in.", "apisandbox-request-selectformat-label": "Toon resultaat als:", "apisandbox-request-format-url-label": "URL query string", "apisandbox-request-url-label": "Verzoek-URL:", @@ -2128,7 +2163,7 @@ "unwatchthispage": "Niet meer volgen", "notanarticle": "Is geen pagina", "notvisiblerev": "De laatste versie van een andere gebruiker is verwijderd", - "watchlist-details": "Er {{PLURAL:$1|staat één pagina|staan $1 pagina's}} op uw volglijst. Overlegpagina's worden niet meegeteld.", + "watchlist-details": "Er {{PLURAL:$1|staat één pagina|staan $1 pagina's}} op uw volglijst (inclusief overlegpagina's).", "wlheader-enotif": "U wordt per e-mail gewaarschuwd.", "wlheader-showupdated": "Pagina's die zijn bewerkt sinds uw laatste bezoek worden '''vet''' weergegeven.", "wlnote": "Hieronder {{PLURAL:$1|staat de laaste wijziging|staan de laatste $1 wijzigingen}} in {{PLURAL:$2|het laatste uur|de laatste $2 uur}} per $3 om $4.", @@ -2163,6 +2198,7 @@ "enotif_lastdiff": "Om deze wijziging te bekijken, ga naar $1", "enotif_anon_editor": "anonieme gebruiker $1", "enotif_body": "Beste $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nSamenvatting van de wijziging: $PAGESUMMARY $PAGEMINOREDIT\n\nContactgegevens van de auteur:\nE-mailadres: $PAGEEDITOR_EMAIL\nWiki: $PAGEEDITOR_WIKI\n\nTenzij u deze pagina bezoekt, komen er geen verdere berichten. Als u bent aangemeld, kunt u op uw volglijst voor alle gevolgde pagina's de waarschuwingsinstellingen opschonen.\n\nGroet van uw {{SITENAME}}-waarschuwingssysteem.\n\n--\nU kunt uw e-mailinstellingen wijzigen op:\n{{canonicalurl:{{#special:Preferences}}}}\n\nU kunt uw volglijstinstellingen wijzigen op:\n{{canonicalurl:Special:Watchlist/edit}}\n\nU kunt de pagina van uw volglijst verwijderen via de volgende koppeling:\n$UNWATCHURL\n\nTerugkoppeling en verdere assistentie:\n$HELPPAGE", + "enotif_minoredit": "Dit is een kleine bewerking", "created": "aangemaakt", "changed": "gewijzigd", "deletepage": "Pagina verwijderen", @@ -2191,6 +2227,7 @@ "delete-warning-toobig": "Deze pagina heeft een lange bewerkingsgeschiedenis, meer dan $1 {{PLURAL:$1|versie|versies}}.\nHet verwijderen van deze pagina kan de werking van de database van {{SITENAME}} verstoren.\nWees voorzichtig.", "deleteprotected": "U kunt deze pagina niet verwijderen omdat hij is beveiligd.", "deleting-backlinks-warning": "Waarschuwing: [[Special:WhatLinksHere/{{FULLPAGENAME}}|andere pagina's]] gebruiken of verwijzen naar de pagina die u wilt verwijderen.", + "deleting-subpages-warning": "Waarschuwing:De pagina die u wilt verwijderen heeft [[Special:PrefixIndex/{{FULLPAGENAME}}/|{{PLURAL:$1|een deelpagina|$1 deelpagina's|51=meer dan 50 deelpagina's}}]].", "rollback": "Wijzigingen ongedaan maken", "rollbacklink": "terugdraaien", "rollbacklinkcount": "{{PLURAL:$1|één bewerking|$1 bewerkingen}} terugdraaien", @@ -2309,7 +2346,7 @@ "undelete-search-title": "Verwijderde pagina's zoeken", "undelete-search-box": "Verwijderde pagina's doorzoeken", "undelete-search-prefix": "Pagina's bekijken die beginnen met:", - "undelete-search-full": "Toon pagina titels met de volgende inhoud:", + "undelete-search-full": "Toon paginatitels die het volgende bevatten:", "undelete-search-submit": "Zoeken", "undelete-no-results": "Geen pagina's gevonden in het archief met verwijderde pagina's.", "undelete-filename-mismatch": "Bestandsversie van tijdstip $1 kon niet hersteld worden: bestandsnaam klopte niet", @@ -2356,6 +2393,7 @@ "sp-contributions-newonly": "Alleen nieuwe pagina's weergeven", "sp-contributions-hideminor": "Kleine bewerkingen verbergen", "sp-contributions-submit": "Bekijken", + "sp-contributions-outofrange": "Kan geen resultaten tonen. Het ingevoerde IP bereik is groter dan de CIDR limiet /$1.", "whatlinkshere": "Verwijzingen naar deze pagina", "whatlinkshere-title": "Pagina's die verwijzen naar \"$1\"", "whatlinkshere-page": "Pagina:", @@ -2532,18 +2570,18 @@ "articleexists": "De pagina bestaat al of de paginanaam is ongeldig.\nKies een andere paginanaam.", "cantmove-titleprotected": "U kunt geen pagina naar deze naam hernoemen, omdat deze naam beveiligd is tegen het aanmaken ervan.", "movetalk": "Bijbehorende overlegpagina hernoemen", - "move-subpages": "Subpagina's hernoemen (maximaal $1)", - "move-talk-subpages": "Subpagina's van overlegpagina's hernoemen (maximaal $1)", + "move-subpages": "Deelpagina's hernoemen (maximaal $1)", + "move-talk-subpages": "Deelpagina's van overlegpagina's hernoemen (maximaal $1)", "movepage-page-exists": "De pagina $1 bestaat al en kan niet automatisch verwijderd worden.", "movepage-page-moved": "De pagina $1 is hernoemd naar $2.", "movepage-page-unmoved": "De pagina $1 kon niet hernoemd worden naar $2.", "movepage-max-pages": "Het maximale aantal automatisch te hernoemen pagina's is bereikt ({{PLURAL:$1|$1|$1}}).\nDe overige pagina's worden niet automatisch hernoemd.", "movelogpage": "Hernoemingslogboek", "movelogpagetext": "Hieronder staan hernoemde pagina's.", - "movesubpage": "{{PLURAL:$1|Subpagina|Subpagina's}}", - "movesubpagetext": "De {{PLURAL:$1|subpagina|$1 subpagina's}} van deze pagina {{PLURAL:$1|wordt|worden}} hieronder weergegeven.", + "movesubpage": "{{PLURAL:$1|Deelpagina|Deelpagina's}}", + "movesubpagetext": "De {{PLURAL:$1|deelpagina|$1 deelpagina's}} van deze pagina {{PLURAL:$1|wordt|worden}} hieronder weergegeven.", "movesubpagetalktext": "De bijbehorende overlegpagina heeft $1 {{PLURAL:$1|deelpagina|deelpagina's}} hierbeneden getoond.", - "movenosubpage": "Deze pagina heeft geen subpagina's.", + "movenosubpage": "Deze pagina heeft geen deelpagina's.", "movereason": "Reden:", "revertmove": "terugdraaien", "delete_and_move_text": "Onder de naam \"[[:$1]]\" bestaat al een pagina.\nWilt u deze verwijderen om plaats te maken voor de te hernoemen pagina?", @@ -2621,7 +2659,7 @@ "import-interwiki-submit": "Importeren", "import-mapping-default": "Importeren naar standaardplaatsen", "import-mapping-namespace": "Importeren naar een naamruimte:", - "import-mapping-subpage": "Importeren als subpagina's van de volgende pagina:", + "import-mapping-subpage": "Importeren als deelpagina's van de volgende pagina:", "import-upload-filename": "Bestandsnaam:", "import-comment": "Opmerking:", "importtext": "Gebruik de [[Special:Export|exportfunctie]] in de wiki waar de informatie vandaan komt.\nSla de uitvoer op uw eigen computer op, en voeg die daarna hier toe.", @@ -2644,7 +2682,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.", @@ -2655,7 +2693,7 @@ "import-error-bad-location": "Versie $2 met behulp van model $3 kan niet worden opgeslagen als \"$1\" op deze wiki, aangezien dat model niet ondersteund wordt op die pagina.", "import-options-wrong": "Verkeerde {{PLURAL:$2|optie|opties}}: $1", "import-rootpage-invalid": "De opgegeven basispagina is ongeldig.", - "import-rootpage-nosubpage": "In de naamruimte \"$1\" van de basispagina is het aanmaken van subpagina's niet mogelijk.", + "import-rootpage-nosubpage": "In de naamruimte \"$1\" van de basispagina is het aanmaken van deelpagina's niet mogelijk.", "importlogpage": "Importlogboek", "importlogpagetext": "Administratieve import van pagina's met geschiedenis van andere wiki's.", "import-logentry-upload-detail": "$1 {{PLURAL:$1|versie|versies}} geïmporteerd", @@ -2722,7 +2760,7 @@ "tooltip-minoredit": "Deze wijziging als een kleine wijziging markeren", "tooltip-save": "Wijzigingen opslaan", "tooltip-publish": "Uw wijzigingen publiceren", - "tooltip-preview": "Een voorvertoning maken. Gebruik dit voordat u opslaat!", + "tooltip-preview": "Een voorbeeldweergave ophalen. Gebruik dit voordat u opslaat.", "tooltip-diff": "Weergeven welke wijzigingen u aan de tekst hebt gemaakt", "tooltip-compareselectedversions": "De verschillen tussen de geselecteerde versies van deze pagina bekijken.", "tooltip-watch": "Deze pagina aan uw volglijst toevoegen", @@ -2789,7 +2827,7 @@ "pageinfo-few-watchers": "Minder dan {{PLURAL:$1|één volger|$1 volgers}}", "pageinfo-few-visiting-watchers": "Er kan wel of niet een volger zijn die de laatste bewerkingen hier bezoekt", "pageinfo-redirects-name": "Aantal doorverwijzingen naar deze pagina", - "pageinfo-subpages-name": "Subpagina's van deze pagina", + "pageinfo-subpages-name": "Aantal deelpagina's van deze pagina", "pageinfo-subpages-value": "$1 ($2 {{PLURAL:$2|doorverwijzing|doorverwijzingen}}; $3 {{PLURAL:$3|niet-doorverwijzing|niet-doorverwijzingen}})", "pageinfo-firstuser": "Gebruiker die de pagina heeft aangemaakt", "pageinfo-firsttime": "Datum waarop de pagina is aangemaakt", @@ -3430,7 +3468,7 @@ "fileduplicatesearch-noresults": "Er is geen bestand met de naam \"$1\" gevonden.", "specialpages": "Speciale pagina's", "specialpages-note-top": "Legenda", - "specialpages-note": "* Normale speciale pagina's\n* Beperkt toegankelijke speciale pagina's", + "specialpages-note-restricted": "* Normale speciale pagina's.\n* Beperkt toegankelijke speciale pagina's.", "specialpages-group-maintenance": "Onderhoudsrapporten", "specialpages-group-other": "Overige speciale pagina's", "specialpages-group-login": "Aanmelden / registreren", @@ -3549,6 +3587,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)", @@ -3957,6 +4002,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 21533aa73c..47a9236c54 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,14 +530,15 @@ "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-header": "↓Endre kontoen si e-postadresse", + "changeemail": "Endre eller fjern e-postadresse", + "changeemail-header": "Fyll ut dette skjemaet for å endre e-postadressa di. Ynskjer du å fjerne tilknytinga ei e-postadresse har til kontoen din, lat feltet for ny e-postadresse stå tomt når du sender inn skjemaet.", "changeemail-no-info": "↓Du må vera pålogga for å få tilgang direkte til denne sida.", - "changeemail-oldemail": "↓Noverande e-postadresse:", + "changeemail-oldemail": "Gjeldande e-postadresse:", "changeemail-newemail": "Ny e-postadresse:", + "changeemail-newemail-help": "Dette feltet skal stå tomt om du ynskjer å fjerne e-postadressa di. Du kan ikkje nullstille eit gløymt passord og kan heller ikkje ta imot e-postar frå denne wikien om e-postadressa er fjerna.", "changeemail-none": "↓(ingen)", "changeemail-password": "{{SITENAME}}-passordet ditt:", - "changeemail-submit": "↓Endre e-post", + "changeemail-submit": "Endre e-post", "changeemail-throttled": "Du har freista for mange gonger å logga inn. Du lyt venta $1 før du kan freista på nytt.", "bold_sample": "Halvfeit skrift", "bold_tip": "Halvfeit skrift", @@ -558,7 +559,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", @@ -568,6 +569,7 @@ "preview": "Førehandsvising", "showpreview": "Førehandsvis", "showdiff": "Sjå skilnader", + "blankarticle": "Åtvaring: Sida du er i ferd med å oppretta er tom.\nKlikkar du på «$1» ein gong til vil sida opprettast utan innhald.", "anoneditwarning": "'''Åtvaring:''' Du er ikkje innlogga.\nIP-adressa di vil verta lagra i den offentlege endringshistorikken til sida. Om du [$1 loggar inn] eller [$2 lagar ein konto], vil endringane dine knytast til brukarnamnet ditt, saman med andre fordelar.", "anonpreviewwarning": "''Du er ikkje innlogga. Lagrar du vil IP-adressa di verta ført opp i endringshistorikken til denne sida.''", "missingsummary": "'''Påminning:''' Du har ikkje skrive noko endringssamandrag. Dersom du trykkjer «Lagre» ein gong til, vert endringa di lagra utan.", @@ -623,7 +625,6 @@ "explainconflict": "Nokon annan har endra teksten sidan du byrja å skrive.\nDen øvste boksen inneheld den noverande teksten.\nSkilnaden mellom den lagra versjonen og din endra versjon er viste under.\nVersjonen som du har endra er i den nedste boksen.\nDu lyt flette endringane dine saman med den noverande teksten.\n'''Berre''' teksten i den øvste tekstboksen vil bli lagra når du klikkar på «$1».", "yourtext": "Teksten din", "storedversion": "Den lagra versjonen", - "nonunicodebrowser": "'''ÅTVARING: Nettlesaren din støttar ikkje «Unicode».\nFor å omgå problemet blir teikn utanfor ASCII-standarden viste som heksadesimale kodar.'''
    ", "editingold": "'''ÅTVARING: Du endrar ein gammal versjon av denne sida. Om du lagrar ho, vil alle endringar gjorde etter denne versjonen bli overskrivne.''' (Men dei kan hentast fram att frå historikken.)
    ", "yourdiff": "Skilnader", "copyrightwarning": "Merk deg at alle bidrag til {{SITENAME}} er å rekne som utgjevne under $2 (sjå $1 for detaljar). Om du ikkje vil ha teksten endra og kopiert under desse vilkåra, kan du ikkje leggje han her.
    \nTeksten må du ha skrive sjølv, eller kopiert frå ein ressurs som er kompatibel med vilkåra eller ikkje verna av opphavsrett.\n\n'''LEGG ALDRI INN MATERIALE SOM ANDRE HAR OPPHAVSRETT TIL UTAN LØYVE FRÅ DEI!'''", @@ -677,7 +678,7 @@ "post-expand-template-inclusion-category": "Sider som inneheld for store malar", "post-expand-template-argument-warning": "Åtvaring: Sida inneheld ein eller fleire malparameterar som vert for lange når dei utvidast.\nDesse parameterane har vorte utelatne.", "post-expand-template-argument-category": "Sider med utelatne malparameterar", - "parser-template-loop-warning": "Malløkka oppdaga: [[$1]]", + "parser-template-loop-warning": "Mallykkje oppdaga: [[$1]]", "parser-template-recursion-depth-warning": "Malen er inkludert for mange gonger ($1)", "language-converter-depth-warning": "Språkomformaren si djubdegrense vart overstege ($1)", "node-count-exceeded-category": "Sider der talet på knutepunkt er overskride", @@ -706,9 +707,9 @@ "last": "førre", "page_first": "fyrste", "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": "Finn dato", - "history-show-deleted": "Berre sletta", + "histlegend": "Merk av for dei versjonane du vil samanlikne og trykk [Enter] eller klikk på knappen nedst på sida.
    \nForklaring: ({{int:cur}}) = skilnad frå den noverande versjonen, ({{int:last}}) = skilnad frå den førre versjonen, {{int:minoreditletter}} = småplukk", + "history-fieldset-title": "Søk etter versjonar", + "history-show-deleted": "Berre sletta versjonar", "histfirst": "eldste", "histlast": "nyaste", "historysize": "({{PLURAL:$1|1 byte|$1 byte}})", @@ -809,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}})", @@ -880,10 +881,10 @@ "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", + "prefs-changeemail": "Endre eller fjern e-postadresse", "prefs-setemail": "↓Oppgje ei e-postadresse", "prefs-email": "Val for e-post", "prefs-rendering": "Utsjånad", @@ -937,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.", @@ -977,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", @@ -1120,17 +1125,26 @@ "recentchanges-legend-heading": "Tyding:", "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-quickfilters": "Lagra filterinnstillingar", + "rcfilters-limit-title": "Tal endringar som skal visast", + "rcfilters-limit-shownum": "Vis {{PLURAL:$1|den siste endringa|dei siste $1 endringane}}", + "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 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", "rcfilters-savedqueries-rename": "Gje nytt namn", "rcfilters-savedqueries-new-name-label": "Namn", + "rcfilters-savedqueries-new-name-placeholder": "Skildra føremålet med filteret", "rcfilters-savedqueries-apply-label": "Lagra innstillingar", "rcfilters-savedqueries-add-new-title": "Lagra gjeldande filterinnstillingar", "rcfilters-clear-all-filters": "Fjern alle filter", + "rcfilters-show-new-changes": "Sjå dei nyaste endringane", "rcfilters-search-placeholder": "Filtrer siste endringar (gå gjennom liste eller skriv filternamn)", "rcfilters-invalid-filter": "Ugyldig filter", "rcfilters-empty-filter": "Ingen aktive filter. Alle bidrag er viste.", @@ -1139,23 +1153,22 @@ "rcfilters-highlightbutton-title": "Uthev resultat", "rcfilters-highlightmenu-title": "Vel ein farge", "rcfilters-filterlist-noresults": "Fann ingen filter", - "rcfilters-filtergroup-registration": "Brukarregistrering", - "rcfilters-filter-registered-label": "Registrerte", - "rcfilters-filter-registered-description": "Innlogga brukarar.", - "rcfilters-filter-unregistered-label": "Uregistrerte", - "rcfilters-filter-unregistered-description": "Brukarar som ikkje er innlogga.", "rcfilters-filtergroup-authorship": "Forfattar", "rcfilters-filter-editsbyself-label": "Endringar av deg", "rcfilters-filter-editsbyself-description": "Dine eigne bidrag.", "rcfilters-filter-editsbyother-label": "Endringar av andre", "rcfilters-filter-editsbyother-description": "Alle endringar utanom dine eigne.", "rcfilters-filtergroup-userExpLevel": "Røynslenivå (berre for registrerte brukarar)", + "rcfilters-filter-user-experience-level-registered-label": "Registrerte", + "rcfilters-filter-user-experience-level-registered-description": "Innlogga brukarar.", + "rcfilters-filter-user-experience-level-unregistered-label": "Uregistrerte", + "rcfilters-filter-user-experience-level-unregistered-description": "Brukarar som ikkje er innlogga.", "rcfilters-filter-user-experience-level-newcomer-label": "Nykomarar", - "rcfilters-filter-user-experience-level-newcomer-description": "Færre enn 10 endringar og 4 dagar med aktivitet.", + "rcfilters-filter-user-experience-level-newcomer-description": "Registrerte brukarar med færre enn 10 endringar og 4 dagar med aktivitet.", "rcfilters-filter-user-experience-level-learner-label": "Nybyrjarar", "rcfilters-filter-user-experience-level-learner-description": "Meir røynsle enn «Nykomarar», men mindre enn «Røynde brukarar».", "rcfilters-filter-user-experience-level-experienced-label": "Røynde brukarar", - "rcfilters-filter-user-experience-level-experienced-description": "Meir enn 30 dagar med aktivitet og 500 endringar.", + "rcfilters-filter-user-experience-level-experienced-description": "Registrerte brukarar med meir enn 500 endringar og 30 dagar med aktivitet.", "rcfilters-filter-bots-label": "Robot", "rcfilters-filter-bots-description": "Endringar gjorde med automatiske verktøy.", "rcfilters-filter-humans-label": "Menneske (ikkje robot)", @@ -1167,6 +1180,13 @@ "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", + "rcfilters-filter-watchlist-watchednew-description": "Endringar på sider du overvakar som du ikkje har vitja sidan endringane vart gjorde.", + "rcfilters-filter-watchlist-notwatched-label": "Ikkje på overvakingslista", + "rcfilters-filter-watchlist-notwatched-description": "Alt utanom endringar på sider du overvakar.", "rcfilters-filter-pageedits-label": "Sideendringar", "rcfilters-filter-pageedits-description": "Endringar av wikiinnhald, diskusjonar, kategoriskildringar ...", "rcfilters-filter-newpages-label": "Sideopprettingar", @@ -1174,9 +1194,23 @@ "rcfilters-filter-categorization-label": "Kategoriendringar", "rcfilters-filter-categorization-description": "Oppføringar av sider som vert lagde til eller fjerna frå katerogiar.", "rcfilters-filter-logactions-label": "Loggførte handlingar", - "rcfilters-filtergroup-lastRevision": "Siste versjonen", + "rcfilters-filter-logactions-description": "Administrative handlingar, kontoopprettingar, sideslettingar, opplastingar …", + "rcfilters-filtergroup-lastRevision": "Siste versjonane", + "rcfilters-filter-lastrevision-label": "Siste versjonen", + "rcfilters-filter-lastrevision-description": "Berre den aller siste endringa på ei side.", + "rcfilters-filter-previousrevision-label": "Ikkje den siste versjonen", + "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", + "rcfilters-liveupdates-button": "Oppdateringar i sanntid", + "rcfilters-watchlist-markseen-button": "Merk alle endringar som sette", + "rcfilters-watchlist-edit-watchlist-button": "Endra lista over sider du overvaker", "rcnotefrom": "Nedanfor er endringane gjorde sidan $2 viste (opp til $1 stykke)", + "rclistfromreset": "Nullstill datoval", "rclistfrom": "Vis nye endringar sidan $3 $2", "rcshowhideminor": "$1 småplukk", "rcshowhideminor-show": "Vis", @@ -1319,7 +1353,12 @@ "upload-form-label-infoform-title": "Detaljar", "upload-form-label-infoform-name": "Namn", "upload-form-label-usage-filename": "Filnamn", + "upload-form-label-own-work": "Dette er mitt eige verk", "upload-form-label-infoform-categories": "Kategoriar", + "upload-form-label-own-work-message-generic-local": "Eg stadfester at eg lastar opp denne fila i samsvar med bruksvilkåra og lisensieringsretningslinene på {{SITENAME}}.", + "upload-form-label-not-own-work-local-generic-local": "Du kan eventuelt freista [[Special:Upload|den vanlege opplastingssida]].", + "upload-form-label-own-work-message-generic-foreign": "Eg skjøner at eg lastar opp denne fila til ein delt lagringsstad. Eg stadfester at eg gjer dette i samsvar med bruksvilkåra og lisensieringsretningslinene der.", + "upload-form-label-not-own-work-local-generic-foreign": "Du kan eventuelt freista [[Special:Upload|opplastingssida på {{SITENAME}}]], om fila kan lastast opp der under retningslinene som gjeld der.", "backend-fail-stream": "Kunne ikkje strøyma fila «$1».", "backend-fail-backup": "Kunne ikkje tryggingskopiera fila «$1».", "backend-fail-notexists": "Fila $1 finst ikkje.", @@ -1628,6 +1667,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", @@ -1728,10 +1769,12 @@ "watchlistanontext": "Logg inn for å vise eller endre sider på overvakingslista di.", "watchnologin": "Ikkje innlogga", "addwatch": "↓Legg til i overvakingslista", - "addedwatchtext": "Sida «[[:$1]]» er lagd til i [[Special:Watchlist|overvakingslista]] di. Framtidige endringar av henne og den tilhøyrande diskusjonssida hennar vil bli oppførte der.", + "addedwatchtext": "«[[:$1]]» og diskusjonssida hennar er lagde til i [[Special:Watchlist|overvakingslista]] di.", + "addedwatchtext-talk": "«[[:$1]]» og den tilknytte sida hennar er lagde til i [[Special:Watchlist|overvakingslista di]].", "addedwatchtext-short": "Sida «$1» vart lagd til i overvakingslista di.", "removewatch": "Fjerna frå overvakingslista", - "removedwatchtext": "Sida «[[:$1]]» er fjerna frå [[Special:Watchlist|overvakingslista di]].", + "removedwatchtext": "«[[:$1]]» og diskusjonssida hennar er fjerna frå [[Special:Watchlist|overvakingslista]] di.", + "removedwatchtext-talk": "«[[:$1]]» og den tilknytte sida hennar er fjerna frå [[Special:Watchlist|overvakingslista di]].", "removedwatchtext-short": "Sida «$1» vart fjerna frå overvakingslista di.", "watch": "Overvak", "watchthispage": "Overvak sida", @@ -1782,7 +1825,7 @@ "exbeforeblank": "innhaldet før sida vart tømd var: «$1»", "delete-confirm": "Slett «$1»", "delete-legend": "Slett", - "historywarning": "'''Åtvaring:''' Sida du held på å slette har ein historikk med om lag $1 {{PLURAL:$1|versjon|versjonar}}:", + "historywarning": "Åtvaring: Sida du held på å slette har ein historikk med $1 {{PLURAL:$1|versjon|versjonar}}:", "historyaction-submit": "Vis", "confirmdeletetext": "Du held på å varig slette ei side eller eit bilete saman med heile den tilhøyrande historikken frå databasen. Stadfest at du verkeleg vil gjere dette, at du skjønar konsekvensane, og at du gjer dette i tråd med [[{{MediaWiki:Policy-url}}|retningslinene]].", "actioncomplete": "Ferdig", @@ -2920,7 +2963,6 @@ "fileduplicatesearch-noresults": "Fann inga fil med namnet «$1».", "specialpages": "Spesialsider", "specialpages-note-top": "Tyding", - "specialpages-note": "* Vanlege spesialsider.\n* Spesialsider med avgrensa tilgang.", "specialpages-group-maintenance": "Vedlikehaldsrapportar", "specialpages-group-other": "Andre spesialsider", "specialpages-group-login": "Logga inn / oppretta brukarkonto", @@ -2967,6 +3009,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", @@ -2978,6 +3021,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)", @@ -3020,12 +3064,13 @@ "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", "logentry-move-move_redir-noredirect": "$1 {{GENDER:$2|flytte}} sida $3 til $4 over ei omdirigering utan å lata etter ei omdirigering", "logentry-patrol-patrol": "$1 {{GENDER:$2|merkte}} versjon $4 av sida $3 som patruljert", - "logentry-patrol-patrol-auto": "$1{{GENDER:$2| merkte}} automatisk versjon $4 av sida $3 som patruljert", + "logentry-patrol-patrol-auto": "$1 {{GENDER:$2|merkte}} automatisk versjon $4 av sida $3 som patruljert", "logentry-newusers-newusers": "Brukarkontoen $1 vart {{GENDER:$2|oppretta}}", "logentry-newusers-create": "Brukarkontoen $1 vart {{GENDER:$2|oppretta}}", "logentry-newusers-create2": "Brukarkontoen $3 vart {{GENDER:$2|oppretta}} av $1", @@ -3138,7 +3183,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..62f0c48c1f 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)", @@ -3059,7 +3042,7 @@ "feedback-submit": "ଦାଖଲ କରିବା", "feedback-thanks": "ସାଧୁବାଦ ! ଆପଣଙ୍କର ମତାମତ \"[$2 $1]\" ପୃଷ୍ଠାରେ ସାଇତାଯାଇଛି ।", "feedback-thanks-title": "ସାଧୁବାଦ!", - "searchsuggest-search": "ଖୋଜନ୍ତୁ", + "searchsuggest-search": "{{SITENAME}}ରେ ଖୋଜିବେ", "searchsuggest-containing": "ଖୋଜୁଛି...", "api-error-badtoken": "ଭିତର ଅସୁବିଧା: ଖରାପ ଟୋକନ ।", "api-error-emptypage": "ନୂଆ, ଖାଲି ପୃଷ୍ଠ ତିଆରି କରିବାର ଅନୁମତି ନାହି ।", diff --git a/languages/i18n/pl.json b/languages/i18n/pl.json index 788ef3f4ba..6d1e4b8fd6 100644 --- a/languages/i18n/pl.json +++ b/languages/i18n/pl.json @@ -89,7 +89,9 @@ "Kirsan", "Krottyianock", "Mazab IZW", - "InternerowyGołąb" + "InternerowyGołąb", + "Wojtas", + "Kastanoto" ] }, "tog-underline": "Podkreślenie linków:", @@ -119,13 +121,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", @@ -749,7 +752,6 @@ "explainconflict": "Ktoś zmienił treść strony w trakcie Twojej edycji.\nGórne pole zawiera tekst strony aktualnie zapisany w bazie danych.\nTwoje zmiany znajdują się w dolnym polu.\nBy wprowadzić swoje zmiany, musisz zmodyfikować tekst z górnego pola.\n'''Tylko''' tekst z górnego pola zostanie zapisany w bazie, gdy wciśniesz „$1”.", "yourtext": "Twój tekst", "storedversion": "Zapisana wersja", - "nonunicodebrowser": "'''Uwaga! Twoja przeglądarka nie rozpoznaje poprawnie kodowania UTF‐8 (Unicode).\nZ tego powodu wszystkie znaki, których przeglądarka nie rozpoznaje, zostały zastąpione ich kodami szesnastkowymi.'''", "editingold": "'''Uwaga! Edytujesz starszą niż bieżąca wersję tej strony.\nJeśli ją zapiszesz, wszystkie zmiany wykonane w międzyczasie zostaną wycofane.'''", "yourdiff": "Różnice", "copyrightwarning": "Wkład na {{SITENAME}} jest udostępniany na licencji $2 (szczegóły w $1). Jeśli nie chcesz, żeby Twój tekst był dowolnie zmieniany przez każdego i rozpowszechniany bez ograniczeń, nie umieszczaj go tutaj.
    \nZapisując swoją edycję, oświadczasz, że ten tekst jest Twoim dziełem lub pochodzi z materiałów dostępnych na warunkach ''domeny publicznej'' lub kompatybilnych.\n'''PROSZĘ NIE WPROWADZAĆ MATERIAŁÓW CHRONIONYCH PRAWEM AUTORSKIM BEZ POZWOLENIA WŁAŚCICIELA!'''", @@ -777,8 +779,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 +1048,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,9 +1364,20 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (zobacz też [[Special:NewPages|listę nowych stron]])", "recentchanges-legend-plusminus": "(''±123'')", "recentchanges-submit": "Pokaż", + "rcfilters-tag-remove": "Usuń '$1'", "rcfilters-legend-heading": "Wykaz skrótów:", + "rcfilters-other-review-tools": "Inne narzędzia do sprawdzania", + "rcfilters-group-results-by-page": "Grupuj wyniki według stron", + "rcfilters-grouping-title": "Grupowanie", "rcfilters-activefilters": "Aktywne filtry", "rcfilters-advancedfilters": "Zaawansowane filtry", + "rcfilters-limit-title": "Zmian do pokazania", + "rcfilters-limit-shownum": "Pokaż {{PLURAL:$1|ostatnią zmianę|ostatnie $1 zmiany|ostatnie $1 zmian}}", + "rcfilters-days-title": "Ostatnich dni", + "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.", @@ -1376,43 +1389,41 @@ "rcfilters-savedqueries-new-name-label": "Nazwa", "rcfilters-savedqueries-new-name-placeholder": "Opisz przeznaczenie filtra", "rcfilters-savedqueries-apply-label": "Utwórz Filtr", + "rcfilters-savedqueries-apply-and-setdefault-label": "Utwórz filtr domyślny", "rcfilters-savedqueries-cancel-label": "Anuluj", "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": "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.", "rcfilters-filterlist-title": "Filtry", - "rcfilters-filterlist-whatsthis": "Co to jest?", - "rcfilters-filterlist-feedbacklink": "Podziel się swoją opinią na temat tych nowych (beta) filtrów", + "rcfilters-filterlist-whatsthis": "Jak działają?", + "rcfilters-filterlist-feedbacklink": "Napisz co sądzisz o tych nowych narzędziach filtrowania", "rcfilters-highlightbutton-title": "Podświetl wyniki", "rcfilters-highlightmenu-title": "Wybierz kolor", "rcfilters-highlightmenu-help": "Wybierz kolor, aby podświetlić tę właściwość", "rcfilters-filterlist-noresults": "Nie znaleziono filtrów", "rcfilters-noresults-conflict": "Nie znaleziono wyników z powodu konfliktu kryteriów wyszukiwania", "rcfilters-state-message-subset": "Ten filtr nie wywoła efektu, ponieważ pasujące do niego wyniki są zawarte w bardziej {{PLURAL:$2|szczegółowym filtrze|szczegółowych filtrach}} (spróbuj podświetlić, aby je rozróżnić): $1", - "rcfilters-state-message-fullcoverage": "Wybranie wszystkich filtrów w grupie działa tak samo jak niewybranie żadnego, więc taki filtr nie da żadnego efektu. W grupie zawarto też: $1", - "rcfilters-filtergroup-registration": "Rejestracja użytkownika", - "rcfilters-filter-registered-label": "Zarejestrowani", - "rcfilters-filter-registered-description": "Zalogowani edytorzy.", - "rcfilters-filter-unregistered-label": "Niezarejestrowani", - "rcfilters-filter-unregistered-description": "Niezalogowani", - "rcfilters-filter-unregistered-conflicts-user-experience-level": "Ten filtr koliduje z {{PLURAL:$2|poniższym filtrem|poniższymi filtrami}} doświadczenia, {{PLURAL:$2|który wyszukuje|które wyszukują}} tylko zarejestrowanych użytkowników: $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.", "rcfilters-filter-editsbyother-label": "Zmiany dokonane przez innych", "rcfilters-filter-editsbyother-description": "Wszystkie zmiany oprócz Twoich.", - "rcfilters-filtergroup-userExpLevel": "Poziom doświadczenia (tylko o zarejestrowanych użytkownikach)", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Filtry doświadczenia wyszukują tylko edycje zarejestrowanych użytkowników, więc ten filtr koliduje z filtrem „Niezarejestrowani”.", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Filtr \"Niezarejestrowani\" koliduje z jednym lub więcej filtrów z filtrów poziomu doświadczenia, które służą do wyszukiwania wkładu tylko zarejestrowanych użytkowników. Kolidujące filtry zostały odpowiednio oznaczone na pasku Aktywnych filtrów.", + "rcfilters-filtergroup-userExpLevel": "Zarejestrowanie użytkownika i doświadczenie", + "rcfilters-filter-user-experience-level-registered-label": "Zarejestrowani", + "rcfilters-filter-user-experience-level-registered-description": "Zalogowani edytorzy.", + "rcfilters-filter-user-experience-level-unregistered-label": "Niezarejestrowani", + "rcfilters-filter-user-experience-level-unregistered-description": "Niezalogowani", "rcfilters-filter-user-experience-level-newcomer-label": "Początkujący", - "rcfilters-filter-user-experience-level-newcomer-description": "Mniej niż 10 edycji i 4 dni aktywności.", + "rcfilters-filter-user-experience-level-newcomer-description": "Zarejestrowani edytorzy z mniej niż 10 edycji i 4 dni aktywności.", "rcfilters-filter-user-experience-level-learner-label": "Uczący się", - "rcfilters-filter-user-experience-level-learner-description": "Większe doświadczenie niż „Nowicjusze”, ale mniejsze niż „Doświadczeni użytkownicy”.", + "rcfilters-filter-user-experience-level-learner-description": "Zarejestrowani edytujący, których doświadczenie plasuje się między „Nowicjuszami”, a „Doświadczonymi użytkownikami”.", "rcfilters-filter-user-experience-level-experienced-label": "Doświadczeni użytkownicy", - "rcfilters-filter-user-experience-level-experienced-description": "Ponad 30 dni aktywności i 500 edycji.", + "rcfilters-filter-user-experience-level-experienced-description": "Zarejestrowani edytujący z ponad 500 edycji i 30 dni aktywności.", "rcfilters-filtergroup-automated": "Zmiany zautomatyzowane", "rcfilters-filter-bots-label": "Bot", "rcfilters-filter-bots-description": "Zmiany wykonane z użyciem zautomatyzowanych narzędzi.", @@ -1435,6 +1446,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…", @@ -1447,18 +1463,27 @@ "rcfilters-hideminor-conflicts-typeofchange-global": "Filtr „Drobne zmiany” koliduje z jednym lub wieloma filtrami Rodzaju zmian, ponieważ niektóre rodzaje zmian nie mogą być uznawane za „drobne”. Kolidujące filtry zostały powyżej odpowiednio zaznaczone na pasku aktywnych filtrów.", "rcfilters-hideminor-conflicts-typeofchange": "Niektóre rodzaje zmian nie mogą być uznawane za „drobne”, dlatego ten filtr koliduje z następującymi filtrami Rodzaju zmian: $1", "rcfilters-typeofchange-conflicts-hideminor": "Ten filtr Rodzaju zmian koliduje z filtrem „Drobne zmiany”. Nie wszystkie zmiany mogą być uznawane za „drobne”.", - "rcfilters-filtergroup-lastRevision": "Ostatnia wersja", - "rcfilters-filter-lastrevision-label": "Ostatnie wersje", + "rcfilters-filtergroup-lastRevision": "Ostatnie wersje", + "rcfilters-filter-lastrevision-label": "Najnowsza wersja", "rcfilters-filter-lastrevision-description": "Tylko najnowsze zmiany dla każdej ze stron.", - "rcfilters-filter-previousrevision-label": "Wcześniejsze wersje", - "rcfilters-filter-previousrevision-description": "Wszystkie edycje, które nie są najnowszą zmianą strony.", + "rcfilters-filter-previousrevision-label": "Wersje inne niż najnowsza", + "rcfilters-filter-previousrevision-description": "Wszystkie edycje, które nie są najnowszą wersją strony.", "rcfilters-filter-excluded": "Wykluczono", "rcfilters-tag-prefix-namespace-inverted": ":nie z $1", + "rcfilters-exclude-button-off": "Wyklucz zaznaczone", + "rcfilters-exclude-button-on": "Zaznaczone są wykluczone", + "rcfilters-view-advanced-filters-label": "Zaawansowane filtry", "rcfilters-view-tags": "Edycje ze znacznikami zmian", "rcfilters-view-namespaces-tooltip": "Przefiltruj wyniki według przestrzeni nazw", "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", + "rcfilters-watchlist-edit-watchlist-button": "Edytuj swoją listę obserwowanych stron", + "rcfilters-watchlist-showupdated": "Wytłuszczono strony, których nie odwiedził{{GENDER:|e|a|e}}ś od czasu zapisania ostatnich zmian.", + "rcfilters-preference-label": "Wyłącz ulepszenia strony Ostatnie zmiany", "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", @@ -1736,7 +1761,7 @@ "listfiles_size": "Wielkość", "listfiles_description": "Opis", "listfiles_count": "Wersje", - "listfiles-show-all": "Uwzględnij starsze wersje zdjęć", + "listfiles-show-all": "Uwzględnij starsze wersje plików", "listfiles-latestversion": "Aktualna wersja", "listfiles-latestversion-yes": "Tak", "listfiles-latestversion-no": "Nie", @@ -1837,8 +1862,10 @@ "statistics-users-active-desc": "Użytkownicy, którzy byli aktywni w ciągu {{PLURAL:$1|ostatniego dnia|ostatnich $1 dni}}", "pageswithprop": "Strony z właściwościami", "pageswithprop-legend": "Strony z właściwościami", - "pageswithprop-text": "Ta strona zawiera listę stron korzystających z właściwości.", + "pageswithprop-text": "Ta strona zawiera listę stron korzystających z określonej właściwości strony.", "pageswithprop-prop": "Nazwa właściwości:", + "pageswithprop-reverse": "Sortuj w odwrotnej kolejności", + "pageswithprop-sortbyvalue": "Sortuj według wartości właściwości", "pageswithprop-submit": "Pokaż", "pageswithprop-prophidden-long": "długa wartość własności ukryta ($1)", "pageswithprop-prophidden-binary": "binarna wartość własności ukryta ($1)", @@ -2138,7 +2165,7 @@ "unwatchthispage": "Nie obserwuj", "notanarticle": "To nie jest artykuł", "notvisiblerev": "Wersja została usunięta", - "watchlist-details": "Lista obserwowanych przez Ciebie stron zawiera {{PLURAL:$1|$1 pozycję|$1 pozycje|$1 pozycji}}, nie licząc oddzielnie stron dyskusji.", + "watchlist-details": "Lista obserwowanych przez Ciebie stron zawiera {{PLURAL:$1|$1 pozycję|$1 pozycje|$1 pozycji}}, razem ze stronami dyskusji.", "wlheader-enotif": "Wysyłanie powiadomień na adres e‐mail jest włączone.", "wlheader-showupdated": "'''Wytłuszczone''' zostały strony, które zostały zmodyfikowane od Twojej ostatniej wizyty na nich.", "wlnote": "Poniżej pokazano {{PLURAL:$1|zmianę wykonaną|$1 zmiany wykonane|$1 zmian wykonanych}} w ciągu {{PLURAL:$2|ostatniej godziny|ostatnich $2 godzin}}, licząc od $4 dnia $3.", @@ -2173,6 +2200,7 @@ "enotif_lastdiff": "Aby obejrzeć tę zmianę, zobacz $1", "enotif_anon_editor": "użytkownik anonimowy $1", "enotif_body": "Szanowny $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nOpis zmiany: $PAGESUMMARY $PAGEMINOREDIT\n\nKontakt do autora:\nmail – $PAGEEDITOR_EMAIL\nwiki – $PAGEEDITOR_WIKI\n\nW przypadku kolejnych zmian nowe powiadomienia nie zostaną wysłane, dopóki nie odwiedzisz tej strony jako zalogowany. Możesz także zresetować wszystkie flagi powiadomień na swojej liście stron obserwowanych.\n\nWiadomość z systemu powiadomień {{GRAMMAR:D.lp|{{SITENAME}}}}\n\n--\nW celu zmiany ustawień swojej listy obserwowanych odwiedź\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nUsunięcie strony z listy obserwowanych możliwe jest na stronie\n$UNWATCHURL\n\nPomoc\n$HELPPAGE", + "enotif_minoredit": "To jest drobna zmiana", "created": "utworzona", "changed": "zmieniona", "deletepage": "Usuń stronę", @@ -2201,6 +2229,7 @@ "delete-warning-toobig": "Ta strona ma bardzo długą historię edycji – ponad $1 {{PLURAL:$1|zmianę|zmiany|zmian}}.
    \nBądź ostrożny, ponieważ usunięcie jej może spowodować zakłócenia w pracy {{GRAMMAR:D.lp|{{SITENAME}}}}.", "deleteprotected": "Nie możesz usunąć tej strony, ponieważ została zabezpieczona.", "deleting-backlinks-warning": "Uwaga: Do strony, którą masz zamiar usunąć, odwołują się [[Special:WhatLinksHere/{{FULLPAGENAME}}|inne strony]].", + "deleting-subpages-warning": "Ostrzeżenie: Strona którą chcesz usunąć ma [[Special:PrefixIndex/{{FULLPAGENAME}}/|{{PLURAL:$1|jedną podstronę|$1 podstrony|$1 podstron|51=ponad 50 podstron}}]].", "rollback": "Cofnij edycję", "rollbacklink": "cofnij", "rollbacklinkcount": "cofnij $1 {{PLURAL:$1|edycję|edycje|edycji}}", @@ -2654,7 +2683,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.", @@ -2759,7 +2788,7 @@ "lastmodifiedatby": "Ostatnia edycja tej strony: $2, $1 (autor zmian: $3)", "othercontribs": "Inni autorzy: $1.", "others": "inni", - "siteusers": "{{PLURAL:$2|użytkownik |użytkownicy}}{{GRAMMAR:D.lp|{{SITENAME}}}}{{PLURAL:$2||:}} $1", + "siteusers": "{{PLURAL:$2|użytkownik|użytkownicy}} {{GRAMMAR:D.lp|{{SITENAME}}}}{{PLURAL:$2||:}} $1", "anonusers": "{{PLURAL:$2|niezalogowany użytkownik|niezalogowani użytkownicy}} {{GRAMMAR:D.lp|{{SITENAME}}}}{{PLURAL:$2||:}} $1", "creditspage": "Autorzy", "nocredits": "Brak informacji o autorach tej strony.", @@ -3460,7 +3489,7 @@ "fileduplicatesearch-noresults": "Brak pliku o nazwie „$1”.", "specialpages": "Strony specjalne", "specialpages-note-top": "Legenda", - "specialpages-note": "* Normalne strony specjalne.\n* Zastrzeżone strony specjalne.", + "specialpages-note-restricted": "* Normalne strony specjalne.\n* Zastrzeżone strony specjalne.", "specialpages-group-maintenance": "Raporty konserwacyjne", "specialpages-group-other": "Inne strony specjalne", "specialpages-group-login": "Logowanie / rejestracja", @@ -3579,6 +3608,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)", @@ -3593,7 +3629,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": "Prześlij", "htmlform-reset": "Cofnij zmiany", "htmlform-selectorother-other": "Inne", "htmlform-no": "Nie", @@ -3901,6 +3937,7 @@ "log-action-filter-suppress-reblock": "Ukrycie użytkownika poprzez ponowną blokadę", "log-action-filter-upload-upload": "Nowe przesłane", "log-action-filter-upload-overwrite": "Przesłane ponownie", + "authmanager-authn-not-in-progress": "Tworzenie konta nie jest wykonywane lub dane sesji zostały utracone. Zacznij od początku.", "authmanager-authn-no-primary": "Podane dane nie mogą być użyte do kontroli poświadczeń.", "authmanager-authn-no-local-user": "Żaden użytkownik nie korzysta z tych danych.", "authmanager-authn-autocreate-failed": "Automatyczne tworzenie lokalnego konta nie powiodło się: $1", diff --git a/languages/i18n/pnb.json b/languages/i18n/pnb.json index 81b6f72e1a..fd7fb645b5 100644 --- a/languages/i18n/pnb.json +++ b/languages/i18n/pnb.json @@ -14,7 +14,8 @@ "Matma Rex", "Saanvel", "Satdeep gill", - "Abbas dhothar" + "Abbas dhothar", + "Saraiki" ] }, "tog-underline": "جوڑ تھلے لین:", @@ -158,13 +159,7 @@ "anontalk": "گل", "navigation": "کھوج", "and": " تے", - "qbfind": "کھوج", - "qbbrowse": "لبو", - "qbedit": "لکھو", - "qbpageoptions": "اے صفہ", - "qbmyoptions": "میرے صفے", "faq": "FAQ", - "faqpage": "Project:FAQ", "actions": "کم", "namespaces": "ناں تھانواں:", "variants": "قسماں", @@ -187,31 +182,22 @@ "view": "وکھالہ", "view-foreign": "$1 تے ویکھو", "edit": "لکھو", + "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": "سچے آلا صفحہ ویکھو", @@ -2495,7 +2481,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": "لاگان / کھاتہ کھولو", diff --git a/languages/i18n/ps.json b/languages/i18n/ps.json index c49bcd02d1..75879f700d 100644 --- a/languages/i18n/ps.json +++ b/languages/i18n/ps.json @@ -8,7 +8,8 @@ "Macofe", "Amire80", "Matma Rex", - "Ibrahim khashrowdi" + "Ibrahim khashrowdi", + "Baloch Khan" ] }, "tog-underline": "کرښنې تړنې:", @@ -152,13 +153,7 @@ "anontalk": "خبرې اترې", "navigation": "گرځښت", "and": " او", - "qbfind": "موندل", - "qbbrowse": "سپړل", - "qbedit": "سمول", - "qbpageoptions": "همدا مخ", - "qbmyoptions": "زما پاڼې", "faq": "ډ-ځ-پ", - "faqpage": "Project:ډ-ځ-پ", "actions": "کړنې", "namespaces": "نوم-تشيالونه", "variants": "ډولونه", @@ -173,6 +168,7 @@ "searcharticle": "ورځه", "history": "د مخ پېښليک", "history_short": "پېښليک", + "history_small": "تاریخ", "updatedmarker": "زما د وروستي راتگ نه راپدېخوا اوسمهاله شوی", "printableversion": "چاپي بڼه", "permalink": "تلپاتې تړنه", @@ -183,29 +179,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": "اوزارونه", - "userpage": "د کارن پاڼه کتل", - "projectpage": "د پروژې مخ کتل", + "tool-link-userrights": "د{{GENDER:$1|کارن}} ګروپونه بدل کړي", + "tool-link-userrights-readonly": "د{{GENDER:$1|کارن}} ګروپونه ښکاره کړي", + "tool-link-emailuser": "دې {{GENDER:$1|کارن}} ته برېښناليک لېږل", "imagepage": "د دوتنې مخ کتل", "mediawikipage": "پيغام مخ کتل", "templatepage": "د کينډۍ مخ کتل", @@ -361,6 +350,7 @@ "virus-scanfailed": "ځيرڅارنه بريالۍ نه شوه (کوډ $1)", "virus-unknownscanner": "ناڅرگند ضدويروس:", "logouttext": "'''اوس تاسې د غونډال څخه ووتلئ.'''\n\nدا په پام کې وساتۍ چې تر څو تاسې د خپل کتنمل حافظه نه وي سپينه کړې، نو ځينې مخونو کې به لا تر اوسه پورې په غونډال کې ننوتي ښکارۍ.", + "cannotlogoutnow-title": "وس نسم کولاي بهر تري ووځم", "welcomeuser": "$1، ښه راغلې!", "welcomecreation-msg": "گڼون مو جوړ شو.\nد [[Special:Preferences|{{SITENAME}} غوره توبونه]] بدلول مو مه هېروۍ.", "yourname": "کارن-نوم:", @@ -376,6 +366,7 @@ "createacct-yourpasswordagain-ph": "پټنوم مو بيا وټاپئ", "userlogin-remembermypassword": "غونډال کې مې ننوتلی وساته", "userlogin-signwithsecure": "خوندي اړيکتيا کارول", + "cannotloginnow-title": "نسم کولای چې دننه سم", "cannotcreateaccount-title": "گڼونونه نه شي جوړېدای", "yourdomainname": "ستاسې شپول:", "password-change-forbidden": "تاسې په دې ويکي باندې خپل پټنوم نه شی بدلولی.", @@ -471,6 +462,8 @@ "botpasswords-label-update": "اوسمهالول", "botpasswords-label-cancel": "ناگارل", "botpasswords-label-delete": "ړنگول", + "botpasswords-label-resetpassword": "پټوم بدل کړي", + "botpasswords-label-grants": "تطبیق وړ ګرانټ:", "resetpass_forbidden": "پټنومونه مو نه شي بدلېدلای", "resetpass-no-info": "دې مخ ته د لاسرسي لپاره بايد غونډال کې ورننوځۍ.", "resetpass-submit-loggedin": "پټنوم بدلول", @@ -863,6 +856,7 @@ "editusergroup": "{{GENDER:$1|کارن}} ډلې سمول", "editinguser": "د [[User:$1|$1]] {{GENDER:$1|کارن}} رښتې بدلول $2", "userrights-editusergroup": "کارن ډلې سمول", + "userrights-viewusergroup": "د{{GENDER:$1|کارن}} ګروپونه ښکاره کړي", "saveusergroups": "{{GENDER:$1|کارن}} ډلې خوندي کول", "userrights-groupsmember": "غړی د:", "userrights-groupsmember-auto": "ضمني غړی د:", @@ -1007,6 +1001,8 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|د نويو مخونو لړليک]] هم وگورئ)", "recentchanges-legend-plusminus": "(±123)", "recentchanges-submit": "ښکاره کول", + "rcfilters-tag-remove": "لرې کړئ'$1'", + "rcfilters-savedqueries-rename": "نوم بدلول", "rcfilters-filterlist-title": "چاڼگران", "rcfilters-filter-user-experience-level-newcomer-label": "نوي راغلي", "rcfilters-filter-user-experience-level-learner-label": "زده کوونکي", @@ -1273,6 +1269,7 @@ "pageswithprop-submit": "ورځه", "doubleredirects": "دوه ځلي ورگرځېدنې", "doubleredirectstext": "په دې مخ د هغو مخونو لړليک دی چې نورو مخ گرځېدنو ته مخ گرځونې لري.\nهره يوه ليکه لومړنۍ او دويمې مخ گرځونې سره تړنه لري، همداراز د دويمې مخ گرځونې مخ چې اکثراً د \"اصلي\" موخې مخ دی، بايد لومړنۍ مخ گرځونې ته نغوته وکړي.\nکرښه خوړلي توکي وار له مخه سم شوي دي.", + "double-redirect-fixer": "راګرځونه جوړونکي", "brokenredirects": "ماتې ورگرځېدنې", "brokenredirectstext": "لاندينۍ مخ گرځونې ناموجوده مخونو سره تړنې لري:", "brokenredirects-edit": "سمول", @@ -1719,6 +1716,7 @@ "unblocked-range": "له $1 بنديز ليرې شو", "unblocked-ip": "له [[Special:Contributions/$1|$1]] څخه بنديز ليرې شو.", "blocklist": "بنديز لگېدلي کارنان", + "autoblocklist-submit": "پلټل", "ipblocklist": "بنديز لگېدلي کارنان", "ipblocklist-legend": "يو بنديز شوی کارن موندل", "blocklist-userblocks": "گڼون بنديزونه پټول", @@ -1759,6 +1757,7 @@ "ipb-needreblock": "پر $1 د پخوا نه بنديز لگېدلی.\nآيا تاسې د امستنو بدلول غواړۍ؟", "ipb-otherblocks-header": "{{PLURAL:$1|بل بنديز|نور بنديزونه}}", "ip_range_invalid": "ناسم آی پي بريد.", + "proxyblocker": "پروکسي بنديز لګونکي", "lockdb": "توکبنسټ تړل", "unlockdb": "توکبنسټ پرانيستل", "lockconfirm": "هو، زه د توکبنسټ تړل غواړم.", @@ -1979,6 +1978,7 @@ "patrol-log-header": "دا د څارل شويو مخکتنو يو يادښت دی.", "log-show-hide-patrol": "د څارنې يادښت $1", "log-show-hide-tag": "نښلن يادښت $1", + "confirm-markpatrolled-button": "ښه", "deletedrevision": "د $1 زړه ړنگه شوې بڼه", "filedeleteerror-short": "د دوتنې د ړنگولو ستونزه: $1", "filedeleteerror-long": "د دوتنې په ړنگولو کې تېروتنې پېښې شوې:\n\n$1", @@ -2360,9 +2360,11 @@ "version-libraries-authors": "ليکوالان", "redirect": "ورگرځېدنې د دوتنې، کارن، مخ يا بڼې پېژند له مخې", "redirect-submit": "ورځه", + "redirect-lookup": "وګوري:", "redirect-value": "ارزښت:", "redirect-user": "کارن پېژند", "redirect-page": "د مخ پېژند", + "redirect-revision": "بياکتونکي مخ", "redirect-file": "د دوتنې نوم", "redirect-logid": "پېژند يادښت", "redirect-not-exists": "ارزښت و نه موندل شو", @@ -2374,7 +2376,6 @@ "fileduplicatesearch-noresults": "د \"$1\" په نوم دوتنه و نه موندل شوه.", "specialpages": "ځانگړي مخونه", "specialpages-note-top": "څرگندونې", - "specialpages-note": "* نورماله ځانگړي مخونه.\n* محدوده ځانگړي مخونه.", "specialpages-group-maintenance": "د څارنې راپورونه", "specialpages-group-other": "نور ځانگړي مخونه", "specialpages-group-login": "ننوتل / گڼون جوړول", @@ -2464,6 +2465,7 @@ "htmlform-title-not-exists": "$1 نشته.", "htmlform-user-not-exists": "$1 نشته.", "logentry-delete-delete": "$1 د $3 مخ {{GENDER:$2|ړنگ کړ}}", + "logentry-delete-restore": "$1 د $3 مخ $4 ته {{GENDER:$2|ولېږداوه}}", "revdelete-content-hid": "مېنځپانگه پټېدلې", "revdelete-uname-hid": "کارن نوم پټ شوی", "revdelete-content-unhid": "مېنځپانگه ښکاره شوی", @@ -2479,6 +2481,7 @@ "logentry-rights-rights": "$1 د $3 لپاره د غړيتوب ډله له $4 څخه $5 ته {{GENDER:$2|بدله کړه}}", "logentry-rights-rights-legacy": "$1 د $3 لپاره د غړيتوب ډله {{GENDER:$2|بدله کړه}}", "logentry-upload-upload": "$1 $3 {{GENDER:$2|ورپورته يې کړ}}", + "logentry-upload-overwrite": "$1 نوي ويرژن {{GENDER:$2|پورته}} سو $3", "logentry-upload-revert": "$1 $3 يې {{GENDER:$2|ورپورته کړه}}", "log-name-managetags": "د نښلن مهارولو يادښت", "log-name-tag": "نښلن يادښت", @@ -2588,6 +2591,7 @@ "authmanager-realname-label": "اصلي نوم", "authmanager-realname-help": "د کارن اصلي نوم", "authprovider-resetpass-skip-label": "تېرېدل", + "specialpage-securitylevel-not-allowed-title": "اجازه نسته", "changecredentials-submit": "بدلول", "removecredentials-submit": "غورځول", "credentialsform-account": "گڼون نوم:" diff --git a/languages/i18n/pt-br.json b/languages/i18n/pt-br.json index 3116f42268..c0ca71c32e 100644 --- a/languages/i18n/pt-br.json +++ b/languages/i18n/pt-br.json @@ -111,7 +111,8 @@ "Felipe L. Ewald", "WikiUser22222", "BarbaraAckles", - "Trigonometria87" + "Trigonometria87", + "RadiX" ] }, "tog-underline": "Link sublinhado:", @@ -141,13 +142,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", @@ -773,7 +775,6 @@ "explainconflict": "Alguém mudou a página enquanto você a estava editando.\nA área de texto acima mostra o texto original.\nSuas mudanças são mostradas na área abaixo.\nVocê terá que mesclar suas modificações no texto existente.\n'''SOMENTE''' o texto na área acima será salvo quando você pressionar \"$1\".", "yourtext": "Seu texto", "storedversion": "Versão guardada", - "nonunicodebrowser": "'''AVISO: O seu navegador não é compatível com as especificações unicode.'''\nUm contorno terá de ser utilizado para permitir que você possa editar as páginas com segurança: os caracteres não-ASCII aparecerão na caixa de edição no formato de códigos hexadecimais.", "editingold": "'''CUIDADO: Você está editando uma revisão desatualizada desta página.'''\nSe você salvá-la, todas as mudanças feitas a partir desta revisão serão perdidas.", "yourdiff": "Diferenças", "copyrightwarning": "Por favor, note que todas as suas contribuições em {{SITENAME}} são consideradas como lançadas nos termos da licença $2 (veja $1 para detalhes). Se não deseja que o seu texto seja inexoravelmente editado e redistribuído de tal forma, não o envie.
    \nVocê está, ao mesmo tempo, garantindo-nos que isto é algo escrito por você mesmo ou algo copiado de uma fonte de textos em domínio público ou similarmente de teor livre.\n'''NÃO ENVIE TRABALHO PROTEGIDO POR DIREITOS AUTORAIS SEM A DEVIDA PERMISSÃO!'''", @@ -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.", @@ -841,6 +842,7 @@ "parser-template-loop-warning": "Ciclo de predefinições detectado: [[$1]]", "template-loop-category": "Páginas com loops de predefinição", "template-loop-category-desc": "A página contém um loop de predefinição, ou seja, uma predefinição que se chama recursivamente.", + "template-loop-warning": "Aviso: Esta página chama [[:$1]] o que causa um ciclo infinito de predefinições (uma chamada recursiva sem término).", "parser-template-recursion-depth-warning": "O limite de profundidade de recursividade de predefinição foi ultrapassado ($1)", "language-converter-depth-warning": "O limite de profundidade do conversor de línguas excedeu a ($1)", "node-count-exceeded-category": "Páginas em que o total de nós é excedido", @@ -1070,7 +1072,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", @@ -1110,6 +1112,7 @@ "timezoneregion-indian": "Oceano Índico", "timezoneregion-pacific": "Oceano Pacífico", "allowemail": "Permitir que outros usuários me enviem e-mails", + "email-blacklist-label": "Proibir que esses usuários me enviem e-mails:", "prefs-searchoptions": "Busca", "prefs-namespaces": "Espaços nominais", "default": "padrão", @@ -1386,9 +1389,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-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 {{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.", @@ -1400,37 +1414,35 @@ "rcfilters-savedqueries-new-name-label": "Nome", "rcfilters-savedqueries-new-name-placeholder": "Descreva a finalidade do filtro", "rcfilters-savedqueries-apply-label": "Criar filtro", + "rcfilters-savedqueries-apply-and-setdefault-label": "Criar filtro padrão", "rcfilters-savedqueries-cancel-label": "Cancelar", "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.", "rcfilters-filterlist-title": "Filtros", - "rcfilters-filterlist-whatsthis": "O que é isso?", - "rcfilters-filterlist-feedbacklink": "Forneça feedback sobre os novos filtros (beta)", + "rcfilters-filterlist-whatsthis": "Como funcionam estes?", + "rcfilters-filterlist-feedbacklink": "Diga-nos o que você pensa sobre estas (novas) ferramentas de filtragem", "rcfilters-highlightbutton-title": "Realçar os resultados", "rcfilters-highlightmenu-title": "Selecione uma cor", "rcfilters-highlightmenu-help": "Selecione uma cor para realçar esta propriedade", "rcfilters-filterlist-noresults": "Nenhum filtro encontrado", "rcfilters-noresults-conflict": "Nenhum resultado encontrado porque os critérios de pesquisa estão em conflito", "rcfilters-state-message-subset": "Este filtro não tem efeito porque seus resultados estão incluídos com {{PLURAL:$2|o seguinte filtro mais amplo|os seguintes filtros mais amplos}} (tente realçar para distingui-lo): $1", - "rcfilters-state-message-fullcoverage": "Selecionar todos os filtros em um grupo é o mesmo que não selecionar nenhum, portanto este filtro não tem efeito. O grupo inclui: $1", - "rcfilters-filtergroup-registration": "Registro de usuário", - "rcfilters-filter-registered-label": "Registrado", - "rcfilters-filter-registered-description": "Editores conectados.", - "rcfilters-filter-unregistered-label": "Não registrado", - "rcfilters-filter-unregistered-description": "Editores que não estão conectados.", - "rcfilters-filter-unregistered-conflicts-user-experience-level": "Este filtro entra em conflito com {{PLURAL:$2|o seguinte filtro|os seguintes filtros}} de Experiência, que {{PLURAL:$2|encontra|encontram}} somente usuários registrados: $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.", "rcfilters-filter-editsbyother-label": "Mudanças de outros", "rcfilters-filter-editsbyother-description": "Todas as mudanças, exceto a sua.", - "rcfilters-filtergroup-userExpLevel": "Nível de experiência (apenas para usuário registados)", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Os filtros de experiência encontram apenas usuários registados, assim este filtro entra em conflito com o filtro “Não registado”.", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "O filtro \"Não Registrado\" entra em conflito com um ou mais filtros de Experiência, que localizam apenas usuários registrados. Os filtros em conflito são marcados na área Filtros Ativos, acima.", + "rcfilters-filtergroup-userExpLevel": "Registro e experiência do usuário", + "rcfilters-filter-user-experience-level-registered-label": "Registrado", + "rcfilters-filter-user-experience-level-registered-description": "Editores registrados.", + "rcfilters-filter-user-experience-level-unregistered-label": "Não registados", + "rcfilters-filter-user-experience-level-unregistered-description": "Editores que não estão autenticados.", "rcfilters-filter-user-experience-level-newcomer-label": "Recém-chegados", "rcfilters-filter-user-experience-level-newcomer-description": "Menos de 10 edições e 4 dias de atividade.", "rcfilters-filter-user-experience-level-learner-label": "Aprendizes", @@ -1459,6 +1471,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...", @@ -1471,18 +1488,28 @@ "rcfilters-hideminor-conflicts-typeofchange-global": "O filtro \"Edições menores\" conflita com um ou mais filtros de Tipo de Alteração, porque certos tipos de alteração não podem ser designadas como \"menores\". Os filtros em conflito estão marcados na área Filtros Ativos, acima.", "rcfilters-hideminor-conflicts-typeofchange": "Determinados tipos de alteração não podem ser designados como \"menor\", portanto, este filtro entra em conflito com os seguintes filtros de Tipo de Alteração: $1", "rcfilters-typeofchange-conflicts-hideminor": "Este filtro de Tipo de Alteração entra em conflito com o filtro \"Edições menores\". Certos tipos de mudança não podem ser designadas como \"menores\".", - "rcfilters-filtergroup-lastRevision": "Última revisão", - "rcfilters-filter-lastrevision-label": "Última revisão", - "rcfilters-filter-lastrevision-description": "A alteração mais recente para uma página.", - "rcfilters-filter-previousrevision-label": "Revisões anteriores", - "rcfilters-filter-previousrevision-description": "Todas as alterações que não são a alteração mais recente para uma página.", + "rcfilters-filtergroup-lastRevision": "Últimas revisões", + "rcfilters-filter-lastrevision-label": "Revisão atual", + "rcfilters-filter-lastrevision-description": "Somente a mudança mais recente para uma página.", + "rcfilters-filter-previousrevision-label": "Não é a última revisão", + "rcfilters-filter-previousrevision-description": "Todas as mudanças que não são as \"ultimas revisões\".", "rcfilters-filter-excluded": "Excluído", "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", + "rcfilters-watchlist-edit-watchlist-button": "Edite sua lista de páginas vigiadas", + "rcfilters-watchlist-showupdated": "As alterações nas páginas que você não visitou desde as mudanças ocorridas estão em negrito, com marcadores sólidos.", + "rcfilters-preference-label": "Ocultar a versão melhorada das Mudanças Recentes", + "rcfilters-preference-help": "Reverte o redesenho da interface de 2017 e todas as ferramentas adicionadas na altura e desde então.", "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", @@ -1598,6 +1625,7 @@ "file-deleted-duplicate-notitle": "Um arquivo idêntico a este foi anteriormente excluído, e o título foi suprimido. Você deve comunicar com alguém capaz de visualizar dados suprimidos, para verificar a situação antes de enviá-lo novamente.", "uploadwarning": "Aviso de envio", "uploadwarning-text": "Modifique a descrição do arquivo abaixo e tente novamente.", + "uploadwarning-text-nostash": "Por favor, recarregue o arquivo, modifique a descrição abaixo e tente novamente.", "savefile": "Salvar arquivo", "uploaddisabled": "Envio de arquivos desativado.", "copyuploaddisabled": "O upload por URL encontra-se desativado.", @@ -1760,7 +1788,7 @@ "listfiles_size": "Tamanho", "listfiles_description": "Descrição", "listfiles_count": "Versões", - "listfiles-show-all": "Incluir versões antigas das imagens", + "listfiles-show-all": "Inclua versões antigas de arquivos", "listfiles-latestversion": "Versão atual", "listfiles-latestversion-yes": "Sim", "listfiles-latestversion-no": "Não", @@ -1863,6 +1891,8 @@ "pageswithprop-legend": "Páginas com uma propriedade de página", "pageswithprop-text": "Esta página lista as páginas que usam uma determinada propriedade de página.", "pageswithprop-prop": "Nome da propriedade:", + "pageswithprop-reverse": "Classificar em ordem inversa", + "pageswithprop-sortbyvalue": "Classificar por valor da propriedade", "pageswithprop-submit": "Ir", "pageswithprop-prophidden-long": "Longa propriedade de texto oculta ($1)", "pageswithprop-prophidden-binary": "Valor de propriedade binária oculta ($1)", @@ -2164,7 +2194,7 @@ "unwatchthispage": "Parar de vigiar esta página", "notanarticle": "Não é uma página de conteúdo", "notvisiblerev": "Edição eliminada", - "watchlist-details": "{{PLURAL:$1|$1 página|$1 páginas}} na sua lista de páginas vigiadas, excluindo as páginas de discussão.", + "watchlist-details": "{{PLURAL:$1|$1 página está|$1 páginas estão}} na sua lista de páginas vigiadas (incluindo páginas de discussão).", "wlheader-enotif": "A notificação por email encontra-se ativada.", "wlheader-showupdated": "As páginas modificadas desde a sua última visita são mostradas em negrito.", "wlnote": "A seguir {{PLURAL:$1|está a última alteração ocorrida|estão as últimas $1 alterações ocorridas}} {{PLURAL:$2|na última hora|nas últimas $2 horas}} até $3, $4.", @@ -2199,6 +2229,7 @@ "enotif_lastdiff": "Acesse $1 para ver esta alteração.", "enotif_anon_editor": "usuário anônimo $1", "enotif_body": "{{GENDER:$WATCHINGUSERNAME|Caro|Cara|Caro(a)}},\n\n$PAGEINTRO $NEWPAGE\n\nResumo do editor: $PAGESUMMARY $PAGEMINOREDIT\n\nContate o editor:\ne-mail: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nAté que visite esta página, você não receberá mais notificações das alterações futuras.\nVocê pode também reativar as notificações para todas páginas na sua lista de páginas vigiadas.\n\nO seu sistema de notificação amigável da {{SITENAME}}\n\n--\nPara alterar as suas preferências das notificações por correio electrônico, visite\n{{canonicalurl:{{#special:Preferences}}}}\n\nPara alterar as suas preferências das páginas vigiadas, visite\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nPara retirar a página da lista de páginas vigiadas, visite\n$UNWATCHURL\n\nPara comentários e pedidos de ajuda:\n$HELPPAGE", + "enotif_minoredit": "Esta é uma edição menor", "created": "criada", "changed": "alterada", "deletepage": "Eliminar página", @@ -2227,6 +2258,7 @@ "delete-warning-toobig": "Esta página possui um longo histórico de edições, com mais de $1 {{PLURAL:$1|edição|edições}}.\nEliminá-la poderá causar problemas na base de dados de {{SITENAME}};\nprossiga com cuidado.", "deleteprotected": "Não é possível eliminar esta página porque foi protegida.", "deleting-backlinks-warning": "'''Cuidado:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|outras páginas]] ligam ou redirecionam para a página que você está prestes a eliminar.", + "deleting-subpages-warning": "Aviso: A página que você está prestes a excluir tem [[Special:PrefixIndex/{{FULLPAGENAME}}/|{{PLURAL:$1|uma subpágina|$1 subpáginas|51=mais de 50 subpáginas}}]].", "rollback": "Reverter edições", "rollbacklink": "reverter", "rollbacklinkcount": "reverter $1 {{PLURAL:$1|edição|edições}}", @@ -2392,6 +2424,7 @@ "sp-contributions-newonly": "Mostrar somente as criações de páginas", "sp-contributions-hideminor": "Ocultar edições menores", "sp-contributions-submit": "Pesquisar", + "sp-contributions-outofrange": "Não é possível mostrar nenhum resultado. A gama de endereços IP pedida é maior do que o limite /$1 do intervalo CIDR.", "whatlinkshere": "Páginas afluentes", "whatlinkshere-title": "Páginas que têm links para \"$1\"", "whatlinkshere-page": "Página:", @@ -2680,7 +2713,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.", @@ -3440,7 +3473,7 @@ "fileduplicatesearch-noresults": "Não foi encontrado nenhum arquivo com o nome \"$1\".", "specialpages": "Páginas especiais", "specialpages-note-top": "Legenda", - "specialpages-note": "* Páginas especiais normais.\n* Páginas especiais restritas.", + "specialpages-note-restricted": "* Páginas especiais normais.\n* Páginas especiais restritas.", "specialpages-group-maintenance": "Relatórios de manutenção", "specialpages-group-other": "Outras páginas especiais", "specialpages-group-login": "Entrar / Criar conta", @@ -3559,6 +3592,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)", @@ -3649,7 +3689,7 @@ "logentry-protect-protect-cascade": "$1 {{GENDER:$2|protegeu}} $3 $4 [em cascata]", "logentry-protect-modify": "$1 {{GENDER:$2|alterou}} o nível de proteção para $3 $4", "logentry-protect-modify-cascade": "$1 {{GENDER:$2|alterou}} o nível de proteção para $3 $4 [em cascata]", - "logentry-rights-rights": "$1 {{GENDER:$2|mudou}} membros do grupo para {{GENDER:$6|$3}} de $4 para $5", + "logentry-rights-rights": "$1 {{GENDER:$2|alterou}} os grupos de usuário de {{GENDER:$6|$3}} de $4 para $5", "logentry-rights-rights-legacy": "$1 alterou os grupos de $3", "logentry-rights-autopromote": "$1 foi promovido automaticamente de $4 para $5", "logentry-upload-upload": "$1 {{GENDER:$2|carregou}} $3", diff --git a/languages/i18n/pt.json b/languages/i18n/pt.json index 70b030ce0d..8251d5155a 100644 --- a/languages/i18n/pt.json +++ b/languages/i18n/pt.json @@ -73,7 +73,9 @@ "Gato Preto", "Jdforrester", "Mansil", - "Ngl2016" + "Ngl2016", + "RadiX", + "MokaAkashiyaPT" ] }, "tog-underline": "Sublinhar ligações:", @@ -96,24 +98,25 @@ "tog-minordefault": "Por omissão, marcar todas as edições como menores", "tog-previewontop": "Mostrar a antevisão antes da caixa de edição", "tog-previewonfirst": "Mostrar a antevisão na primeira edição", - "tog-enotifwatchlistpages": "Notificar-me por correio electrónico quando uma página ou ficheiro vigiado for alterado", - "tog-enotifusertalkpages": "Notificar-me por correio electrónico quando a minha página de discussão é editada", - "tog-enotifminoredits": "Notificar-me por correio electrónico também sobre edições menores de páginas ou ficheiros", - "tog-enotifrevealaddr": "Revelar o meu endereço de correio electrónico nas notificações", + "tog-enotifwatchlistpages": "Notificar-me por correio eletrónico quando uma página ou ficheiro vigiado for alterado", + "tog-enotifusertalkpages": "Notificar-me por correio eletrónico quando a minha página de discussão é editada", + "tog-enotifminoredits": "Notificar-me por correio eletrónico também sobre edições menores de páginas ou ficheiros", + "tog-enotifrevealaddr": "Revelar o meu endereço de correio eletrónico nas notificações", "tog-shownumberswatching": "Mostrar o número de utilizadores a vigiar", "tog-oldsig": "A sua assinatura atual:", "tog-fancysig": "Tratar assinatura como texto wiki (sem hiperligações automáticas)", - "tog-uselivepreview": "Usar a antevisão ao vivo", + "tog-uselivepreview": "Mostrar antevisões sem recarregar a página", "tog-forceeditsummary": "Avisar-me se deixar o resumo da edição vazio", "tog-watchlisthideown": "Esconder as minhas edições ao listar mudanças às páginas vigiadas", "tog-watchlisthidebots": "Esconder edições de robôs ao listar mudanças às páginas vigiadas", "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", - "tog-ccmeonemails": "Enviar-me cópias das mensagens por correio electrónico que eu enviar a outros utilizadores", + "tog-ccmeonemails": "Enviar-me cópias das mensagens por correio eletrónico que eu enviar a outros utilizadores", "tog-diffonly": "Não mostrar o conteúdo da página ao comparar duas edições", "tog-showhiddencats": "Mostrar categorias ocultas", "tog-norollbackdiff": "Ocultar diferenças depois de reverter edições em bloco", @@ -365,7 +368,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 +419,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 +444,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 +475,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 +495,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,18 +526,18 @@ "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}}.", - "mailerror": "Erro ao enviar correio electró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.", + "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 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.", "emailconfirmlink": "Confirme o seu endereço de correio eletrónico", "invalidemailaddress": "O endereço de correio eletrónico não pode ser aceite porque parece ter um formato inválido.\nIntroduza um endereço formatado corretamente ou deixe o campo vazio.", "cannotchangeemail": "Os endereços de correio eletrónico das contas não podem ser alterados nesta wiki.", - "emaildisabled": "Este sítio não consegue enviar mensagens de correio eletrónico.", + "emaildisabled": "Este site não consegue enviar mensagens de correio eletrónico.", "accountcreated": "Conta criada", "accountcreatedtext": "A conta de utilizador para [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|talk]]) foi criada.", "createaccount-title": "Criação de conta na wiki {{SITENAME}}", @@ -550,7 +553,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 +585,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 +618,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 +652,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 +662,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:", @@ -675,9 +678,9 @@ "showdiff": "Mostrar alterações", "blankarticle": "Aviso: A página que está prestes a criar está em branco. \nSe clicar \"$1\" outra vez, a página será criada sem qualquer conteúdo.", "anoneditwarning": "Aviso: Não iniciou sessão. O seu endereço IP será registado no histórico de edições desta página. Se [$1 iniciar sessão] ou [$2 criar uma conta], as suas edições serão registadas com o seu nome de utilizador(a), em conjunto com outros benefícios.", - "anonpreviewwarning": "''Não iniciou sessão. Ao gravar, registará o seu endereço IP no histórico de edições da página.''", - "missingsummary": "'''Atenção:''' Não introduziu um resumo da edição.\nSe clicar novamente \"Gravar página\" a sua edição será gravada sem resumo.", - "selfredirect": "Aviso: Está a redirecionar esta página para si mesma.\nPode ter especificado o destino errado para o redirecionamento ou pode estar a editar a página errada.\nSe clicar em \"$1\" novamente, o redirecionamento será criado na mesma.", + "anonpreviewwarning": "Não iniciou sessão. Ao gravar, registará o seu endereço IP no histórico de edições da página.", + "missingsummary": "Atenção: Não introduziu um resumo da edição.\nSe clicar novamente \"$1\", a sua edição será gravada sem resumo.", + "selfredirect": "Aviso: Está a redirecionar esta página para si mesma.\nPode ter especificado o destino errado para o redirecionamento ou pode estar a editar a página errada.\nSe clicar novamente \"$1\", o redirecionamento será criado na mesma.", "missingcommenttext": "Introduza um comentário abaixo, por favor.", "missingcommentheader": "Atenção: Não introduziu um assunto para este comentário.\nSe clicar novamente \"$1\", a sua edição será gravada sem assunto.", "summary-preview": "Antevisão do resumo de edição:", @@ -689,7 +692,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", @@ -698,31 +701,31 @@ "accmailtitle": "Palavra-passe enviada.", "accmailtext": "Uma palavra-passe gerada aleatoriamente para [[User talk:$1|$1]] foi enviada para $2.\n\nEla pode ser alterada na página [[Special:ChangePassword|de alteração da palavra-passe]] após iniciar sessão.", "newarticle": "(Nova)", - "newarticletext": "Seguiu uma ligação para uma página que ainda não existe.\nPara criá-la, escreva o seu conteúdo na caixa abaixo (consulte a [$1 página de ajuda] para mais detalhes).\nSe chegou aqui por engano, clique o botão '''voltar''' (ou ''back'') do seu navegador.", - "anontalkpagetext": "----''Esta é a página de discussão de um utilizador anónimo que ainda não criou uma conta ou não a utiliza, pelo que temos de utilizar o endereço IP para identificá-lo(a).\nUm endereço IP pode ser partilhado por vários utilizadores.\nSe é um utilizador anónimo e sente que lhe foram direcionados comentários irrelevantes, por favor [[Special:CreateAccount|crie uma conta]] ou [[Special:UserLogin|inicie sessão]] para evitar futuras confusões com outros utilizadores anónimos.''", - "noarticletext": "Ainda não existe texto nesta página.\nPode [[Special:Search/{{PAGENAME}}|pesquisar o título desta página]] noutras páginas,\n[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} procurar registos relacionados]\nou [{{fullurl:{{FULLPAGENAME}}|action=edit}} editar esta página].", - "noarticletext-nopermission": "Ainda não existe texto nesta página.\nPode [[Special:Search/{{PAGENAME}}|pesquisar o título desta página]] noutras páginas, ou [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} procurar nos registos relacionados], mas não tem permissão para criar esta página.", - "missing-revision": "A revisão #$1 da página denominada \"{{FULLPAGENAME}}\" não existe.\n\nIsto é geralmente causado por seguir uma ligação de histórico desatualizada para uma página que foi eliminada.\nOs detalhes podem ser encontrados no [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registo de eliminação].", - "userpage-userdoesnotexist": "A conta \"$1\" não se encontra registada.\nVerifique se deseja realmente criar ou editar esta página, por favor.", + "newarticletext": "Seguiu uma ligação para uma página que ainda não existe.\nPara criá-la, escreva o seu conteúdo na caixa abaixo (consulte a [$1 página de ajuda] para mais detalhes).\nSe chegou aqui por engano, clique o botão voltar do seu navegador.", + "anontalkpagetext": "----\nEsta é a página de discussão de um utilizador anónimo que ainda não criou uma conta ou não a utiliza.\nPor isso, temos de utilizar o endereço IP numérico para identificá-lo(a).\nUm mesmo endereço IP pode ser partilhado por vários utilizadores.\nSe é um utilizador anónimo e sente que lhe foram direcionados comentários irrelevantes, [[Special:CreateAccount|crie uma conta]] ou [[Special:UserLogin|inicie sessão]] para evitar futuras confusões com outros utilizadores anónimos.", + "noarticletext": "Ainda não existe texto nesta página.\nPode [[Special:Search/{{PAGENAME}}|pesquisar o título desta página]] noutras páginas,\n[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} procurar registos relacionados]\nou [{{fullurl:{{FULLPAGENAME}}|action=edit}} criar esta página].", + "noarticletext-nopermission": "Ainda não existe texto nesta página.\nPode [[Special:Search/{{PAGENAME}}|pesquisar o título desta página]] noutras páginas, ou [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} procurar registos relacionados], mas não tem permissão para criar esta página.", + "missing-revision": "A revisão nº $1 da página \"{{FULLPAGENAME}}\" não existe.\n\nIsto normalmente ocorre ao seguir uma hiperligação de histórico desatualizada para uma página que foi eliminada.\nPode encontrar detalhes no [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registo de eliminação].", + "userpage-userdoesnotexist": "A conta \"$1\" não se encontra registada.\nVerifique se deseja realmente criar ou editar esta página, por favor.", "userpage-userdoesnotexist-view": "A conta de utilizador \"$1\" não está registada.", "blocked-notice-logextract": "Este utilizador está bloqueado.\nPara referência, o último registo de bloqueio é apresentado abaixo:", - "clearyourcache": "'''Nota:''' Após gravar, terá de limpar a ''cache'' do seu navegador para ver as alterações.\n*'''Firefox / Safari:''' Pressione ''Shift'' enquanto clica ''Recarregar'', ou pressione ''Ctrl-F5'' ou ''Ctrl-R'' (''⌘-R'' no Mac)\n*'''Google Chrome:''' Pressione ''Ctrl-Shift-R'' (''⌘-Shift-R'' no Mac)\n*'''Internet Explorer:''' Pressione ''Ctrl'' enquanto clica ''Recarregar'', ou pressione ''Ctrl-F5''\n*'''Opera:''' Ir para Menu → Configurações (Opera → Preferências no Mac) e, em seguida, Privacidade e segurança → Limpar dados de navegação → Imagens e ficheiros em cache.", - "usercssyoucanpreview": "'''Dica:''' Use o botão \"{{int:showpreview}}\" para testar o seu novo CSS antes de gravar.", - "userjsyoucanpreview": "'''Dica:''' Use o botão \"{{int:showpreview}}\" para testar o seu novo JavaScript antes de gravar.", - "usercsspreview": "'''Lembre-se de que está apenas a antever o seu CSS particular.\nEste ainda não foi gravado!'''", - "userjspreview": "'''Lembre-se que está apenas a testar ou antever o seu JavaScript particular.'''\nEste ainda não foi gravado!", - "sitecsspreview": "'''Lembre-se de que está apenas a antever este CSS.'''\n'''Ele ainda não foi gravado!'''", - "sitejspreview": "'''Lembre-se de que está apenas a antever este código JavaScript.'''\n'''Ele ainda não foi gravado!'''", - "userinvalidcssjstitle": "'''Aviso:''' Não existe um tema \"$1\". Lembre-se que as páginas .css e .js têm um título em minúsculas, exemplo: {{ns:user}}:Alguém/vector.css em vez de {{ns:user}}:Alguém/Vector.css.", + "clearyourcache": "Nota: Após gravar, terá de limpar a cache do seu navegador para ver as alterações.\n* Firefox / Safari: Pressione Shift enquanto clica Recarregar, ou pressione Ctrl-F5 ou Ctrl-R (⌘-R no Mac)\n* Google Chrome: Pressione Ctrl-Shift-R (⌘-Shift-R no Mac)\n* Internet Explorer: Pressione Ctrl enquanto clica Recarregar, ou pressione Ctrl-F5\n* Opera: Ir para Menu → Configurações (Opera → Preferências no Mac) e, em seguida, Privacidade e segurança → Limpar dados de navegação → Imagens e ficheiros em cache.", + "usercssyoucanpreview": "Dica: Use o botão \"{{int:showpreview}}\" para testar o seu novo CSS antes de gravar.", + "userjsyoucanpreview": "Dica: Use o botão \"{{int:showpreview}}\" para testar o seu novo JavaScript antes de gravar.", + "usercsspreview": "Lembre-se de que está apenas a antever o seu CSS particular.\nEste ainda não foi gravado!", + "userjspreview": "Lembre-se de que está apenas a testar ou a antever o seu JavaScript particular.\nEste ainda não foi gravado!", + "sitecsspreview": "Lembre-se de que está apenas a antever este CSS.\nEle ainda não foi gravado!", + "sitejspreview": "Lembre-se de que está apenas a antever este código JavaScript.\nEle ainda não foi gravado!", + "userinvalidcssjstitle": "Aviso: Não existe um tema \"$1\".\nAs páginas personalizadas .css e .js têm um título em minúsculas, por exemplo: {{ns:user}}:Alguém/vector.css em vez de {{ns:user}}:Alguém/Vector.css.", "updated": "(Atualizado)", - "note": "'''Nota:'''", - "previewnote": "'''Lembre-se que esta é apenas uma antevisão do resultado.'''\nAs modificações ainda não foram gravadas!", + "note": "Nota:", + "previewnote": "Lembre-se de que esta é apenas uma antevisão do resultado.\nAs modificações ainda não foram gravadas!", "continue-editing": "Ir para a área de edição", "previewconflict": "Esta antevisão do resultado apresenta o texto da caixa de edição acima tal como este aparecerá se escolher gravá-lo.", - "session_fail_preview": "Desculpe! Não foi possível processar a edição devido à perda dos dados da sua sessão.\n\nA sua sessão poderá ter sido encerrada. Por favor, verifique se ainda está autenticado e tente novamente. \nCaso continue a não funcionar, tente [[Special:UserLogout|sair]] e voltar a entrar na sua conta, e verifique se o seu navegador permite a utilização de ''cookies'' deste sítio.", - "session_fail_preview_html": "Desculpe! Não foi possível processar a edição devido à perda de dados da sua sessão.\n\nComo a wiki {{SITENAME}} possibilita o uso de HTML puro, a antevisão está oculta por precaução contra ataques com JavaScript.\n\nSe esta é uma tentativa legítima de edição 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 a utilização de ''cookies'' deste sítio.", - "token_suffix_mismatch": "'''A edição foi rejeitada porque o seu navegador alterou os sinais de pontuação no editor.'''\nA edição foi rejeitada para evitar perdas no texto da página.\nIsso acontece ocasionalmente quando se usa um serviço de proxy anonimizador mal configurado.'''", - "edit_form_incomplete": "'''Algumas partes do formulário de edição não chegaram ao servidor; verifique que a sua edição continua intacta e tente novamente, por favor.'''", + "session_fail_preview": "Desculpe! Não foi possível processar a edição devido à perda dos dados da sua 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.", + "session_fail_preview_html": "Desculpe! Não foi possível processar a edição devido à perda de dados da sua sessão.\n\nComo a wiki {{SITENAME}} possibilita o uso de HTML puro, a antevisão está oculta por precaução contra ataques com JavaScript.\n\nSe esta é uma tentativa legítima de edição 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.", + "token_suffix_mismatch": "A edição foi rejeitada porque o seu navegador alterou os sinais de pontuação no editor.\nA edição foi rejeitada para evitar perdas no texto da página.\nIsto acontece ocasionalmente quando se usa um serviço de proxy anonimizador mal configurado.", + "edit_form_incomplete": "Algumas partes do formulário de edição não chegaram ao servidor; verifique que a sua edição continua intacta e tente novamente, por favor.", "editing": "A editar $1", "creating": "A criar $1", "editingsection": "A editar $1 (secção)", @@ -731,18 +734,17 @@ "explainconflict": "A página foi alterada por alguém desde que começou a editá-la.\nA caixa de texto abaixo mostra o texto existente neste momento.\nAs suas mudanças são mostradas na área ao fundo da página.\nTerá de reintegrar as suas mudanças no texto da caixa abaixo.\nSó o texto desta caixa será gravado quando clicar \"$1\".", "yourtext": "O seu texto", "storedversion": "Versão gravada", - "nonunicodebrowser": "Aviso: O seu navegador não é compatível com as especificações Unicode.\nFoi ativado um sistema de edição alternativo que lhe permite editar as páginas com segurança: os caracteres não-ASCII aparecerão na caixa de edição no formato de códigos hexadecimais.", - "editingold": "'''Aviso: Está a editar uma revisão desatualizada desta página.'''\nSe gravar, todas as mudanças feitas a partir desta revisão serão perdidas.", + "editingold": "Aviso: Está a editar uma revisão desatualizada desta página.\nSe gravar, todas as mudanças feitas a partir desta revisão serão perdidas.", "yourdiff": "Diferenças", - "copyrightwarning": "Note, por favor, que todas as suas contribuições na wiki {{SITENAME}} são consideradas publicadas nos termos da licença $2 (consulte $1 para mais detalhes).\nSe não deseja que o seu texto possa ser inexoravelmente editado e redistribuído, não o envie.\nGarante-nos também que isto é algo escrito por si, ou copiado do domínio público ou de outra fonte de teor livre.
    \nNão envie conteúdos cujos direitos de autor estão protegidos, sem ter a devida permissão!", - "copyrightwarning2": "Note, por favor, que todas as suas contribuições na wiki {{SITENAME}} podem ser editadas, alteradas ou removidas por outros utilizadores.\nSe não deseja que o seu texto seja inexoravelmente editado, não o envie.
    \nGarante-nos também que isto é algo escrito por si, ou copiado do domínio público ou de outra fonte de teor livre (consulte $1 para mais detalhes).
    \nNão envie conteúdos cujos direitos de autor estão protegidos, sem ter a devida permissão!", + "copyrightwarning": "Note, por favor, que todas as suas contribuições na wiki {{SITENAME}} são consideradas publicadas nos termos da licença $2 (consulte $1 para mais detalhes).\nSe não deseja que o seu texto possa ser inexoravelmente editado e redistribuído, não o envie.
    \nGarante-nos também que isto é algo escrito por si, ou copiado do domínio público ou de outra fonte de teor livre.\nNão envie conteúdos cujos direitos de autor estão protegidos, sem ter a devida permissão!", + "copyrightwarning2": "Note, por favor, que todas as suas contribuições na wiki {{SITENAME}} podem ser editadas, alteradas ou removidas por outros utilizadores.\nSe não deseja que o seu texto seja inexoravelmente editado, não o envie.
    \nGarante-nos também que isto é algo escrito por si, ou copiado do domínio público ou de outra fonte de teor livre (consulte $1 para mais detalhes).\nNão envie conteúdos cujos direitos de autor estão protegidos, sem ter a devida permissão!", "editpage-cannot-use-custom-model": "O modelo de conteúdo desta página não pode ser alterado.", - "longpageerror": "'''Erro: O texto que submeteu ocupa {{PLURAL:$1|um kilobyte|$1 kilobytes}}, que excede o máximo de {{PLURAL:$2|um kilobyte|$2 kilobytes}}.'''\nA página não pode ser gravada.", - "readonlywarning": "Atenção: A base de dados foi bloqueada para manutenção, pelo que não poderá gravar as suas edições neste momento.\nPode, contudo, copiar e colar o seu texto num ficheiro de texto e guardá-lo para mais tarde.\n\nO administrador do sistema que a bloqueou forneceu a seguinte explicação: $1", - "protectedpagewarning": "'''Aviso: Esta página foi protegida para só poder ser editada por administradores.'''\nO último registo é apresentado abaixo para referência:", - "semiprotectedpagewarning": "'''Nota:''' Esta página foi protegida de modo a que apenas utilizadores registados a possam editar.\nA última entrada no histórico é fornecida abaixo como referência.", + "longpageerror": "Erro: O texto que submeteu ocupa {{PLURAL:$1|um kilobyte|$1 kilobytes}}, que excede o máximo de {{PLURAL:$2|um kilobyte|$2 kilobytes}}.\nA página não pode ser gravada.", + "readonlywarning": "Aviso: A base de dados foi bloqueada para manutenção, pelo que não poderá gravar as suas edições neste momento.\nPode, contudo, copiar e colar o seu texto num ficheiro de texto e guardá-lo para mais tarde.\n\nO administrador do sistema que a bloqueou forneceu a seguinte explicação: $1", + "protectedpagewarning": "Aviso: Esta página foi protegida para só poder ser editada por administradores.\nPara referência, é apresentada abaixo a última entrada do registo:", + "semiprotectedpagewarning": "Nota: Esta página foi protegida de modo a que apenas utilizadores registados a possam editar.\nPara referência, é apresentada abaixo a última entrada do registo:", "cascadeprotectedwarning": "Aviso: Esta página está protegida de forma que apenas os utilizadores com [[Special:ListGroupRights|privilégios específicos]] possam editá-la, porque se encontra transcluída {{PLURAL:$1|na seguinte página protegida|nas seguintes páginas protegidas}} em cascata:", - "titleprotectedwarning": "'''Aviso: Esta página foi protegida de forma a que [[Special:ListGroupRights|privilégios específicos]] sejam necessários para criá-la.'''\nPara referência, é apresentada abaixo a última entrada do registo:", + "titleprotectedwarning": "Aviso: Esta página foi protegida de forma a que [[Special:ListGroupRights|privilégios específicos]] sejam necessários para criá-la.\nPara referência, é apresentada abaixo a última entrada do registo:", "templatesused": "{{PLURAL:$1|Predefinição utilizada|Predefinições utilizadas}} nesta página:", "templatesusedpreview": "{{PLURAL:$1|Predefinição utilizada|Predefinições utilizadas}} nesta antevisão:", "templatesusedsection": "{{PLURAL:$1|Predefinição utilizada|Predefinições utilizadas}} nesta secção:", @@ -751,16 +753,16 @@ "hiddencategories": "Esta página pertence a {{PLURAL:$1|uma categoria oculta|$1 categorias ocultas}}:", "edittools": "", "nocreatetext": "A wiki {{SITENAME}} restringe a criação de páginas novas por utilizadores anónimos.\nPode voltar atrás e editar uma página já existente, ou [[Special:UserLogin|iniciar uma sessão ou criar uma conta]].", - "nocreate-loggedin": "Não possui permissão para criar novas páginas.", + "nocreate-loggedin": "Não tem permissão para criar páginas novas.", "sectioneditnotsupported-title": "Edição de secções não suportada", - "sectioneditnotsupported-text": "A edição de secções não é suportada nesta página de edição.", + "sectioneditnotsupported-text": "A edição de secções não é suportada nesta página.", "permissionserrors": "Erro de permissão", "permissionserrorstext": "Não possui permissão para fazer isso, {{PLURAL:$1|pelo seguinte motivo|pelos seguintes motivos}}:", "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 pois seu modelo de conteúdo é $1, que é diferente do modelo atual da página $2.", + "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.", @@ -779,26 +781,27 @@ "editpage-invalidcontentmodel-text": "O modelo de conteúdo \"$1\" não é suportado.", "editpage-notsupportedcontentformat-title": "Formato de conteúdo não suportado", "editpage-notsupportedcontentformat-text": "O formato de conteúdo $1 não é suportado pelo modelo de conteúdo $2.", - "content-model-wikitext": "wikitexto", + "content-model-wikitext": "texto wiki", "content-model-text": "texto simples", "content-model-javascript": "JavaScript", "content-model-css": "CSS", "content-json-empty-object": "Objeto vazio", "content-json-empty-array": "Matriz vazia", - "deprecated-self-close-category": "Páginas com etiquetas HTML de autofechamento não válidas", - "deprecated-self-close-category-desc": "Esta página contém marcações HTML auto-fechadas, que são inválidas, tais como <b/> ou <span/>. O comportamento destas tags será alterado em breve, para ser consistente com a especificação HTML5, pelo que o seu uso na notação wiki foi descontinuado.", + "deprecated-self-close-category": "Páginas com etiquetas HTML auto-fechadas inválidas", + "deprecated-self-close-category-desc": "Esta página contém etiquetas HTML auto-fechadas, que são inválidas, tais como <b/> ou <span/>. O comportamento destas etiquetas será alterado em breve, para ser consistente com a especificação HTML5, pelo que o seu uso no texto wiki foi descontinuado.", "duplicate-args-warning": "Aviso: [[:$1]] chama [[:$2]] com mais de um valor para o parâmetro \"$3\". Somente o último valor fornecido será utilizado.", "duplicate-args-category": "Páginas com argumentos de predefinições duplicados", "duplicate-args-category-desc": "A página contém chamadas de predefinições que passam à predefinição argumentos duplicados, tais como {{foo|bar=1|bar=2}} ou {{foo|bar|1=baz}}.", - "expensive-parserfunction-warning": "'''Aviso:''' Esta página contém demasiadas chamadas de funções exigentes do analisador sintático.\n\nDevia ter menos de $2 {{PLURAL:$2|chamada|chamadas}}. Neste momento tem $1 {{PLURAL:$1|chamada|chamadas}}.", + "expensive-parserfunction-warning": "Aviso: Esta página contém demasiadas chamadas de funções exigentes do analisador sintático.\n\nDevia ter menos de $2 {{PLURAL:$2|chamada|chamadas}}. Neste momento tem $1 {{PLURAL:$1|chamada|chamadas}}.", "expensive-parserfunction-category": "Páginas com demasiadas chamadas a funções exigentes", - "post-expand-template-inclusion-warning": "Aviso: O tamanho de inclusão de predefinições é demasiado grande, algumas predefinições não serão incluídas.", + "post-expand-template-inclusion-warning": "Aviso: O tamanho de inclusão das predefinições é demasiado grande. Algumas predefinições não serão incluídas.", "post-expand-template-inclusion-category": "Páginas com excesso de predefinições", - "post-expand-template-argument-warning": "Aviso: Esta página contém pelo menos um argumento de predefinição com um tamanho expandido demasiado grande.\nEstes argumentos foram omitidos.", + "post-expand-template-argument-warning": "Aviso: Esta página contém pelo menos um argumento de predefinição com um tamanho expandido demasiado grande.\nEstes argumentos foram omitidos.", "post-expand-template-argument-category": "Páginas com argumentos de predefinições descartados", "parser-template-loop-warning": "Ciclo de predefinições detetado: [[$1]]", "template-loop-category": "Páginas com ciclos infinitos de predefinições", "template-loop-category-desc": "Esta página contém um ciclo infinito de predefinições, isto é, uma predefinição que se chama a si própria recursivamente.", + "template-loop-warning": "Aviso: Esta página chama [[:$1]] o que causa um ciclo infinito de predefinições (uma chamada recursiva sem término).", "parser-template-recursion-depth-warning": "Foi excedido o limite da profundidade de recursividade nas predefinições ($1)", "language-converter-depth-warning": "O limite de profundidade do conversor de idiomas excedeu a ($1)", "node-count-exceeded-category": "Páginas em que o total de nós é excedido", @@ -807,17 +810,17 @@ "expansion-depth-exceeded-category": "Páginas em que a profundidade de expansão é excedida", "expansion-depth-exceeded-category-desc": "A página excede a profundidade de expansão permitida.", "expansion-depth-exceeded-warning": "A página excedeu a profundidade de expansão", - "parser-unstrip-loop-warning": "Foi detetado um ciclo infinito unstrip", - "parser-unstrip-recursion-limit": "Limite de recursão do unstrip excedido ($1)", + "parser-unstrip-loop-warning": "Foi detetado um ciclo infinito da função unstrip", + "parser-unstrip-recursion-limit": "Limite de recursão da função unstrip excedido ($1)", "converter-manual-rule-error": "Erro detetado na regra de conversão de língua manual", - "undo-success": "É possível desfazer a edição.\nVerifique a comparação abaixo, para se certificar que corresponde ao que pretende fazer.\nDepois grave as alterações, para finalizar e desfazer a edição.", + "undo-success": "É possível desfazer a edição.\nVerifique a comparação abaixo, por favor, para se certificar de que corresponde ao que pretende fazer.\nDepois grave as alterações, para finalizar e desfazer a edição.", "undo-failure": "Não foi possível desfazer a edição por conflito com alterações intermédias.", "undo-norev": "Não foi possível desfazer a edição porque não existe ou foi apagada.", "undo-nochange": "A edição parece já ter sido desfeita.", "undo-summary": "Desfez a edição $1 de [[Special:Contributions/$2|$2]] ([[User talk:$2|Discussão]])", "undo-summary-username-hidden": "Desfez a edição $1 de um utilizador oculto", - "cantcreateaccount-text": "A criação de contas a partir deste endereço IP ('''$1''') foi bloqueada por [[User:$3|$3]].\n\nO motivo apresentado por $3 foi ''$2''", - "cantcreateaccount-range-text": "A criação de conta a partir dos endereços IP no intervalo $1, que inclui o seu endereço IP ($4), foi bloqueada por [[User:$3|$3]].\n\nA razão dada por $3 é $2", + "cantcreateaccount-text": "A criação de contas a partir deste endereço IP ($1) foi bloqueada por [[User:$3|$3]].\n\nO motivo apresentado por $3 foi $2", + "cantcreateaccount-range-text": "A criação de conta a partir dos endereços IP no intervalo $1, que inclui o seu endereço IP ($4), foi bloqueada por [[User:$3|$3]].\n\nO motivo apresentado por $3 foi $2", "viewpagelogs": "Ver registos para esta página", "nohistory": "Não há histórico de edições para esta página.", "currentrev": "Revisão atual", @@ -832,7 +835,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 +874,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 +895,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,11 +997,11 @@ "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.", - "search-nonefound-thiswiki": "Não existem resultados que correspondam à consulta neste sítio.", + "search-nonefound-thiswiki": "Não existem resultados que correspondam à consulta neste site.", "powersearch-legend": "Pesquisa avançada", "powersearch-ns": "Pesquisar nos domínios:", "powersearch-togglelabel": "Marcar:", @@ -1028,7 +1031,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", @@ -1068,6 +1071,7 @@ "timezoneregion-indian": "Oceano Índico", "timezoneregion-pacific": "Oceano Pacífico", "allowemail": "Aceitar correio eletrónico de outros utilizadores", + "email-blacklist-label": "Proibir estes utilizadores de me enviarem correio eletrónico:", "prefs-searchoptions": "Pesquisa", "prefs-namespaces": "Domínios", "default": "padrão", @@ -1109,6 +1113,7 @@ "prefs-editor": "Editor", "prefs-preview": "Antevisão", "prefs-advancedrc": "Opções avançadas", + "prefs-opt-out": "Excluir de melhoramentos", "prefs-advancedrendering": "Opções avançadas", "prefs-advancedsearchoptions": "Opções avançadas", "prefs-advancedwatchlist": "Opções avançadas", @@ -1121,7 +1126,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", @@ -1243,7 +1248,7 @@ "grant-group-page-interaction": "Interagir com páginas", "grant-group-file-interaction": "Interagir com conteúdo multimédia", "grant-group-watchlist-interaction": "Interagir com a sua lista de páginas vigiadas", - "grant-group-email": "Enviar correio electrónico", + "grant-group-email": "Enviar correio eletrónico", "grant-group-high-volume": "Realizar atividades em grande quantidade", "grant-group-customization": "Personalização e preferências", "grant-group-administration": "Executar ações administrativas", @@ -1265,7 +1270,7 @@ "grant-privateinfo": "Aceder a informação privada", "grant-protect": "Proteger e desproteger páginas", "grant-rollback": "Reverter alterações a páginas", - "grant-sendemail": "Enviar correio electrónico a outros utilizadores", + "grant-sendemail": "Enviar correio eletrónico a outros utilizadores", "grant-uploadeditmovefile": "Carregar, substituir e mover ficheiros", "grant-uploadfile": "Carregar novos ficheiros", "grant-basic": "Direitos básicos", @@ -1344,9 +1349,20 @@ "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", + "rcfilters-grouping-title": "Agrupamento", "rcfilters-activefilters": "Filtros ativos", "rcfilters-advancedfilters": "Filtros avançados", + "rcfilters-limit-title": "Modificações a mostrar", + "rcfilters-limit-shownum": "Mostrar {{PLURAL:$1|a última modificação|as últimas $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 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.", @@ -1358,48 +1374,46 @@ "rcfilters-savedqueries-new-name-label": "Nome", "rcfilters-savedqueries-new-name-placeholder": "Descreve o propósito do filtro", "rcfilters-savedqueries-apply-label": "Criar filtro", + "rcfilters-savedqueries-apply-and-setdefault-label": "Criar filtro padrão", "rcfilters-savedqueries-cancel-label": "Cancelar", "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-search-placeholder": "Filtrar mudanças recentes (navegue ou começe a escrever)", + "rcfilters-show-new-changes": "Mostrar as mudanças mais recentes", + "rcfilters-search-placeholder": "Menu principal de filtros", "rcfilters-invalid-filter": "Filtro inválido", "rcfilters-empty-filter": "Não há filtros ativos. São mostradas todas as contribuições.", "rcfilters-filterlist-title": "Filtros", - "rcfilters-filterlist-whatsthis": "O que é isto?", - "rcfilters-filterlist-feedbacklink": "Dê-nos a sua opinião sobre os novos filtros (beta)", + "rcfilters-filterlist-whatsthis": "Como é que funcionam?", + "rcfilters-filterlist-feedbacklink": "Diga-nos o que acha das (novas) ferramentas de filtragem", "rcfilters-highlightbutton-title": "Realçar resultados", "rcfilters-highlightmenu-title": "Selecionar uma cor", "rcfilters-highlightmenu-help": "Selecione uma cor para realçar esta propriedade", "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-filtergroup-registration": "Registo de utilizador", - "rcfilters-filter-registered-label": "Registado", - "rcfilters-filter-registered-description": "Editores autenticados.", - "rcfilters-filter-unregistered-label": "Não registado", - "rcfilters-filter-unregistered-description": " Editores que não estão autenticados.", - "rcfilters-filter-unregistered-conflicts-user-experience-level": "Este filtro entra em conflito com {{PLURAL:$2|o seguinte filtro|os seguintes filtros}} de Experiência, que só {{PLURAL:$2|encontra|encontram}} utilizadores registados: $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.", "rcfilters-filter-editsbyother-label": "Modificações de outros", "rcfilters-filter-editsbyother-description": "Todas as modificações, exceto as suas.", - "rcfilters-filtergroup-userExpLevel": "Nível de experiência (apenas para utilizadores registados)", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Os filtros de Experiência só encontram utilizadores registados, portanto este filtro entra em conflito com o filtro “Não registado”.", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "O filtro \"Não registado\" entra em conflito com um ou mais filtros de Experiência, que só encontram utilizadores registados. Os filtros em conflito estão marcados na área Filtros Ativos, acima.", + "rcfilters-filtergroup-userExpLevel": "Registo de utilizadores e experiência", + "rcfilters-filter-user-experience-level-registered-label": "Registados", + "rcfilters-filter-user-experience-level-registered-description": "Editores autenticados.", + "rcfilters-filter-user-experience-level-unregistered-label": "Não registados", + "rcfilters-filter-user-experience-level-unregistered-description": "Editores que não estão autenticados.", "rcfilters-filter-user-experience-level-newcomer-label": "Novatos", - "rcfilters-filter-user-experience-level-newcomer-description": "Menos de 10 edições e 4 dias de atividade.", + "rcfilters-filter-user-experience-level-newcomer-description": "Editores registados, com menos de 10 edições e de 4 dias de atividade.", "rcfilters-filter-user-experience-level-learner-label": "Aprendizes", - "rcfilters-filter-user-experience-level-learner-description": "Mais experiência do que \"Novatos\", mas menos do que \"Utilizadores experientes\".", + "rcfilters-filter-user-experience-level-learner-description": "Editores registados, com mais experiência do que \"Novatos\", mas menos do que \"Utilizadores experientes\".", "rcfilters-filter-user-experience-level-experienced-label": "Utilizadores experientes", - "rcfilters-filter-user-experience-level-experienced-description": "Mais de 30 dias de atividade e 500 edições.", + "rcfilters-filter-user-experience-level-experienced-description": "Editores registados, com mais de 500 edições e de 30 dias de atividade.", "rcfilters-filtergroup-automated": "Contribuições automatizadas", "rcfilters-filter-bots-label": "Robô", "rcfilters-filter-bots-description": "Edições efetuadas por ferramentas automatizadas.", "rcfilters-filter-humans-label": "Ser humano (não robô)", - "rcfilters-filter-humans-description": "Edições efetuadas por editores humanos.", + "rcfilters-filter-humans-description": "Edições efetuadas por pessoas.", "rcfilters-filtergroup-reviewstatus": "Estado da revisão", "rcfilters-filter-patrolled-label": "Patrulhadas", "rcfilters-filter-patrolled-description": "Edições marcadas como patrulhadas.", @@ -1417,6 +1431,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…", @@ -1429,18 +1448,28 @@ "rcfilters-hideminor-conflicts-typeofchange-global": "O filtro \"Edições menores\" entra em conflito com um ou mais filtros de Tipo de Modificação, porque certos tipos de modificações não podem ser classificados como \"menores\". Os filtros em conflito estão marcados na área Filtros Ativos, acima.", "rcfilters-hideminor-conflicts-typeofchange": "Certos tipos de modificações não podem ser classificados como \"menores\", portanto este filtro entra em conflito com os seguintes filtros de Tipo de Modificação: $1", "rcfilters-typeofchange-conflicts-hideminor": "Este filtro de Tipo de Modificação entra em conflito com o filtro \"Edições menores\". Certos tipos de modificações não podem ser classificados como \"menores\".", - "rcfilters-filtergroup-lastRevision": "Última revisão", + "rcfilters-filtergroup-lastRevision": "Últimas revisões", "rcfilters-filter-lastrevision-label": "Última revisão", - "rcfilters-filter-lastrevision-description": "A modificação mais recente de uma página.", - "rcfilters-filter-previousrevision-label": "Revisões anteriores", - "rcfilters-filter-previousrevision-description": "Todas as modificações que não sejam a modificação mais recente de uma página.", + "rcfilters-filter-lastrevision-description": "Só a modificação mais recente de uma página.", + "rcfilters-filter-previousrevision-label": "Revisões menos a mais recente", + "rcfilters-filter-previousrevision-description": "Todas as modificações que não são a \"última revisão\".", "rcfilters-filter-excluded": "Excluído", "rcfilters-tag-prefix-namespace-inverted": ":não $1", + "rcfilters-exclude-button-off": "Excluir os selecionados", + "rcfilters-exclude-button-on": "A excluir os selecionados", + "rcfilters-view-advanced-filters-label": "Filtros avançados", "rcfilters-view-tags": "Edições marcadas", "rcfilters-view-namespaces-tooltip": "Filtrar resultados por espaço nominal", "rcfilters-view-tags-tooltip": "Filtrar resultados usando etiquetas de edição", "rcfilters-view-return-to-default-tooltip": "Voltar ao menu do filtro principal", "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", + "rcfilters-watchlist-edit-watchlist-button": "Editar a sua lista de páginas vigiadas", + "rcfilters-watchlist-showupdated": "As mudanças das páginas que ainda não visitou após terem sido alteradas aparecem a negrito, com marcadores sólidos.", + "rcfilters-preference-label": "Ocultar a versão melhorada das mudanças recentes", + "rcfilters-preference-help": "Reverte o redesenho da interface de 2017 e todas as ferramentas adicionadas na altura e desde então.", "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", @@ -1485,7 +1514,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", @@ -1497,13 +1526,14 @@ "uploadbtn": "Carregar ficheiro", "reuploaddesc": "Cancelar o envio e voltar ao formulário de carregamento", "upload-tryagain": "Submeta a descrição do ficheiro modificado", + "upload-tryagain-nostash": "Enviar o ficheiro a recarregar e a descrição modificada", "uploadnologin": "Não autenticado", "uploadnologintext": "Tem de $1 para enviar ficheiros.", "upload_directory_missing": "O diretório de carregamento de ficheiros ($1) não existe e o servidor de Internet não conseguiu criá-lo.", "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.", @@ -1524,9 +1554,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.", @@ -1556,6 +1586,7 @@ "file-deleted-duplicate-notitle": "Um ficheiro idêntico já foi eliminado e o seu título suprimido. Devia pedir a alguém capaz de ver os dados dos ficheiros eliminados para verificar a situação antes de carregá-lo novamente.", "uploadwarning": "Aviso de envio", "uploadwarning-text": "Modifique a descrição do ficheiro abaixo e tente novamente, por favor.", + "uploadwarning-text-nostash": "Recarregue o ficheiro, modifique a descrição abaixo e tente novamente, por favor.", "savefile": "Gravar ficheiro", "uploaddisabled": "Carregamentos desativados", "copyuploaddisabled": "Carregamento por URL desativado.", @@ -1590,7 +1621,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://.", @@ -1695,9 +1726,9 @@ "http-curl-error": "Ocorreu um erro ao aceder ao URL: $1", "http-bad-status": "Ocorreu um problema durante o pedido HTTP: $1 $2", "upload-curl-error6": "Não foi possível aceder ao URL", - "upload-curl-error6-text": "Não foi possível aceder ao URL.\nVerifique se o endereço está correto e o sítio disponível, por favor.", + "upload-curl-error6-text": "Não foi possível aceder ao URL.\nVerifique se o endereço está correto e o site disponível, por favor.", "upload-curl-error28": "Tempo limite para o envio do ficheiro excedido", - "upload-curl-error28-text": "O sítio demorou muito tempo a responder. Verifique que o sítio está disponível, aguarde alguns momentos e tente novamente, por favor. Talvez queira tentar num horário menos congestionado.", + "upload-curl-error28-text": "O site demorou demasiado tempo a responder. Verifique que o site está disponível, aguarde alguns momentos e tente novamente, por favor. Talvez queira voltar a tentar numa altura menos congestionada.", "license": "Licença:", "license-header": "Licenciamento", "nolicense": "Nenhuma selecionada", @@ -1718,7 +1749,7 @@ "listfiles_size": "Tamanho", "listfiles_description": "Descrição", "listfiles_count": "Versões", - "listfiles-show-all": "Incluir versões antigas de imagens", + "listfiles-show-all": "Incluir as versões antigas dos ficheiros", "listfiles-latestversion": "Versão atual", "listfiles-latestversion-yes": "Sim", "listfiles-latestversion-no": "Não", @@ -1744,11 +1775,11 @@ "morelinkstoimage": "Ver a [[Special:WhatLinksHere/$1|lista completa]] de páginas que contêm ligações para este ficheiro.", "linkstoimage-redirect": "$1 (redirecionamento de ficheiro) $2", "duplicatesoffile": "{{PLURAL:$1|O seguinte ficheiro é duplicado|Os seguintes $1 ficheiros são duplicados}} deste ficheiro ([[Special:FileDuplicateSearch/$2|mais detalhes]]):", - "sharedupload": "Este ficheiro provém de $1 e pode ser usado por outros projetos.", - "sharedupload-desc-there": "Este ficheiro provém de $1 e pode ser usado por outros projetos.\nConsulte a [$2 página de descrição do ficheiro] para mais informações, por favor.", - "sharedupload-desc-here": "Este ficheiro provém de $1 e pode ser usado por outros projetos.\nA descrição na [$2 página original de descrição do ficheiro] é mostrada abaixo.", - "sharedupload-desc-edit": "Este ficheiro provém de $1 e pode ser utilizado por outros projetos.\nTalvez queira editar a descrição na [$2 página original de descrição do ficheiro].", - "sharedupload-desc-create": "Este ficheiro provém de $1 e pode ser utilizado por outros projetos.\nTalvez queira editar a descrição na [$2 página original de descrição do ficheiro].", + "sharedupload": "Este ficheiro vem da wiki $1 e pode ser usado por outros projetos.", + "sharedupload-desc-there": "Este ficheiro vem da wiki $1 e pode ser usado por outros projetos.\nConsulte a [$2 página de descrição do ficheiro] para mais informações, por favor.", + "sharedupload-desc-here": "Este ficheiro vem da wiki $1 e pode ser usado por outros projetos.\nA descrição na [$2 página original de descrição do ficheiro] é mostrada abaixo.", + "sharedupload-desc-edit": "Este ficheiro vem da wiki $1 e pode ser utilizado por outros projetos.\nTalvez queira editar a descrição na [$2 página original de descrição do ficheiro].", + "sharedupload-desc-create": "Este ficheiro vem da wiki $1 e pode ser utilizado por outros projetos.\nTalvez queira editar a descrição na [$2 página original de descrição do ficheiro].", "filepage-nofile": "Não existe nenhum ficheiro com este nome.", "filepage-nofile-link": "Não existe nenhum ficheiro com este nome, mas pode [$1 carregá-lo].", "uploadnewversion-linktext": "Carregar uma nova versão deste ficheiro", @@ -1757,22 +1788,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", @@ -1820,6 +1851,8 @@ "pageswithprop-legend": "Páginas que usam uma propriedade", "pageswithprop-text": "Esta página lista páginas que usam uma propriedade em particular.", "pageswithprop-prop": "Nome da propriedade:", + "pageswithprop-reverse": "Ordenar por ordem inversa", + "pageswithprop-sortbyvalue": "Ordenar por valor de propriedade", "pageswithprop-submit": "Avançar", "pageswithprop-prophidden-long": "foi ocultado o valor da propriedade por ser um texto muito longo ($1)", "pageswithprop-prophidden-binary": "foi ocultado o valor da propriedade por ser binário ($1)", @@ -2121,9 +2154,9 @@ "unwatchthispage": "Parar de vigiar esta página", "notanarticle": "Não é uma página de conteúdo", "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.", + "watchlist-details": "{{PLURAL:$1|Existe $1 página|Existem $1 páginas}} na sua lista de páginas vigiadas (mais 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", @@ -2156,6 +2189,7 @@ "enotif_lastdiff": "Para ver esta alteração, consulte $1", "enotif_anon_editor": "utilizador anónimo $1", "enotif_body": "{{GENDER:$WATCHINGUSERNAME|Caro|Cara|Caro(a)}} $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nResumo da edição: $PAGESUMMARY $PAGEMINOREDIT\n\nContacte o editor:\ncorreio eletrónico: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nAté se autenticar e visitar novamente esta página, não receberá mais notificações das alterações futuras. Também pode reativar as notificações para todas páginas na sua lista de páginas vigiadas.\n\nO seu sistema de notificação amigável da wiki {{SITENAME}}\n\n--\nPara alterar as suas preferências de notificação por correio eletrónico, visite\n{{canonicalurl:{{#special:Preferences}}}}\n\nPara alterar as suas preferências das páginas vigiadas, visite\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nPara retirar a página da lista de páginas vigiadas, visite\n$UNWATCHURL\n\nPara comentários e pedidos de ajuda:\n$HELPPAGE", + "enotif_minoredit": "Esta é uma edição menor", "created": "criada", "changed": "alterada", "deletepage": "Eliminar página", @@ -2184,6 +2218,7 @@ "delete-warning-toobig": "Esta página tem um histórico de edições longo, com mais de $1 {{PLURAL:$1|edição|edições}}.\nEliminá-la poderá causar problemas na base de dados da wiki {{SITENAME}};\nprossiga com precaução.", "deleteprotected": "Não é possível eliminar esta página porque foi protegida.", "deleting-backlinks-warning": "Aviso: Existem [[Special:WhatLinksHere/{{FULLPAGENAME}}|páginas]] que contêm ligações para a página que está prestes a eliminar ou que a transcluem.", + "deleting-subpages-warning": "Aviso: A página que está prestes a eliminar tem [[Special:PrefixIndex/{{FULLPAGENAME}}/|{{PLURAL:$1|uma subpágina|$1 subpáginas|51=mais de 50 subpáginas}}]].", "rollback": "Reverter edições", "rollbacklink": "reverter", "rollbacklinkcount": "reverter $1 {{PLURAL:$1|edição|edições}}", @@ -2240,11 +2275,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", @@ -2278,11 +2313,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.", @@ -2297,11 +2332,12 @@ "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", "undelete-search-prefix": "Mostrar páginas que começam por:", + "undelete-search-full": "Mostrar os títulos de página que contenham:", "undelete-search-submit": "Pesquisar", "undelete-no-results": "Não foram encontradas páginas eliminadas, para esse critério de pesquisa, no arquivo de eliminações.", "undelete-filename-mismatch": "Não foi possível restaurar a versão do ficheiro de $1: nome de ficheiro não combina", @@ -2348,12 +2384,13 @@ "sp-contributions-newonly": "Mostrar só edições que são criações de páginas", "sp-contributions-hideminor": "Ocultar edições menores", "sp-contributions-submit": "Pesquisar", + "sp-contributions-outofrange": "Não é possível mostrar nenhum resultado. A gama de endereços IP pedida é maior do que o limite /$1 do intervalo CIDR.", "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", @@ -2435,7 +2472,7 @@ "anononlyblock": "apenas anón.", "noautoblockblock": "bloqueio automático desativado", "createaccountblock": "criação de conta bloqueada", - "emailblock": "correio electrónico desativado", + "emailblock": "correio eletrónico desativado", "blocklist-nousertalk": "impedido de editar a própria página de discussão", "ipblocklist-empty": "A lista de bloqueios encontra-se vazia.", "ipblocklist-no-results": "O endereço IP ou nome de utilizador procurado não se encontra bloqueado.", @@ -2500,11 +2537,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.", @@ -2636,7 +2673,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. Por favor, verifique se ainda está autenticado e tente novamente. \nCaso continue a não funcionar, tente [[Special:UserLogout|sair]] e voltar a entrar na sua conta, e verifique se o seu navegador permite a utilização de ''cookies'' deste sítio.", + "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.", @@ -2743,7 +2780,7 @@ "creditspage": "Créditos da página", "nocredits": "Não há informação disponível sobre os créditos desta página.", "spamprotectiontitle": "Filtro de proteção contra spam", - "spamprotectiontext": "O texto que desejava gravar foi bloqueado pelo filtro de ''spam''.\nProvavelmente este bloqueio foi causado por uma ligação para um sítio externo que consta da lista negra.", + "spamprotectiontext": "O texto que desejava gravar foi bloqueado pelo filtro de spam.\nEste bloqueio foi provavelmente causado por um link para um site externo que consta da lista negra.", "spamprotectionmatch": "O seguinte texto ativou o filtro de spam: $1", "spambot_username": "MediaWiki limpeza de spam", "spam_reverting": "A reverter para a última revisão que não contém ligação para $1", @@ -3075,7 +3112,7 @@ "exif-compression-3": "CCITT Grupo 3 codificação de fax", "exif-compression-4": "CCITT Grupo 4 codificação de fax", "exif-copyrighted-true": "Direitos de autor reservados", - "exif-copyrighted-false": "Situação dos direitos autorais não definida", + "exif-copyrighted-false": "Estado dos direitos de autor indefinido", "exif-photometricinterpretation-1": "Preto e branco (Preto é 0)", "exif-unknowndate": "Data desconhecida", "exif-orientation-1": "Normal", @@ -3256,14 +3293,14 @@ "invalidateemail": "Cancelar confirmação do correio eletrónico", "notificationemail_subject_changed": "O endereço de correio eletrónico registado na wiki {{SITENAME}} foi alterado", "notificationemail_subject_removed": "O endereço de correio eletrónico registado na wiki {{SITENAME}} foi removido", - "notificationemail_body_changed": "Alguém, provavelmente você, a partir do endereço IP $1, alterou o endereço de correio eletrónico da conta \"$2\" para \"$3\" na wiki {{SITENAME}}.\n\nCaso não o tenha alterado, contacte imediatamente um administrador do sítio.", - "notificationemail_body_removed": "Alguém, provavelmente você, a partir do endereço IP $1, eliminou o endereço de correio eletrónico da conta \"$2\" na wiki {{SITENAME}}.\n\nCaso não o tenha eliminado, contacte imediatamente um administrador do sítio.", + "notificationemail_body_changed": "Alguém, provavelmente você, a partir do endereço IP $1, alterou o endereço de correio eletrónico da conta \"$2\" para \"$3\" na wiki {{SITENAME}}.\n\nCaso não o tenha alterado, contacte imediatamente um administrador do site.", + "notificationemail_body_removed": "Alguém, provavelmente você, a partir do endereço IP $1, eliminou o endereço de correio eletrónico da conta \"$2\" na wiki {{SITENAME}}.\n\nCaso não o tenha eliminado, contacte imediatamente um administrador do site.", "scarytranscludedisabled": "[Transclusão interwikis foi impossibilitada]", "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", @@ -3400,7 +3437,7 @@ "fileduplicatesearch-noresults": "Não foi encontrado nenhum ficheiro com o nome \"$1\".", "specialpages": "Páginas especiais", "specialpages-note-top": "Legenda", - "specialpages-note": "* Páginas especiais normais.\n* Páginas especiais restritas.", + "specialpages-note-restricted": "* Páginas especiais normais.\n* Páginas especiais restritas.", "specialpages-group-maintenance": "Relatórios de manutenção", "specialpages-group-other": "Outras páginas especiais", "specialpages-group-login": "Entrar / criar conta", @@ -3519,7 +3556,14 @@ "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.", - "dberr-problems": "Desculpe! Este sítio está com dificuldades técnicas.", + "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)", "dberr-info-hidden": "(Não foi possível aceder ao servidor da base de dados)", @@ -3771,7 +3815,7 @@ "special-characters-group-thai": "Tailandês", "special-characters-group-lao": "Laociano", "special-characters-group-khmer": "Cambojano", - "special-characters-group-canadianaboriginal": "Aborígene Canadense", + "special-characters-group-canadianaboriginal": "Aborígene canadiano", "special-characters-title-endash": "hífen", "special-characters-title-emdash": "travessão", "special-characters-title-minus": "sinal de subtração", diff --git a/languages/i18n/qqq.json b/languages/i18n/qqq.json index 72f7aa9b9b..1bab4a8d4b 100644 --- a/languages/i18n/qqq.json +++ b/languages/i18n/qqq.json @@ -91,6 +91,7 @@ "Mormegil", "Mpradeep", "Murma174", + "MusikAnimal", "Najami", "Naudefj", "Nemo bis", @@ -189,7 +190,8 @@ "Jhertel", "Stryn", "Mazab IZW", - "Mainframe98" + "Mainframe98", + "Pginer" ] }, "sidebar": "{{notranslate}}", @@ -226,7 +228,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}}.", @@ -893,8 +896,8 @@ "explainconflict": "Appears at the top of a page when there is an edit conflict.\n\nParameters:\n* $1 – The label of the save button – one of {{msg-mw|savearticle}} or {{msg-mw|savechanges}} on save-labelled wiki, or {{msg-mw|publishpage}} or {{msg-mw|publishchanges}} on publish-labelled wikis.\n\nSee also:\n* {{msg-mw|Savearticle}}", "yourtext": "Used in Diff Preview page. The diff is between {{msg-mw|currentrev}} and {{msg-mw|yourtext}}.\n\nAlso used in Edit Conflict page; the diff between {{msg-mw|yourtext}} and {{msg-mw|storedversion}}.", "storedversion": "This is used in an edit conflict as the label for the top revision that has been stored, as opposed to your version {{msg-mw|yourtext}} that has not been stored which is shown at the bottom of the page.", - "nonunicodebrowser": "Used as warning when editing page.", "editingold": "Used as warning when editing an old revision of a page.", + "unicode-support-fail": "Error message shown to users if their browser doesn't support Unicode", "yourdiff": "Used as h2 header for the diff of the current version of a page with the user's version in case there is an edit conflict or a spam filter hit.", "copyrightwarning": "Copyright warning displayed under the edit box in editor. Parameters:\n* $1 - link\n* $2 - license name", "copyrightwarning2": "Copyright warning displayed under the edit box in editor\n*$1 - license name", @@ -968,6 +971,7 @@ "parser-template-loop-warning": "Parameters:\n* $1 - page title", "template-loop-category": "This message is used as a category name for a [[mw:Special:MyLanguage/Help:Tracking categories|tracking category]] where pages with template loops will be listed.", "template-loop-category-desc": "Pages with template loops category description. Shown on [[Special:TrackingCategories]].\n\nSee also:\n* {{msg-mw|Template-loop-category}}", + "template-loop-warning": "This message is displayed in edit preview when a template loop is detected on the previewed page.\n\nParameters:\n* $1 - the full title of template which causes the template loop.", "parser-template-recursion-depth-warning": "Parameters:\n* $1 - limit value of recursion depth", "language-converter-depth-warning": "Error message shown when a page uses too deeply nested language conversion syntax. Parameters:\n* $1 - the value of the depth limit", "node-count-exceeded-category": "This message is used as a category name for a [[mw:Help:Tracking categories|tracking category]] where pages are placed automatically if the node-count of the preprocessor exceeds the limit.\n\nSee also:\n* {{msg-mw|Node-count-exceeded-warning}}", @@ -1251,6 +1255,7 @@ "timezoneregion-indian": "Used in \"Time zone\" listbox in [[Special:Preferences#mw-prefsection-datetime|preferences]], \"date and time\" tab.\n{{Related|Timezoneregion}}", "timezoneregion-pacific": "Used in \"Time zone\" listbox in [[Special:Preferences#mw-prefsection-datetime|preferences]], \"date and time\" tab.\n{{Related|Timezoneregion}}", "allowemail": "Used in [[Special:Preferences]] > {{int:prefs-personal}} > {{int:email}}.", + "email-blacklist-label": "Used in [[Special:Preferences]] > {{int:prefs-prohibit}} > {{int:email}}.", "prefs-searchoptions": "{{Identical|Search}}", "prefs-namespaces": "Shown as legend of the second fieldset of the tab 'Search' in [[Special:Preferences]]\n{{Identical|Namespace}}", "default": "{{Identical|Default}}", @@ -1294,6 +1299,7 @@ "prefs-editor": "Used in [[Special:Preferences]], tab \"Editing\" ({{int:prefs-editing}}).\n\n{{Identical|Editor}}", "prefs-preview": "Used in [[Special:Preferences]], tab \"Editing\".\n{{Identical|Preview}}", "prefs-advancedrc": "Used in [[Special:Preferences]], tab \"Recent changes\".\n{{Identical|Advanced options}}", + "prefs-opt-out": "Used in [[Special:Preferences]], tab \"Recent changes\".", "prefs-advancedrendering": "Used in [[Special:Preferences]], tab \"Appearence\".\n{{Identical|Advanced options}}", "prefs-advancedsearchoptions": "Used in [[Special:Preferences]], tab \"Search options\".\n{{Identical|Advanced options}}", "prefs-advancedwatchlist": "Used in [[Special:Preferences]], tab \"Watchlist\".\n{{Identical|Advanced options}}", @@ -1539,9 +1545,20 @@ "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.", + "rcfilters-grouping-title": "Title for the section showing display options for grouping results in [[Special:RecentChanges]] when RCFilters are enabled.", "rcfilters-activefilters": "Title for the filters selection showing the active filters.", "rcfilters-advancedfilters": "Title for the buttons allowing the user to switch to the various advanced filters views.", + "rcfilters-limit-title": "Title for the options to change the number of results shown.", + "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\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.", @@ -1553,15 +1570,17 @@ "rcfilters-savedqueries-new-name-label": "Label for the input that holds the name of the new saved filters in [[Special:RecentChanges]]\n{{Identical|Name}}", "rcfilters-savedqueries-new-name-placeholder": "Placeholder for the input that holds the name of the new saved filters in [[Special:RecentChanges]]", "rcfilters-savedqueries-apply-label": "Label for the button to apply saving a new filter setting in [[Special:RecentChanges]]. This is for a small popup, please try to use a short string.", + "rcfilters-savedqueries-apply-and-setdefault-label": "Label for the button to apply saving a new filter setting and set it as default in [[Special:RecentChanges]]. This is for a small popup, please try to use a short string.", "rcfilters-savedqueries-cancel-label": "Label for the button to cancel the saving of a new quick link in [[Special:RecentChanges]]\n{{Identical|Cancel}}", "rcfilters-savedqueries-add-new-title": "Title for the popup to add new quick link in [[Special:RecentChanges]]. This is for a small popup, please try to use a short string.", "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-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.", "rcfilters-filterlist-title": "Title for the filters list.\n{{Identical|Filter}}", - "rcfilters-filterlist-whatsthis": "Caption for the link that opens a popup with explanations about this filter group.", + "rcfilters-filterlist-whatsthis": "Caption for the link that opens a popup with explanations about this filter group, explaining what it is and how it works.", "rcfilters-filterlist-feedbacklink": "Caption for the link to the feedback page about the filters beta feature.", "rcfilters-highlightbutton-title": "Title for the highlight button used to toggle the highlight feature on and off.", "rcfilters-highlightmenu-title": "Title for the highlight menu used to select the highlight color for an individual filter.", @@ -1570,20 +1589,16 @@ "rcfilters-noresults-conflict": "A message displayed in the results area when no results found because there are filters in conflict with one another.", "rcfilters-state-message-subset": "Tooltip shown when hovering over a filter tag when one or more broader filters that contain the hovered filter are also selected. This indicates that the hovered filter has no effect because all the results it matches are also matched by the broader filter(s). Parameters:\n* $1 - Comma-separated string of selected broader filters that this filter is a subset of\n* $2 - Count of filters in $1, for PLURAL", "rcfilters-state-message-fullcoverage": "Tooltip shown when hovering over a filter tag when all the filters in its group are selected. This indicates that the hovered filter has no effect because the selected filters in the group cover all changes. Parameters:\n* $1 - Comma-separated string of selected filters in the group\n* $2 - Count of filters in $1, for PLURAL", - "rcfilters-filtergroup-registration": "Title for the filter group for editor registration type.", - "rcfilters-filter-registered-label": "Label for the filter for showing edits made by logged-in users.\n{{Identical|Registered}}", - "rcfilters-filter-registered-description": "Description for the filter for showing edits made by logged-in users.", - "rcfilters-filter-unregistered-label": "Label for the filter for showing edits made by logged-out users.\n{{Identical|Unregistered}}", - "rcfilters-filter-unregistered-description": "Description for the filter for showing edits made by logged-out users.", - "rcfilters-filter-unregistered-conflicts-user-experience-level": "Tooltip shown when hovering over a Unregistered filter tag, when a User Experience Level filter is also selected.\n\n\"Unregistered\" is {{msg-mw|Rcfilters-filter-unregistered-label}}.\n\n\"Experience\" is based on {{msg-mw|Rcfilters-filtergroup-userExpLevel}}.\n\nThis indicates that no results will be shown, because users matched by the User Experience Level groups are never unregistered. Parameters:\n* $1 - Comma-separated string of selected User Experience Level filters, e.g. \"Newcomer, Experienced\"\n* $2 - Count of selected User Experience Level filters, for PLURAL", "rcfilters-filtergroup-authorship": "Title for the filter group for edit authorship. This filter group allows the user to choose between \"Your own edits\" and \"Edits by others\". More info: https://phabricator.wikimedia.org/T149859", "rcfilters-filter-editsbyself-label": "Label for the filter for showing edits made by the current user.", "rcfilters-filter-editsbyself-description": "Description for the filter for showing edits made by the current user.", "rcfilters-filter-editsbyother-label": "Label for the filter for showing edits made by anyone other than the current user.", "rcfilters-filter-editsbyother-description": "Description for the filter for showing edits made by anyone other than the current user.", "rcfilters-filtergroup-userExpLevel": "Title for the filter group for user experience levels.", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Tooltip shown when hovering over a User Experience Level filter tag, when only Unregistered users are being shown. This indicates that no results will be shown, because users matched by the User Experience Level groups are never unregistered.\n\n\"Unregistered\" is {{msg-mw|Rcfilters-filter-unregistered-label}}.", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Message shown in the result area when both a User Experience Level filter and the Unregistered filter are selected. This indicates that no results will be shown because users selected by the User Experience Filter are never unregistered.\n\n\"Unregistered\" is {{msg-mw|Rcfilters-filter-unregistered-label}}.\n\n\"Experience\" is based on {{msg-mw|Rcfilters-filtergroup-userExpLevel}}.", + "rcfilters-filter-user-experience-level-registered-label": "Label for the filter for showing edits made by logged-in editors.", + "rcfilters-filter-user-experience-level-registered-description": "Description for the filter for showing edits made by logged-in editors.", + "rcfilters-filter-user-experience-level-unregistered-label": "Label for the filter for showing edits made by anonymous editors.", + "rcfilters-filter-user-experience-level-unregistered-description": "Description for the filter for showing edits made by anonymous editors.", "rcfilters-filter-user-experience-level-newcomer-label": "Label for the filter for showing edits made by new editors.", "rcfilters-filter-user-experience-level-newcomer-description": "Description for the filter for showing edits made by new editors.", "rcfilters-filter-user-experience-level-learner-label": "Label for the filter for showing edits made by learning editors.", @@ -1605,13 +1620,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.", @@ -1631,13 +1651,23 @@ "rcfilters-filter-previousrevision-description": "Description for the filter for showing changes on previous revisions of a page.", "rcfilters-filter-excluded": "Label for a menu item in [[Special:RecentChanges]] noting that the item is being excluded from the results.", "rcfilters-tag-prefix-namespace": "Prefix for the namespace tags in [[Special:RecentChanges]]. Namespace tags use a colon (:) as prefix. Please keep this format.\n\nParameters:\n* $1 - Filter name.", - "rcfilters-tag-prefix-namespace-inverted": "Prefix for the namespace inverted tags in [[Special:RecentChanges]]. Namespace tags use a colon (:) as prefix. Please keep this format.\n\nParameters:\n* $1 - Filter name.", + "rcfilters-tag-prefix-namespace-inverted": "Prefix for the namespace inverted tags in [[Special:RecentChanges]]. Namespace tags use a colon (:) as prefix. Please keep this format.\n\nParameters:\n* $1 - Filter name.\n{{Identical|Not}}", "rcfilters-tag-prefix-tags": "Prefix for the edit tags in [[Special:RecentChanges]]. Edit tags use a hash (#) as prefix. Please keep this format.\n\nParameters:\n* $1 - Tag display name.", + "rcfilters-exclude-button-off": "Title for the button that excludes selected namespaces, when it is not yet active.", + "rcfilters-exclude-button-on": "Title for the button that excludes selected namespaces, when it is active.", + "rcfilters-view-advanced-filters-label": "Label for the view switch that changes between advanced filters in [[Special:RecentChanges]]", "rcfilters-view-tags": "Title for the tags view in [[Special:RecentChanges]]\n{{Identical|Tag}}", "rcfilters-view-namespaces-tooltip": "Tooltip for the button that loads the namespace view in [[Special:RecentChanges]]", "rcfilters-view-tags-tooltip": "Tooltip for the button that loads the tags view in [[Special:RecentChanges]]", "rcfilters-view-return-to-default-tooltip": "Tooltip for the button that returns to the default filter view in [[Special:RecentChanges]]", "rcfilters-liveupdates-button": "Label for the button to enable or disable live updates on [[Special:RecentChanges]]", + "rcfilters-liveupdates-button-title-on": "Title for the button to enable or disable live updates on [[Special:RecentChanges]] when the feature is ON.", + "rcfilters-liveupdates-button-title-off": "Title for the button to enable or disable live updates on [[Special:RecentChanges]] when the feature is OFF.", + "rcfilters-watchlist-markseen-button": "Label for the button to mark all changes as seen on [[Special:Watchlist]] when using the structured filters interface.", + "rcfilters-watchlist-edit-watchlist-button": "Label for the button to edit the watched pages on [[Special:Watchlist]] when using the structured filters interface.\n\nCf. {{msg-mw|watchlisttools-edit}}.", + "rcfilters-watchlist-showupdated": "Message at the top of [[Special:Watchlist]] when the Structured filters are enabled that describes what unseen changes look like.\n\nCf. {{msg-mw|wlheader-showupdated}}", + "rcfilters-preference-label": "Option in RecentChanges tab of [[Special:Preferences]].", + "rcfilters-preference-help": "Explanation for the option in the RecentChanges tab of [[Special:Preferences]].", "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}}.", @@ -1697,6 +1727,7 @@ "uploadbtn": "Button name in [[Special:Upload]].\n\nSee also:\n* {{msg-mw|Uploadbtn}}\n* {{msg-mw|Accesskey-upload}}\n* {{msg-mw|Tooltip-upload}}\n{{Identical|Upload file}}", "reuploaddesc": "Used as button text in the Upload form on [[Special:Upload]].\n\nSee also:\n* {{msg-mw|upload-tryagain|Submit button text}}\n* {{msg-mw|ignorewarning|button text}}", "upload-tryagain": "Used as Submit button text in [[Special:Upload]].\n\nSee also:\n* {{msg-mw|Uploaderror|section header}}\n* {{msg-mw|ignorewarning|button text}}\n* {{msg-mw|reuploaddesc|button text}}", + "upload-tryagain-nostash": "Used as Submit button text in [[Special:Upload]] when the upload could not be stashed & the file needs to be reuploaded.\n\nSee also:\n* {{msg-mw|Uploaderror|section header}}\n* {{msg-mw|ignorewarning|button text}}\n* {{msg-mw|reuploaddesc|button text}}", "uploadnologin": "Used as title of the error message {{msg-mw|Uploadnologintext}}.\n{{Identical|Not logged in}}", "uploadnologintext": "Used as error message.\n\nThe title for this message is {{msg-mw|Uploadnologin}}.\n\nParameters:\n* $1 - link text {{msg-mw|Loginreqlink}}. The link points to [[Special:UserLogin]].\nSee also:\n* {{msg-mw|Whitelistedittext}}\n* {{msg-mw|Nocreatetext}}\n* {{msg-mw|Loginreqpagetext}}", "upload_directory_missing": "Parameters:\n* $1 - directory name", @@ -1759,6 +1790,7 @@ "file-deleted-duplicate-notitle": "Used in [[Special:Upload]] when the title of the deleted duplicate is not available.\n\nSee also:\n* {{msg-mw|file-deleted-duplicate}}", "uploadwarning": "Used as section header in [[Special:Upload]].", "uploadwarning-text": "Used in [[Special:Upload]].", + "uploadwarning-text-nostash": "Used in [[Special:Upload]], when the upload could not be stashed & the file needs to be reuploaded.", "savefile": "When uploading a file", "uploadedimage": "{{ignored}}This is a ''logentry'' message only used on IRC. $1 is the name of the file uploaded.", "overwroteimage": "{{ignored}}This is a ''logentry'' message only used on IRC. $1 is the name of the file uploaded.", @@ -2037,6 +2069,8 @@ "pageswithprop-legend": "Legend for the input form on [[Special:PagesWithProp]].\n{{Identical|Page with page property}}", "pageswithprop-text": "Introductory text for the input form on [[Special:PagesWithProp]]", "pageswithprop-prop": "Label for the property name input field on [[Special:PagesWithProp]].\n{{Identical|Property name}}", + "pageswithprop-reverse": "Label for the reverse checkmark field on [[Special:PagesWithProp]].", + "pageswithprop-sortbyvalue": "Label for the sort by value checkmark field on [[Special:PagesWithProp]].", "pageswithprop-submit": "Label for the submit button on [[Special:PagesWithProp]].\n{{Identical|Go}}", "pageswithprop-prophidden-long": "Information shown on [[Special:PagesWithProp]] when property value is longer than 1 kilobyte.\n\nParameters:\n* $1 - size of property value in kilobytes\nSee also:\n* {{msg-mw|pageswithprop-prophidden-binary}}", "pageswithprop-prophidden-binary": "Information shown on [[Special:PagesWithProp]] when property value contains binary data.\n\nParameters:\n* $1 - size of property value in kilobytes\nSee also:\n* {{msg-mw|pageswithprop-prophidden-long}}", @@ -2404,6 +2438,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", @@ -2420,6 +2456,7 @@ "enotif_lastdiff": "Email notification text to the latest page differences. Parameters:\n* $1 - a link which points to a diff, shown as a plain link\nSee also:\n* {{msg-mw|Enotif lastvisited}}", "enotif_anon_editor": "User name in an email notification when referring to an anonymous user. Parameters:\n* $1 - the anonymous user name (i.e. an IP address).", "enotif_body": "Text of a notification email sent when a watched page has been edited or deleted.\n[[File:Screenshot_MediaWiki_e-mail_notifier.PNG|150px|right]]\n\nRefers to {{msg-mw|Helppage}}.\n\nParameters:\n*$WATCHINGUSERNAME is the username of the user receiving the notification.\n*$PAGEINTRO is the first line of the message, saying what happened. It currently can be either of:\n**{{msg-mw|Enotif body intro deleted}}\n**{{msg-mw|Enotif body intro created}}\n**{{msg-mw|Enotif body intro moved}}\n**{{msg-mw|Enotif body intro restored}}\n**{{msg-mw|Enotif body intro changed}} (for all the other cases).\n*$NEWPAGE consists of either\n**if the page is new (in older releases), {{msg-mw|Enotif newpagetext}}\n**if the page has a previous revision,\n***{{msg-mw|Enotif lastdiff}}\n***a newline\n***{{msg-mw|Enotif lastvisited}}\n*$PAGEEDITOR_EMAIL and $PAGEEDITOR_WIKI are links respectively to the email user special page and user page for the user who performed the action.\n*$PAGEEDITOR is the username of the user who performed the action.\n*$HELPPAGE is the full URL to the help page, defined by {{msg-mw|helppage}}.\n\nThe subject of the email is one of the following messages:\n*{{msg-mw|Enotif subject deleted}}\n*{{msg-mw|Enotif subject created}}\n*{{msg-mw|Enotif subject moved}}\n*{{msg-mw|Enotif subject restored}}\n*{{msg-mw|Enotif subject changed}}", + "enotif_minoredit": "Possible value (it's empty string for non-minor edits) in the {{msg-mw|Enotif body|notext=1}} message. This can use magic words like {{GRAMMAR}}. However, it will not be parsed, so you can not use wikitext (e.g. links) that generates HTML.\n{{Identical|minoredit}}", "created": "{{Optional}}\nPossible value for $CHANGEDORCREATED in the following messages:\n* {{msg-mw|enotif_subject}}\n* {{msg-mw|enotif_body}}\n{{Identical|Created}}", "changed": "{{Optional}}\nPossible value for $CHANGEDORCREATED in the following messages:\n* {{msg-mw|Enotif subject}}\n* {{msg-mw|Enotif body}}", "deletepage": "Used as Submit button text.\n{{Identical|Delete page}}", @@ -2448,6 +2485,7 @@ "delete-warning-toobig": "Parameters:\n* $1 - the upper limit of number of revisions\nSee also:\n* {{msg-mw|Delete-toobig}}", "deleteprotected": "Used as error message when deleting the page.\n\n\"If protection keeps them from editing, they shouldn't be able to delete.\"", "deleting-backlinks-warning": "A warning shown when a page that is being deleted has at least one link to it or is transcluded in at least one page.", + "deleting-subpages-warning": "A warning shown when a page that is being deleted has at least one subpage. $1 is the number of subpages of the page. For any number of subpages over 50, $1 will be 51.\nSee also:\n* {{msg-mw|Deleting-backlinks-warning}}", "rollback": "{{Identical|Rollback}}", "rollbacklink": "{{Doc-actionlink}}\nThis link text appears on the recent changes page to users who have the \"rollback\" right.\nThis message has a tooltip {{msg-mw|tooltip-rollback}}\n{{Identical|Rollback}}", "rollbacklinkcount": "{{doc-actionlink}}\nText of the rollback link showing the number of edits to be rolled back. See also {{msg-mw|rollbacklink}}.\n\nParameters:\n* $1 - the number of edits that will be rolled back. If $1 is over the value of $wgShowRollbackEditCount (default: 10) {{msg-mw|rollbacklinkcount-morethan}} is used.\n\nThe rollback link is displayed with a tooltip {{msg-mw|Tooltip-rollback}}", @@ -2620,7 +2658,9 @@ "sp-contributions-explain": "{{optional}}", "sp-contributions-footer": "{{ignored}}This is the footer for users that are not anonymous or newbie on [[Special:Contributions]].", "sp-contributions-footer-anon": "{{ignored}}This is the footer for anonymous users on [[Special:Contributions]].", + "sp-contributions-footer-anon-range": "{{ignored}}This is the footer for IP ranges on [[Special:Contributions]].", "sp-contributions-footer-newbies": "{{ignored}}This is the footer for newbie users on [[Special:Contributions]].", + "sp-contributions-outofrange": "Message shown when a user tries to view contributions of an IP range that's too large. $1 is the numerical limit imposed on the CIDR range.", "whatlinkshere": "The text of the link in the toolbox (on the left, below the search menu) going to [[Special:WhatLinksHere]].\n\nSee also:\n* {{msg-mw|Whatlinkshere}}\n* {{msg-mw|Accesskey-t-whatlinkshere}}\n* {{msg-mw|Tooltip-t-whatlinkshere}}", "whatlinkshere-title": "Title of the special page [[Special:WhatLinksHere]]. This page appears when you click on the 'What links here' button in the toolbox. $1 is the name of the page concerned.", "whatlinkshere-summary": "{{doc-specialpagesummary|whatlinkshere}}", @@ -2919,7 +2959,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; \"- [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} search the related logs],\nnigh [{{fullurl:{{FULLPAGENAME}}|action=edit}} edit this page].", "previewnote": "'''Wa d Azar-ascan waha;\ntiẓṛigin εad war twaḥḍent!'''", - "editing": "Aẓṛag di $1", - "editingsection": "Aẓrag di $1 (tigezmi)", + "editing": "ⴰⵙⵏⴼⵍ ⵏ $1", + "editingsection": "ⴰⵙⵏⴼⵍ ⵏ $1 (ⵜⵉⴳⵣⵎⵉ)", "copyrightwarning": "Maṛṛa tirra di {{SITENAME}} twaggent swadday i $2 (ẓar da $1).\nmala war texsed tirra inac ad twaẓṛegent , ad twamsebḍant .\nUr ten-teg ca da.
    \ntjadjid-anɣ Ɛawt ila qa d cekk ig yuran manaya, niɣ tesneɣlet-id zi ca n uɣbal nniḍn d alelli.\n'''UR SADDAF CA TIRRA ƔARSENT COPYRIGHTE BLA MA AD-IXES BAB-INES !'''", "templatesused": "Timudmiwin itwaggen di Tasna ya:", "templatesusedpreview": "Timudmiwin igg itwasxdemen dg uzar-ascan a :", @@ -250,18 +252,18 @@ "deletedhist": "ⴰⵎⵣⵔⵓⵢ ⵉⵜⵜⵡⴰⴽⴽⵙⵏ", "mergehistory-reason": "ⵜⴰⵎⵏⵜⵉⵍⵜ:", "history-title": "Amezruy n teẓṛigt n \"$1\"", - "lineno": "Tabrit $1:", + "lineno": "ⴰⵣⵔⵉⴳ $1:", "compareselectedversions": "Smequdda tunɣilin a", "editundo": "kkes min ggiɣ", "searchresults": "ⵜⵉⵢⴰⴼⵓⵜⵉⵏ ⵏ ⵓⵔⵣⵣⵓ", "searchresults-title": "ⵜⵉⵢⴰⴼⵓⵜⵉⵏ ⵏ ⵓⵔⵣⵣⵓ ⵅⴼ \"$1\"", "prevn": "Amzray {{PLURAL:$1|$1}}", "nextn": "wn d-itasn {{PLURAL:$1|$1}}", - "viewprevnext": "Ẓeṛ ($1 {{int:pipe-separator}} $2) ($3)", + "viewprevnext": "ⵥⵔ ($1 {{int:pipe-separator}} $2) ($3)", "searchprofile-articles": "ⵜⴰⵙⵏⵉⵡⵉⵏ ⵏ ⵜⵓⵎⴰⵢⵜ", "searchprofile-everything": "ⵎⴰⵔⵔⴰ", "searchprofile-articles-tooltip": "ⵔⵣⵓ ⴳ $1", - "search-result-size": "$1 ({{PLURAL:$2|1 tawalt|$2 tiwalin}})", + "search-result-size": "$1 ({{PLURAL:$2|1 ⵜⴳⵓⵔⵉ|$2 ⵜⴳⵓⵔⵉⵡⵉⵏ}})", "search-redirect": "(awi $1)", "search-section": "(ⵜⵉⴳⵣⵎⵉ $1)", "search-category": "(ⴰⵙⵎⵉⵍ $1)", @@ -283,8 +285,10 @@ "userrights-groupsmember": "ⴰⴳⵎⴰⵎ ⴳ:", "userrights-reason": "ⵜⴰⵎⵏⵜⵉⵍⵜ:", "group": "ⵜⴰⵔⴰⴱⴱⵓⵜ:", + "group-bot": "ⵉⵔⵓⴱⵓⵜⵏ", "group-sysop": "Indbaln", "group-all": "(ⵎⴰⵔⵔⴰ)", + "grouppage-bot": "{{ns:project}}:ⵉⵔⵓⴱⵓⵜⵏ", "grouppage-sysop": "{{ns:project}}:inedbalen", "right-read": "ⵖⵔ ⵜⴰⵙⵏⵉⵡⵉⵏ", "right-edit": "ⵙⵏⴼⵍ ⵜⴰⵙⵏⵉⵡⵉⵏ", @@ -295,24 +299,27 @@ "action-read": "ⵖⵔ ⵜⴰⵙⵏⴰ ⴰ", "action-edit": "ⵙⵏⴼⵍ ⵜⴰⵙⵏⴰ ⴰ", "action-delete": "ⴽⴽⵙ ⵜⴰⵙⵏⴰ ⴰ", - "nchanges": "$1 {{PLURAL:$1|tiẓṛegt|tiẓṛigin}}", + "nchanges": "$1 {{PLURAL:$1|ⵓⵙⵏⴼⵍ|ⵉⵙⵏⴼⵉⵍⵏ}}", "enhancedrc-history": "ⴰⵎⵣⵔⵓⵢ", - "recentchanges": "Tiẓṛigin tineggura", + "recentchanges": "ⵉⵙⵏⴼⵉⵍⵏ ⵉⵏⴳⴳⵓⵔⴰ", "recentchanges-feed-description": "Bbar tiẓṛigin timayutin n wiki deg usudem(feed) a .", + "recentchanges-label-newpage": "ⵉⵙⵏⵓⵍⴼⴰ ⵓⵙⵏⴼⵍ ⴰ ⵉⵛⵜ ⵏ ⵜⴰⵙⵏⴰ ⵜⴰⵎⴰⵢⵏⵓⵜ", + "recentchanges-label-minor": "ⵡⴰ ⴷ ⴰⵙⵏⴼⵍ ⵓⵎⵥⵉⵢ", + "recentchanges-label-bot": "ⴰⵙⵏⴼⵍ ⴰ ⵉⴳⴳⴰ ⵜ ⵉⵊⵊ ⵏ ⵓⵔⵓⴱⵓ", "rcfilters-savedqueries-new-name-label": "ⵉⵙⵎ", "rcfilters-filter-bots-label": "ⴰⵔⵓⴱⵓ", "rcnotefrom": "ɣar wadday d tiẓṛigin zi '''$2''' (ar '''$1''' ).", "rclistfrom": "Ẓar tiẓṛigin timaynutin ig ibeddan zi $3 $2", - "rcshowhideminor": "$1 tiẓṛigin d-timeẓyanin", + "rcshowhideminor": "$1 ⵉⵙⵏⴼⵉⵍⵏ ⵓⵎⵥⵉⵢⵏ", "rcshowhidebots": "$1 ⵉⵔⵓⴱⵓⵜⵏ", "rcshowhideliu": "$1 users ig yudeffen", "rcshowhideanons": "$1 users war twasnen", - "rcshowhidepatr": "Tiẓṛigin ig itwaẓrent di $1", - "rcshowhidemine": "$1 tiẓṛigin inu", + "rcshowhidepatr": "$1 ⵉⵙⵏⴼⵉⵍⵏ ⵉⵜⵜⵡⴰⵃⴹⴰⵏ", + "rcshowhidemine": "$1 ⵉⵙⵏⴼⵉⵍⵏ ⵉⵏⵓ", "rclinks": "Ẓar $1 tiẓṛigin tinggura di $2 n ussan inggura", - "diff": "imṣebḍan", + "diff": "ⴰⵎⵣⴰⵔⴰⵢ", "hist": "ⴰⵎⵣⵔⵓⵢ", - "hide": "Snuffar", + "hide": "ⵙⵏⵓⴼⴼⵔ", "show": "semmel-d", "minoreditletter": "ⵎⵥⵢ", "newpageletter": "ⵎⵢⵏ", @@ -333,6 +340,7 @@ "upload-form-label-infoform-name": "ⵉⵙⵎ", "upload-form-label-infoform-description": "ⴰⴳⵍⴰⵎ", "upload-form-label-infoform-date": "ⴰⵙⴰⴽⵓⴷ", + "license-header": "ⵜⵓⵔⴰⴳⵜ", "listfiles-delete": "ⴽⴽⵙ", "imgfile": "ⴰⴼⴰⵢⵍⵓ", "listfiles": "ⵜⴰⵍⴳⴰⵎⵜ ⵏ ⵉⴼⴰⵢⵍⵓⵜⵏ", @@ -344,17 +352,17 @@ "listfiles-latestversion-yes": "ⵢⴰⵀ", "listfiles-latestversion-no": "ⵓⵀⵓ", "file-anchor-link": "ⴰⴼⴰⵢⵍⵓ", - "filehist": "Amzruy n usatul", + "filehist": "ⴰⵎⵣⵔⵓⵢ ⵏ ⵓⴼⴰⵢⵍⵓ", "filehist-help": "Tka di date/time bac ad tẓerd afaylu mamec ja d-itban di Lwaqt a .", "filehist-deleteall": "ⴽⴽⵙ ⵎⴰⵔⵔⴰ", - "filehist-deleteone": "sfaḍ", + "filehist-deleteone": "ⴽⴽⵙ", "filehist-current": "ⴰⵎⵉⵔⴰⵏ", "filehist-datetime": "ⴰⵙⴰⴽⵓⴷ/ⴰⴽⵓⴷ", - "filehist-user": "Aseqdac", + "filehist-user": "ⴰⵙⵇⴷⴰⵛ", "filehist-dimensions": "Tisektiwin", - "filehist-filesize": "Tiddi n ufaylu", + "filehist-filesize": "ⵜⵉⴷⴷⵉ ⵏ ⵓⴼⴰⵢⵍⵓ", "filehist-comment": "ⴰⵅⴼⴰⵡⴰⵍ", - "imagelinks": "Aseqdec usatul", + "imagelinks": "ⴰⵙⵇⴷⵛ ⵏ ⵓⴼⴰⵢⵍⵓ", "linkstoimage": "{{PLURAL:$1|Tasna ya teqn-ad|$1 Tasniwin a qnent-id}} ɣa ufaylu ya :", "nolinkstoimage": "war telli ca n Tasna teqqen-d ɣa ufaylu ya.", "sharedupload": "Wa d ijj ufaylu itwacrec jar aṭṭas n isenfaren(projects).", @@ -369,21 +377,21 @@ "download": "ⴰⴳⵎ", "listredirects": "Ẓar (redirects)", "unusedtemplates": "Timudmiwin war twasexedment", - "randompage": "Tasna mamec ma tella", + "randompage": "ⵜⴰⵙⵏⴰ ⵜⴰⴷⵀⵎⴰⵙⵜ", "randomincategory-category": "ⴰⵙⵎⵉⵍ:", "randomincategory-submit": "Raḥ ɣa", "randomredirect": "(redirect) zi ṭṭarf", - "statistics": "tisiḍanin", + "statistics": "ⵉⵙⵉⴹⵏⴻⵏ", "statistics-articles": "ⵜⴰⵙⵏⵉⵡⵉⵏ ⵏ ⵜⵓⵎⴰⵢⵜ", "statistics-pages": "ⵜⴰⵙⵏⵉⵡⵉⵏ", "doubleredirects": "(redirects) ɛɛawdent", "brokenredirects": "(redirects) arẓent", - "brokenredirects-edit": "arri", + "brokenredirects-edit": "ⵙⵏⴼⵍ", "brokenredirects-delete": "ⴽⴽⵙ", "withoutinterwiki": "Tasna bla tiẓdayin n tutlayt", "withoutinterwiki-submit": "Smmrad", "fewestrevisions": "Tasniwin s cwayt n ifeggiden", - "nbytes": "$1 {{PLURAL:$1|atamḍan|itamḍanen}}", + "nbytes": "$1 {{PLURAL:$1|ⴱⴰⵢⵜ|ⵉⴷ ⴱⴰⵢⵜ}}", "nlinks": "$1 {{PLURAL:$1|Tazdayt|Tizdayin}}", "nmembers": "$1 {{PLURAL:$1|ⵓⴳⵎⴰⵎ|ⵉⴳⵎⴰⵎⵏ}}", "lonelypages": "ⵜⴰⵙⵏⵉⵡⵉⵏ ⵜⵉⴳⵓⵊⵉⵍⵉⵏ", @@ -421,7 +429,7 @@ "apisandbox-continue-clear": "ⵙⴼⴹ", "booksources": "Ighbula n udlis", "booksources-search": "ⵔⵣⵓ", - "specialloguserlabel": "Aseqdac:", + "specialloguserlabel": "ⴰⵎⴳⴰⵢ:", "speciallogtitlelabel": "isem:", "log": "Aɣmis", "all-logs-page": "Maṛṛa iɣmisen", @@ -433,7 +441,7 @@ "allarticles": "ⵎⴰⵔⵔⴰ ⵜⴰⵙⵏⵉⵡⵉⵏ", "allpagessubmit": "Uyur", "allpagesprefix": "Ẓar Tasniwin s usekkil amzwaru:", - "categories": "ⵉⵙⵎⵉⵍⵏ", + "categories": "ⵜⴰⴳⴳⴰⵢⵉⵏ", "sp-deletedcontributions-contribs": "ⵜⵓⵎⵓⵜⵉⵏ", "linksearch-ok": "ⵔⵣⵓ", "listusers-submit": "Smmrad", @@ -464,7 +472,7 @@ "actioncomplete": "Tiggawt tsala", "deletedtext": "\"$1\" Twakkes.\nXemm $2 i tikkas timaynutin.", "dellogpage": "Aɣmis n uṣfaḍ", - "deletecomment": "Ssebba:", + "deletecomment": "ⵜⴰⵎⵏⵜⵉⵍⵜ:", "deleteotherreason": "Ca n ssebba nniḍn:", "deletereasonotherlist": "Ssebba nniḍn", "rollbacklink": "Sdwl ghar dffar", @@ -487,10 +495,10 @@ "protect-expiring": "itsala deg $1 (UTC)", "protect-cascade": "Ḥḍa Tasniwin i yudfen di Tasna ya (cascading protection)", "protect-cantedit": "war tezemred ca ad tbedeld iswiren n uḥeṭṭu n Tasna ya, mayenzi war ɣark turagt bac ad tẓṛegd.", - "protect-expiry-options": "2 tasεεat:2 hours,1 ass:1 day,3 ussan:3 days,1 amalass:1 week,2 imallasen:2 weeks,1 ayur:1 month,3 iyuren:3 months,6 iyuren:6 months,1 asggas:1 year,infinite:infinite", + "protect-expiry-options": "1 ⵜⵙⵔⴰⴳⵜ:1 hour,1 ⵡⴰⵙⵙ:1 day,1 ⵉⵎⴰⵍⴰⵙⵙ:1 week,2 ⵉⵎⴰⵍⴰⵙⵙⵏ:2 weeks,1 ⵡⴰⵢⵢⵓⵔ:1 month,3 ⵡⴰⵢⵢⵓⵔⵏ:3 months,6 ⵡⴰⵢⵢⵓⵔⵏ:6 months,1 ⵓⵙⴳⴳⵯⴰⵙ:1 year,ⵍⴱⴷⴰ:infinite", "restriction-type": "ⵜⵓⵔⴰⴳⵜ:", "restriction-level": "Aswir uskref:", - "restriction-edit": "Arri", + "restriction-edit": "ⵙⵏⴼⵍ", "restriction-move": "ⵙⵎⵓⵜⵜⵉ", "restriction-upload": "ⵙⴽⵜⵔ", "undeletebtn": "Ar-ad", @@ -512,10 +520,10 @@ "sp-contributions-newbies-sub": "i imiḍan imaynuten", "sp-contributions-blocklog": "sbdd tabdart n talghut", "sp-contributions-talk": "ⵎⵙⴰⵡⵍ", - "sp-contributions-search": "Arzu x tiggawin", + "sp-contributions-search": "ⵔⵣⵓ ⵅ ⵜⵓⵎⵓⵜⵉⵏ", "sp-contributions-username": "Tansa IP d isem useqdac:", "sp-contributions-submit": "ⵔⵣⵓ", - "whatlinkshere": "Min iteqqnen ghar da", + "whatlinkshere": "ⵎⵉⵏ ⵉⵇⵇⵏⴻⵏ ⵖⵔ ⴷⴰ", "whatlinkshere-title": "Tasniwin id-izedyen ɣar \"$1\"", "whatlinkshere-page": "ⵜⴰⵙⵏⴰ:", "linkshere": "Tasna ya tzedi ɣa '''[[:$1]]''':", @@ -529,7 +537,7 @@ "whatlinkshere-hidelinks": "$1 timqqan", "blockip": "Sbdd asqdac a", "ipbreason": "ⵜⴰⵎⵏⵜⵉⵍⵜ:", - "ipboptions": "2 n timirin:2 hours,1 n wass:1 day,3 n wussan:3 days,1 imalass:1 week,2 imallassn:2 weeks,1 wayur:1 month,3 wayurn:3 months,6 wayurn:6 months,1 asggwas:1 year,tartalla:infinite", + "ipboptions": "2 ⵜⵙⵔⴰⴳⵉⵏ:2 hours,1 ⵡⴰⵙⵙ:1 day,3 ⵡⵓⵙⵙⴰⵏ:3 days,1 ⵉⵎⴰⵍⴰⵙⵙ:1 week,2 ⵉⵎⴰⵍⴰⵙⵙⵏ:2 weeks,1 ⵡⴰⵢⵢⵓⵔ:1 month,3 ⵡⴰⵢⵢⵓⵔⵏ:3 months,6 ⵡⴰⵢⵢⵓⵔⵏ:6 months,1 ⵓⵙⴳⴳⵯⴰⵙ:1 year,ⵍⴱⴷⴰ:infinite", "autoblocklist-submit": "ⵔⵣⵓ", "ipblocklist": "Tabdart n tansiwin IP d isemawen n iseqdacen ig iteblukan", "blocklist-reason": "ⵜⴰⵎⵏⵜⵉⵍⵜ", @@ -538,7 +546,7 @@ "unblocklink": "Ṛẓem", "contribslink": "ⵜⵓⵎⵓⵜⵉⵏ", "blocklogpage": "Ẓareqq aɣmis", - "blocklogentry": "ibloka [[$1]] ar $2 $3", + "blocklogentry": "ⵉⴳⴷⵍ [[$1]] ar $2 $3", "block-log-flags-nocreate": "timggit n imiḍanen imaynutn ttwasbdd", "move-page": "ⵙⵎⵓⵜⵜⵉ $1", "move-page-legend": "ⵙⵎⵓⵜⵜⵉ ⵜⴰⵙⵏⴰ", @@ -567,7 +575,7 @@ "import-comment": "ⴰⵅⴼⴰⵡⴰⵍ:", "importlogpage": "Siri-d aɣmis", "tooltip-pt-userpage": "Tasna inu", - "tooltip-pt-mytalk": "Tasna usiwl inu", + "tooltip-pt-mytalk": "ⵜⴰⵙⵏⴰ {{GENDER:|ⵏⵏⴽ|ⵏⵏⵎ}} ⵏ ⵓⵎⵙⴰⵡⴰⵍ", "tooltip-pt-preferences": "Min d-ac itteɛjiben", "tooltip-pt-watchlist": "Tabdart n Tasniwin umi txmamd bac ad-ten teẓṛegd", "tooltip-pt-mycontris": "ⵜⴰⵍⴳⴰⵎⵜ ⵏ ⵜⵓⵎⵓⵜⵉⵏ {{GENDER:|ⵏⵏⴽ|ⵏⵏⵎ}}", @@ -575,7 +583,7 @@ "tooltip-pt-logout": "ⴼⴼⵖ", "tooltip-ca-talk": "ⴰⵎⵙⴰⵡⴰⵍ ⵅⴼ ⵜⴰⵙⵏⴰ ⵏ ⵜⵓⵎⴰⵢⵜ", "tooltip-ca-edit": "ⵙⵏⴼⵍ ⵜⴰⵙⵏⴰ ⴰ", - "tooltip-ca-addsection": "Arni tinit deg usiwl a.", + "tooltip-ca-addsection": "ⵙⵙⵏⵜⵉ ⵜⵉⴳⵣⵎⵉ ⵜⴰⵎⴰⵢⵏⵓⵜ", "tooltip-ca-viewsource": "Tasna ya tẓarq. tzemred atẓred aɣbal ines.", "tooltip-ca-history": "Isughulen izrin n tasna ya.", "tooltip-ca-protect": "Ẓarq Tasna ya", @@ -585,35 +593,37 @@ "tooltip-ca-unwatch": "Kkes Tasna ya zi Tabdart uḥṭṭu inec", "tooltip-search": "ⵔⵣⵓ ⴳ {{SITENAME}}", "tooltip-search-go": "Uyur ghar tasna s yizwel a s imant nnes malla tella", - "tooltip-search-fulltext": "Rzu di tasniwin xef waḍṛis a", + "tooltip-search-fulltext": "ⵔⵣⵓ ⴷⵉ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵅⴼ ⵓⴹⵔⵉⵙ ⴰ", "tooltip-p-logo": "Tasbtirt Tamzwarut", "tooltip-n-mainpage": "Adef ɣar tasna tamezwarut", "tooltip-n-mainpage-description": "Adef ghar tasna tamezwarut", "tooltip-n-portal": "Xef usenfar, mayen tzemmared ad tegged, mani ɣa tafed tiɣawsiwin", "tooltip-n-currentevents": "Af tilgha n ugilal xf tmsarin titurawin", - "tooltip-n-recentchanges": "Tabdart n isenfilen imaynuten di Wiki.", + "tooltip-n-recentchanges": "ⵜⴰⵍⴳⴰⵎⵜ ⵏ ⵉⵙⵏⴼⵉⵍⵏ ⵉⵏⴳⴳⵓⵔⴰ ⴷⴳ ⵓⵡⵉⴽⵉ", "tooltip-n-randompage": "Zdem ict tasna d tagacurant", "tooltip-n-help": "Mani gha tessned", "tooltip-t-whatlinkshere": "Tabdart n marra tasniwin n Wiki i d-iteqqnen da", - "tooltip-t-recentchangeslinked": "Isenfilen n drus zggwami di tasniwin i yetwaqqnen zi tasna ya", + "tooltip-t-recentchangeslinked": "ⵉⵙⵏⴼⵉⵍⵏ ⵉⵏⴳⴳⵓⵔⴰ ⴷⵉ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵉⵇⵇⵏⴻⵏ ⵣⵉ ⵜⴰⵙⵏⴰ ⴰ", "tooltip-t-contributions": "Ẓar Tabdart n tiggawin n useqdac a", "tooltip-t-emailuser": "Sekk e-mail i bnadem a", "tooltip-t-upload": "ⵙⴽⵜⵔ ⵉⴼⴰⵢⵍⵓⵜⵏ", - "tooltip-t-specialpages": "Tabdart n marra tasniwin tinemmezrayin", + "tooltip-t-specialpages": "ⵜⴰⵍⴳⴰⵎⵜ ⵏ ⵎⴰⵔⵔⴰ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵉⵥⵍⵉⵏ", "tooltip-t-print": "Tanghelt usiggez n tasna ya", "tooltip-ca-nstab-main": "Ẓeṛ tasna n ukettur", "tooltip-ca-nstab-user": "Ẓar Tasna n user", "tooltip-ca-nstab-project": "Ẓṛ tasna n usnfar", - "tooltip-ca-nstab-image": "Ẓar Tasna n ufaylu", + "tooltip-ca-nstab-image": "ⵥⵔ ⵜⴰⵙⵏⴰ ⵏ ⵓⴼⴰⵢⵍⵓ", "tooltip-ca-nstab-template": "Ẓṛ tamudmt", "tooltip-ca-nstab-help": "Ẓar Tasna n tallalt", "tooltip-ca-nstab-category": "Ẓṛ tasna n taggayt", - "tooltip-minoredit": "egg-itt d taẓṛigt tamẓyant", + "tooltip-minoredit": "ⴳⴳ ⵉⵜ ⴷ ⴰⵙⵏⴼⵍ ⵓⵎⵥⵉⵢ", "tooltip-save": "Xmml isnfiln nnk", "tooltip-preview": "Ẓṛ mayn turid, zzat i t gha txmmld!", "tooltip-diff": "Ẓar tiẓṛigin i teggid deg uḍṛiṣ a.", "tooltip-compareselectedversions": "Ẓar imsebeḍiyen jar tunɣilin n Tasna ya.", "tooltip-watch": "Arni Tasna ya ɣa Tabdart uḥṭṭu inec", + "pageinfo-header-edits": "ⴰⵎⵣⵔⵓⵢ ⵏ ⵓⵙⵏⴼⵍ", + "pageinfo-language": "ⵜⵓⵜⵍⴰⵢⵜ ⵏ ⵜⵓⵎⴰⵢⵜ ⵏ ⵜⴰⵙⵏⴰ", "pageinfo-contentpage-yes": "ⵢⴰⵀ", "pageinfo-protect-cascading-yes": "ⵢⴰⵀ", "previousdiff": "← imṣebḍan n zzat", @@ -659,6 +669,7 @@ "tags-active-yes": "ⵢⴰⵀ", "tags-active-no": "ⵓⵀⵓ", "tags-delete": "ⴽⴽⵙ", + "tags-hitcount": "$1 {{PLURAL:$1|ⵓⵙⵏⴼⵍ|ⵉⵙⵏⴼⵉⵍⵏ}}", "tags-create-reason": "ⵜⴰⵎⵏⵜⵉⵍⵜ:", "tags-delete-reason": "ⵜⴰⵎⵏⵜⵉⵍⵜ:", "tags-activate-reason": "ⵜⴰⵎⵏⵜⵉⵍⵜ:", diff --git a/languages/i18n/rm.json b/languages/i18n/rm.json index 5cfc0392f4..1161326275 100644 --- a/languages/i18n/rm.json +++ b/languages/i18n/rm.json @@ -233,6 +233,8 @@ "hidetoc": "zuppentar", "collapsible-collapse": "Cumprimer", "collapsible-expand": "Extender", + "confirmable-yes": "Gea", + "confirmable-no": "Na", "thisisdeleted": "Guardar u restaurar $1?", "viewdeleted": "Mussa $1?", "restorelink": "{{PLURAL:$1|ina modificaziun stizzada|$1 modificaziuns stizzadas}}", @@ -1199,6 +1201,8 @@ "listfiles_size": "Grondezza", "listfiles_description": "Descripziun", "listfiles_count": "Versiuns", + "listfiles-latestversion-yes": "Gea", + "listfiles-latestversion-no": "Na", "file-anchor-link": "Datoteca", "filehist": "Istorgia da las versiuns", "filehist-help": "Clicca sin ina data/temps per vesair la versiun da lura.", @@ -2564,7 +2568,6 @@ "fileduplicatesearch-noresults": "Betg chattà ina datoteca cun il num \"$1\".", "specialpages": "Paginas spezialas", "specialpages-note-top": "Legenda", - "specialpages-note": "* Paginas spezialas normalas.\n* Paginas spezialas restrenschidas.", "specialpages-group-maintenance": "Rapports da mantegnamant", "specialpages-group-other": "Autras paginas spezialas", "specialpages-group-login": "S'annunziar / crear in conto", @@ -2583,6 +2586,7 @@ "tags": "Signalisaziuns per midadas", "tag-filter": "Filtrar las [[Special:Tags|Signalisaziuns]]:", "tag-filter-submit": "Filtrar", + "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|signalisaziun|signalisaziuns}}]]: $2)", "tags-title": "Signalisaziuns", "tags-intro": "Questa pagina mussa tut las singalisaziuns che la software po duvrar per marcar modificaziuns e declera tge ch'ellas muntan.", "tags-tag": "Num da la signalisaziun", @@ -2618,6 +2622,8 @@ "htmlform-submit": "Trametter", "htmlform-reset": "Revocar las midadas", "htmlform-selectorother-other": "Auters", + "htmlform-no": "Na", + "htmlform-yes": "Gea", "logentry-delete-delete": "$1 {{GENDER:$2|ha stizzà}} la pagina $3", "logentry-delete-restore": "$1 {{GENDER:$2|ha restaurà}} la pagina $3 ($4)", "logentry-delete-event": "$1 ha midà la visibilitad da{{PLURAL:$5|d ina occurrenza en il protocol| $5 occurrenzas en il protocol}} da '''$3''': $4", diff --git a/languages/i18n/ro.json b/languages/i18n/ro.json index 55d3bdbe5c..ea49052610 100644 --- a/languages/i18n/ro.json +++ b/languages/i18n/ro.json @@ -62,7 +62,7 @@ "tog-shownumberswatching": "Arată numărul utilizatorilor care urmăresc", "tog-oldsig": "Semnătura actuală:", "tog-fancysig": "Tratează semnătura ca wikitext (fără o legătură automată)", - "tog-uselivepreview": "Folosește previzualizarea în timp real", + "tog-uselivepreview": "Arată previzualizarea fără a reîncărca pagina", "tog-forceeditsummary": "Avertizează-mă când uit să descriu modificările", "tog-watchlisthideown": "Ascunde modificările mele din lista de pagini urmărite", "tog-watchlisthidebots": "Ascunde modificările roboților din lista de pagini urmărite", @@ -335,7 +335,7 @@ "nonwrite-api-promise-error": "Antetul HTTP „Promise-Non-Write-API-Action” a fost trimis, dar cererea s-a făcut către un modul de scriere API.", "internalerror": "Eroare internă", "internalerror_info": "Eroare internă: $1", - "internalerror-fatal-exception": "Excepție fatală pentru tipul „$1”", + "internalerror-fatal-exception": "Excepție fatală de tipul „$1”", "filecopyerror": "Fișierul \"$1\" nu a putut fi copiat la \"$2\".", "filerenameerror": "Fișierul \"$1\" nu a putut fi mutat la \"$2\".", "filedeleteerror": "Fișierul \"$1\" nu a putut fi șters.", @@ -718,8 +718,8 @@ "permissionserrorstext-withaction": "Nu aveți permisiunea să $2, din {{PLURAL:$1|următorul motiv|următoarele motive}}:", "contentmodelediterror": "Nu puteți modifica această versiune, deoarece modelul de conținut al acesteia este $1, diferit față de actualul model de conținut al paginii, care este $2.", "recreate-moveddeleted-warn": "'''Atenție: Recreați o pagină care a fost ștearsă anterior.'''\n\nAsigurați-vă că este oportună recrearea acestei pagini.\nJurnalul ștergerilor și al mutărilor pentru această pagină este disponibil:", - "moveddeleted-notice": "Această pagină a fost ștearsă.\nJurnalul ștergerilor și al redenumirilor este disponibil mai jos.", - "moveddeleted-notice-recent": "Ne cerem scuze, dar această pagină a fost ștearsă recent (în ultimele 24 de ore).\nJurnalele de ștergere și redenumire ale paginii sunt disponibile mai jos cu scop informativ.", + "moveddeleted-notice": "Această pagină a fost ștearsă.\nJurnalul ștergerilor, protejărilor și redenumirilor este disponibil mai jos.", + "moveddeleted-notice-recent": "Ne cerem scuze, dar această pagină a fost ștearsă recent (în ultimele 24 de ore).\n\nJurnalele ștergerilor, protejărilor și redenumirilor paginii sunt disponibile mai jos.", "log-fulllog": "Vezi tot jurnalul", "edit-hook-aborted": "Modificarea a fost abandonată din cauza unui hook.\nNicio explicație furnizată.", "edit-gone-missing": "Pagina nu s-a putut actualiza.\nSe pare că a fost ștearsă.", @@ -987,7 +987,7 @@ "prefs-editwatchlist-clear": "Golește-mi lista de pagini urmărite", "prefs-watchlist-days": "Numărul de zile care apar în lista paginilor urmărite:", "prefs-watchlist-days-max": "Maxim $1 {{PLURAL:$1|zi|zile}}", - "prefs-watchlist-edits": "Numărul de modificări care apar în lista extinsă a paginilor urmărite:", + "prefs-watchlist-edits": "Numărul de modificări care apar în lista de pagini urmărite:", "prefs-watchlist-edits-max": "Număr maxim: 1000", "prefs-watchlist-token": "Jeton pentru lista de pagini urmărite:", "prefs-misc": "Parametri diverși", @@ -1089,7 +1089,7 @@ "saveusergroups": "Salvează grupul de {{GENDER:$1|utilizatori}}", "userrights-groupsmember": "Membru al:", "userrights-groupsmember-auto": "Membru, implicit, al:", - "userrights-groups-help": "Puteți schimba grupul căruia îi aparține utilizatorul:\n*Căsuța bifată înseamnă că utilizatorul aparține grupului respectiv.\n*Căsuța nebifată înseamnă că utilizatorul nu aparține grupului respectiv.\n*Steluța (*) indică faptul că utilizatorul nu poate fi eliminat din grup odată adăugat, sau invers.\n* (#) indică faptul că puteti modifica data de expirare in trecut pentru acest grup o singură datăș data poate fi modificată doar in viitor.", + "userrights-groups-help": "Puteți schimba grupul căruia îi aparține utilizatorul:\n*Căsuța bifată înseamnă că utilizatorul aparține grupului respectiv.\n*Căsuța nebifată înseamnă că utilizatorul nu aparține grupului respectiv.\n*Steluța (*) indică faptul că utilizatorul nu poate fi eliminat din grup odată adăugat, sau invers.\n*Diezul (#) indică faptul că puteți modifica data de expirare doar în viitor; nu puteți să o mutați la un moment anterior.", "userrights-reason": "Motiv:", "userrights-no-interwiki": "Nu aveți permisiunea de a modifica permisiunile utilizatorilor pe alte wiki.", "userrights-nodatabase": "Baza de date $1 nu există sau nu este locală.", @@ -1303,24 +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-quickfilters": "Legături rapide", + "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": "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", @@ -1328,27 +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-filtergroup-registration": "Înregistrare utilizator", - "rcfilters-filter-registered-label": "Înregistrat", - "rcfilters-filter-registered-description": "Editorii conectați.", - "rcfilters-filter-unregistered-label": "Neînregistrat", - "rcfilters-filter-unregistered-description": "Editorii care nu sunt conectați.", - "rcfilters-filter-unregistered-conflicts-user-experience-level": "Acest filtru contravine {{PLURAL:$2|filtru|filtre}} de Experiență, care {{PLURAL:$2|găsesc|gasește}} doar userii inreistrați: $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-user-experience-level-conflicts-unregistered": "Filtrele Experiență găsesc numai utilizatori înregistrați, deci acest filtru este în conflict cu filtrul \"Înregistrat\".", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Filtrul \"Înregistrat\" ​​este în conflict cu unul sau mai multe filtre Experiență, care găsește numai utilizatorii înregistrați. Filtrele conflictuale sunt marcate în zona Filtre active, de mai sus.", + "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.", @@ -1368,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...", @@ -1381,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", @@ -1500,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.", @@ -1551,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", @@ -1895,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", @@ -2028,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", @@ -2080,10 +2080,11 @@ "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ă", "created": "creată", "changed": "modificată", "deletepage": "Șterge pagina", @@ -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:", @@ -3300,7 +3301,6 @@ "fileduplicatesearch-noresults": "Nu s-a găsit niciun fișier cu numele „$1”.", "specialpages": "Pagini speciale", "specialpages-note-top": "Legendă", - "specialpages-note": "* Pagini speciale normale.\n* Pagini speciale restricționate.", "specialpages-group-maintenance": "Întreținere", "specialpages-group-other": "Alte pagini speciale", "specialpages-group-login": "Autentificare / creare cont", @@ -3416,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)", @@ -3439,6 +3440,9 @@ "htmlform-cloner-create": "Adăugă mai mult", "htmlform-cloner-delete": "Elimină", "htmlform-cloner-required": "Este necesară cel puțin o valoare.", + "htmlform-date-placeholder": "YYYY-MM-DD", + "htmlform-time-placeholder": "HH:MM:SS", + "htmlform-datetime-placeholder": "YYYY-MM-DD HH:MM:SS", "htmlform-title-badnamespace": "[[:$1]] nu se află în spațiul de nume „{{ns:$2}}”.", "htmlform-title-not-creatable": "„$1” este un titlu de pagină inutilizabil", "htmlform-title-not-exists": "$1 nu există.", @@ -3447,7 +3451,9 @@ "logentry-delete-delete": "$1 {{GENDER:$2|a șters}} pagina $3", "logentry-delete-delete_redir": "$1 {{GENDER:$2|a șters}} pagina de redirecționare $3 prin suprascriere", "logentry-delete-restore": "$1 {{GENDER:$2|a restaurat}} pagina $3 ($4)", - "restore-count-files": "{{PLURAL:$1|1 fișier|$1 fișiere}}", + "logentry-delete-restore-nocount": "$1 {{GENDER:$2|a restaurat}} pagina $3", + "restore-count-revisions": "{{PLURAL:$1|1 versiune|$1 versiuni|$1 de versiuni}}", + "restore-count-files": "{{PLURAL:$1|1 fișier|$1 fișiere|$1 de fișiere}}", "logentry-delete-event": "$1 {{GENDER:$2|a schimbat}} vizibilitatea {{PLURAL:$5|unui eveniment din jurnal|a $5 evenimente din jurnal|a $5 de evenimente din jurnal}} pentru $3: $4", "logentry-delete-revision": "$1 {{GENDER:$2|a schimbat}} vizibilitatea {{PLURAL:$5|unei versiuni|a $5 versiuni|a $5 de versiuni}} pentru pagina $3: $4", "logentry-delete-event-legacy": "$1 {{GENDER:$2|a modificat}} vizibilitatea evenimentelor din jurnal pentru $3", @@ -3496,7 +3502,7 @@ "logentry-rights-rights-legacy": "$1 {{GENDER:$2|a schimbat}} apartenența la grup pentru $3", "logentry-rights-autopromote": "$1 {{GENDER:$2|a fost promovat|a fost promovată}} în mod automat de la $4 la $5", "logentry-upload-upload": "$1 {{GENDER:$2|a încărcat}} $3", - "logentry-upload-overwrite": "$1 {{GENDER:$2|a încărcat}} o nouă versiune pentru $3", + "logentry-upload-overwrite": "$1 {{GENDER:$2|a încărcat}} o versiune nouă pentru $3", "logentry-upload-revert": "$1 {{GENDER:$2|a încărcat}} $3", "log-name-managetags": "Jurnal gestionare etichete", "log-description-managetags": "Această pagină listează activitățile de gestionare în ceea ce privește [[Special:Tags|etichetele]]. Jurnalul conține numai acțiunile efectuate manual de către un administrator; etichetele pot fi create sau șterse de software-ul wiki fără ca vreo intrare să fie înregistrată în acest jurnal.", @@ -3657,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.", @@ -3674,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", @@ -3705,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 92c4bb1c88..06a72958e8 100644 --- a/languages/i18n/roa-tara.json +++ b/languages/i18n/roa-tara.json @@ -38,13 +38,14 @@ "tog-shownumberswatching": "Fa vedè 'u numere de le utinde ca uardene", "tog-oldsig": "'A firma toje:", "tog-fancysig": "Firma grezze cumme a 'nu teste de Uicchi (senza collegamende automatiche)", - "tog-uselivepreview": "Ause l'andeprime da 'u vive", + "tog-uselivepreview": "Face 'ndrucà l'andeprime senze recarecà 'a pàgene", "tog-forceeditsummary": "Ciércame conferme quanne stoche a 'nzerische 'nu riepighe vianghe", "tog-watchlisthideown": "Scunne le cangiaminde mije da l'elenghe de le pàggene condrollate", "tog-watchlisthidebots": "Scunne le cangiaminde de le bot da l'elenghe de le pàggene condrollate", "tog-watchlisthideminor": "Scunne le cangiaminde stuèdeche da l'elenghe de le pàggene condrollate", "tog-watchlisthideliu": "Scunne le cangiaminde de l'utinde canusciute da l'elenghe de le pàggene condrollate", "tog-watchlistreloadautomatically": "Recareche automaticamende l'eleghe de le pàggene condrollate quanne cange 'nu filtre (richieste Javascript)", + "tog-watchlistunwatchlinks": "Aggiunge collegaminde dirette pe langià/non langià le eleminde jndr'à le pàggene condrollate (vole 'u JavaScript pe ausà sta funzionalità).", "tog-watchlisthideanons": "Scunne le cangiaminde de l'utinde scanusciute da l'elenghe de le pàggene condrollate", "tog-watchlisthidepatrolled": "Scunne le cangiaminde condrollate jndr'à l'elenghe de le pàggene condrollate", "tog-watchlisthidecategorization": "Scunne 'a categorizzazzione d'a vôsce", @@ -394,6 +395,7 @@ "cannotlogin-title": "Non ge puè trasé", "cannotlogin-text": "Non ge puè trasè.", "cannotloginnow-title": "Non ge puè trasè mò", + "cannotloginnow-text": "Non ge puè trasè quanne ste ause $1.", "cannotcreateaccount-title": "Non ge pué ccrejà le cunde utinde", "yourdomainname": "'U nome d'u dominie tue:", "password-change-forbidden": "Non ge puè cangià le passuord sus a sta uicchi.", @@ -410,15 +412,18 @@ "userlogin-resetpassword-link": "T'è scurdate 'a passuord toje?", "userlogin-helplink2": "Aijute cu 'a trasute", "userlogin-loggedin": "Tu ste jndre ggià cumme a {{GENDER:$1|$1}}.\nAuse 'u module aqquà sotte pe trasè cumme a 'n'otre utende.", + "userlogin-reauth": "A trasè arrete pe verificà ca si {{GENDER:$1|$1}}.", "userlogin-createanother": "Ccreje 'n'otre cunde", "createacct-emailrequired": "Indirizze email", "createacct-emailoptional": "Indirizze email (opzionale)", "createacct-email-ph": "Mitte l'indirizze email tune", "createacct-another-email-ph": "Mitte l'indirizze email", "createaccountmail": "Ause 'na passuord temboranèe a uecchije e mannale a l'indirizze email specificate", + "createaccountmail-help": "Pò essere ausate pe ccrejà 'n'utende pe 'n'otre crestiane senze ca adda canoscere 'a passuord.", "createacct-realname": "Nome vere (opzionale)", "createacct-reason": "Mutive", "createacct-reason-ph": "Purcé tu ste ccreje 'n'otre cunde utende?", + "createacct-reason-help": "Messàgge 'ndrucate jndr'à l'archivije d'a ccrejazzione de le utinde", "createacct-submit": "Ccreje 'u cunde utende tune", "createacct-another-submit": "Ccreje 'nu cunde utende", "createacct-continue-submit": "Condinue 'a ccrejazzione de l'utende", @@ -497,6 +502,10 @@ "changepassword-success": "'A password toje ha state cangiate!", "changepassword-throttled": "Tu è pruvate 'nu sacche de vote a trasè.\nPe piacere aspitte $1 apprime de pruvà arrete.", "botpasswords": "Password d'u bot", + "botpasswords-disabled": "Le passuord bot so disabbilitate.", + "botpasswords-existing": "Passuord de le bot esistende", + "botpasswords-createnew": "Ccreje 'na passuord nove pu bot", + "botpasswords-editexisting": "Cange 'na passuord d'u bot ca esiste ggià", "botpasswords-label-appid": "Nome d'u bot:", "botpasswords-label-create": "Ccreje", "botpasswords-label-update": "Aggiorne", @@ -505,10 +514,17 @@ "botpasswords-label-resetpassword": "Azzere 'a passuord", "botpasswords-label-grants": "Assegnazziune applicabbile:", "botpasswords-label-grants-column": "Assegnazziune", + "botpasswords-bad-appid": "'U nome d'u bot \"$1\" non g'è valide.", + "botpasswords-insert-failed": "'Mbossibbile aggiungere 'u nome bot \"$1\". Ha state ggià mise?", + "botpasswords-update-failed": "'Mbossibbile aggiornà 'u nome bot \"$1\". Ha state ggià scangellate?", "botpasswords-created-title": "Passuord d'u bot ccrejate", + "botpasswords-created-body": "'A passuord pu bot de nome \"$1\" de l'utende \"$2\" ha state ccrejate.", "botpasswords-updated-title": "Passuord d'u bot cangiate", + "botpasswords-updated-body": "'A passuord pu bot de nome \"$1\" de l'utende \"$2\" ha state aggiornate.", "botpasswords-deleted-title": "Passuord d'u bot scangellate", + "botpasswords-deleted-body": "'A passuord pu bot de nome \"$1\" de l'utende \"$2\" ha state scangellate.", "resetpass_forbidden": "Le Password non ge ponne cangià", + "resetpass_forbidden-reason": "Le passuord non ge ponne essere cangiate: $1", "resetpass-no-info": "Tu a essere colleghete pe accedere a sta pàgene direttamende.", "resetpass-submit-loggedin": "Cange 'a password", "resetpass-submit-cancel": "Annulle", @@ -577,6 +593,9 @@ "minoredit": "Cangiaminde stuèdeche", "watchthis": "Condrolle sta pàgene", "savearticle": "Registre 'a vôsce", + "savechanges": "Reggistre le cangiaminde", + "publishpage": "Pubbleche 'a pàgene", + "publishchanges": "Pubbleche le cangiaminde", "preview": "Andeprime", "showpreview": "Vide l'andeprime", "showdiff": "Fa vedè le cangiaminde", @@ -637,7 +656,6 @@ "explainconflict": "Quacchedune otre ha cangete 'a pàgene apprime ca tu accumenzasse a fà 'u cangiamende tue.\n'U teste ca iacchie sus condene 'u teste d'a pàgene accume se iacchije jndr'à stu mumende.\nLe cangiaminde sonde fatte vedè jndr'à vanne de sotte.\nTu puè scuagghià le cangiaminde jndr'à 'u teste de mò.\n'''Sulamende''' 'u teste ca stè sus avène reggistrate cazzanne 'u buttone \"$1\".", "yourtext": "'U teste tue", "storedversion": "Versione archivijete", - "nonunicodebrowser": "'''FA ATTENZIO': 'U browser tue non ge capisce l'unicode.'''\n'Na fatije ste jndr'à stu poste ca te conzende de reggistrà senza probbleme 'a pàgene: le carattere ca non ge sonde ASCII le vide cumme a tanda scatele cumme a codece esadecimale.", "editingold": "'''FA ATTENZIO': Tu ste cange 'na revisione de sta pàgena scadute.'''\nCe tu a reggistre, ogne cangiamende fatte apprisse a sta revisione avène perdute.", "yourdiff": "Differenze", "copyrightwarning": "Pe piacere vide ca tutte le condrebbute de {{SITENAME}} sonde considerete de essere rilasciete sotte 'a $2 (vide $1 pe le dettaglie).\nCe tu non ge vuè ca le condrebbute tue avènene ausete da otre o avènene cangete, non le scè mettènne proprie.
    \nTu na promettere pure ca le cose ca scrive tu, sonde 'mbormaziune libbere o copiete da 'nu pubbleche dominie.
    \n'''NON METTE' NISCIUNA FATJE CA JE' PROTETTE DA DERITTE SENZA PERMESSE!'''", @@ -665,7 +683,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.", @@ -680,6 +698,8 @@ "invalid-content-data": "Condenute d'u date invalide", "content-not-allowed-here": "\"$1\" condenute non g'è permesse sus 'a pàgene [[$2]]", "editwarning-warning": "Assenne da sta pàgene tu puè perdè tutte le date ca è cangiate.\nCe tu è trasute, tu puè disabbilità st'avvertimende jndr'à sezione \"{{int:prefs-editing}}\" de le preferenze tune.", + "editpage-invalidcontentmodel-title": "'U Modelle d'u condenute non gè supportate", + "editpage-invalidcontentmodel-text": "'U modelle d'u condenute \"$1\" non g'è supportate.", "editpage-notsupportedcontentformat-title": "'U formate d'u condenute non gè supportate", "editpage-notsupportedcontentformat-text": "'U formate d'u condenute $1 non g'è supportate da 'u modelle de condenute $2.", "content-model-wikitext": "Uicchiteste", @@ -688,6 +708,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}}.", @@ -698,6 +719,7 @@ "post-expand-template-argument-warning": "Attenziò: Sta pàgene tène almene 'n'argomende de 'nu template ca jè troppe larie.\nSte argumende onne state luete.", "post-expand-template-argument-category": "Pàggene ca condenene template cu quacche argomende zumbete", "parser-template-loop-warning": "Amme acchiete 'nu cicle de template: [[$1]]", + "template-loop-category": "Pàggene cu le template ca se chiamane da sule", "parser-template-recursion-depth-warning": "Ha state supranete 'u limite di ricorsione de le template ($1)", "language-converter-depth-warning": "'U convertitore de lènghe ha subranate 'u limite de profonnetà ($1)", "node-count-exceeded-category": "Pàggene addò 'u cunde de le node ha sbunnate", @@ -823,6 +845,9 @@ "mergehistory-empty": "Nisciuna revisione pò essere scuagghiate.", "mergehistory-done": "$3 {{PLURAL:$3|revisione|revisiune}} de $1 {{PLURAL:$3|ha|onne}} state scuagghiate jndr'à [[:$2]].", "mergehistory-fail": "Non ge se pò fa vedè 'a storie d'u scuagghiamende, pe piacere verifiche 'n'otra vota a pàgene e le parametre de l'orarie.", + "mergehistory-fail-bad-timestamp": "L'orarie de stambe non g'è valide.", + "mergehistory-fail-invalid-source": "'A pàgene de origgene non g'è valide.", + "mergehistory-fail-invalid-dest": "'A pàgene de destinazione non g'è valide.", "mergehistory-fail-toobig": "Non ge pozze combletà 'u scuagghiamende s'u cunde purcé supranesce 'u limite de $1 {{PLURAL:$1|revisione|revisiune}} ca onna essere spustate.", "mergehistory-no-source": "'A pàgena sorgende $1 non g'esiste.", "mergehistory-no-destination": "'A pàgene de destinazione $1 non g'esiste.", @@ -921,7 +946,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", @@ -1135,6 +1160,25 @@ "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", + "grant-editmywatchlist": "Cange le pàggene condrollate tune", + "grant-editpage": "Cange le pàggene esistende", + "grant-editprotected": "Cange le pàggene prutette", + "grant-highvolume": "Cangiaminde massive", + "grant-patrol": "Cangiaminde condrollate a le pàggene", + "grant-privateinfo": "Accede a le 'mbormaziune private", + "grant-protect": "Protegge e sprotegge le pàggene", + "grant-uploadfile": "Careche le file nuève", + "grant-basic": "Deritte de base", + "grant-viewdeleted": "'Ndruche le file e le pàggene scangellate", + "grant-viewmywatchlist": "'Ndruche le pàggene condrollate tune", "newuserlogpage": "Archivije de ccreazione de le utinde", "newuserlogpagetext": "Quiste ète l'archivije de le creazziune de l'utinde.", "rightslog": "Archivie de le diritte de l'utende", @@ -1205,11 +1249,76 @@ "recentchanges-legend-heading": "Leggende:", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ('ndruche pure [[Special:NewPages|elenghe de le pàggene nuève]])", "recentchanges-submit": "Fà 'ndrucà", + "rcfilters-tag-remove": "Live '$1'", + "rcfilters-legend-heading": "Elenghe de le abbreviazziune:", + "rcfilters-other-review-tools": "Otre struminde de revisione", + "rcfilters-group-results-by-page": "Raggruppe le resultate pe pàgene", + "rcfilters-grouping-title": "Stoche e raggruppe", "rcfilters-activefilters": "Filtre attive", "rcfilters-advancedfilters": "Filtre avanzate", + "rcfilters-limit-title": "Cangiaminde da 'ndrucà", + "rcfilters-limit-shownum": "Fà 'ndrucà le urteme {{PLURAL:$1|cangiamende|cangiaminde}}", + "rcfilters-days-title": "Urteme sciurne", + "rcfilters-hours-title": "Urteme ore", + "rcfilters-days-show-days": "$1 {{PLURAL:$1|sciurne}}", + "rcfilters-days-show-hours": "$1 {{PLURAL:$1|ore}}", + "rcfilters-highlighted-filters-list": "Evidenziate: $1", "rcfilters-quickfilters": "Filtre reggistrate", "rcfilters-quickfilters-placeholder-title": "Nisciune collegamende reggistrate", + "rcfilters-quickfilters-placeholder-description": "Pe reggistrà le 'mbostaziune d'u filtre tune e ausarle cchiù tarde, cazze sus a l'icone segnalibbre jndr'à l'arèe \"Fitlre attive\" aqquà sotte", + "rcfilters-savedqueries-defaultlabel": "Filtre reggistrate", + "rcfilters-savedqueries-rename": "Renomene", + "rcfilters-savedqueries-setdefault": "'Mboste cumme predefinite", + "rcfilters-savedqueries-unsetdefault": "Live cumme predefinite", + "rcfilters-savedqueries-remove": "Live", + "rcfilters-savedqueries-new-name-label": "Nome", + "rcfilters-savedqueries-new-name-placeholder": "Dì a ce serve 'u filtre", "rcfilters-savedqueries-apply-label": "Ccrèje 'nu filtre", + "rcfilters-savedqueries-apply-and-setdefault-label": "Ccreje 'nu filtre de base", + "rcfilters-savedqueries-cancel-label": "Annulle", + "rcfilters-savedqueries-add-new-title": "Reggìstre le 'mbostaziune de mò d'u filtre", + "rcfilters-restore-default-filters": "Repristine le filtre de base", + "rcfilters-clear-all-filters": "Pulizze tutte le filtre", + "rcfilters-show-new-changes": "'Ndruche le urteme cangiaminde", + "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", + "rcfilters-highlightmenu-help": "Scacchie 'nu culore pe evidenzià sta probbietà", + "rcfilters-filterlist-noresults": "Nisciune filtre acchiate", + "rcfilters-filter-editsbyself-label": "Cangiaminde tune", + "rcfilters-filter-editsbyself-description": "Condrebbute tune.", + "rcfilters-filter-editsbyother-label": "Cangiaminde de l'otre", + "rcfilters-filter-editsbyother-description": "Tuue le cangiaminde ma le tune none.", + "rcfilters-filtergroup-userExpLevel": "Reggistrazzione utende e esperienze", + "rcfilters-filter-user-experience-level-registered-label": "Reggistrate", + "rcfilters-filter-user-experience-level-registered-description": "Cangiature trasute.", + "rcfilters-filter-user-experience-level-unregistered-label": "None reggistrate", + "rcfilters-filter-user-experience-level-unregistered-description": "Cangiature ca non g'onne trasute.", + "rcfilters-filter-user-experience-level-newcomer-label": "Utinde nuève", + "rcfilters-filter-user-experience-level-learner-label": "Uecchieachiuse", + "rcfilters-filter-bots-label": "Bot", + "rcfilters-filter-patrolled-label": "Condrollate", + "rcfilters-filter-patrolled-description": "Cangiaminde signate cumme condrollate.", + "rcfilters-filter-unpatrolled-label": "Non condrollate", + "rcfilters-filter-unpatrolled-description": "Cangiaminde non signate cumme condrollate.", + "rcfilters-filtergroup-significance": "Significate", + "rcfilters-filter-minor-label": "Cangiaminde stuèdeche", + "rcfilters-filter-watchlist-watched-label": "Jndr'à le pàggene condrollate", + "rcfilters-filter-watchlist-notwatched-label": "Fore da le pàggene condrollate", + "rcfilters-filtergroup-changetype": "Tipe de cangiamende", + "rcfilters-filter-pageedits-label": "Cangiaminde d'a pàgene", + "rcfilters-filtergroup-lastRevision": "Urteme revisiune", + "rcfilters-filter-lastrevision-label": "Urtema revisione", + "rcfilters-filter-lastrevision-description": "Sulamende le urteme cangiamende a 'na pàgene.", + "rcfilters-filter-previousrevision-label": "Non g'è l'urtema versione", + "rcfilters-filter-excluded": "Scettate", + "rcfilters-tag-prefix-namespace-inverted": ":non $1", + "rcfilters-exclude-button-off": "Scitte le scacchiate", + "rcfilters-exclude-button-on": "Scettanne le scacchiate", + "rcfilters-view-advanced-filters-label": "Filtre avanzate", + "rcfilters-view-tags": "Cangiaminde taggate", "rcnotefrom": "Sotte {{PLURAL:$5|ste 'u cangiamende|stonne le cangiaminde}} da $3, $4 ('nzigne a $1 fatte vedè).", "rclistfrom": "Fà vedè le urteme cangiaminde partenne da $3 $2", "rcshowhideminor": "$1 cangiaminde stuèdeche", @@ -1230,6 +1339,8 @@ "rcshowhidemine": "$1 cangiaminde mie", "rcshowhidemine-show": "Fà vedè", "rcshowhidemine-hide": "Scunne", + "rcshowhidecategorization-show": "Fà 'ndrucà", + "rcshowhidecategorization-hide": "Scunne", "rclinks": "Vide l'urteme $1 cangiaminde jndr'à l'urteme $2 sciurne", "diff": "diff", "hist": "cunde", @@ -1355,6 +1466,7 @@ "upload-copy-upload-invalid-domain": "'A copie de le carecaminde non g'è disponibbile da stu dominie.", "upload-dialog-title": "Careche 'u file", "upload-dialog-button-cancel": "Annulle", + "upload-dialog-button-back": "Rrete", "upload-dialog-button-done": "Fatte", "upload-dialog-button-save": "Reggìstre", "upload-dialog-button-upload": "Careche", @@ -1455,7 +1567,7 @@ "listfiles_size": "Dimenzione", "listfiles_description": "Descrizione", "listfiles_count": "Versiune", - "listfiles-show-all": "'Nglude le versiune vicchie de le immaggine", + "listfiles-show-all": "'Nglude le versiune vicchie de le file", "listfiles-latestversion": "Versione de mò", "listfiles-latestversion-yes": "Sìne", "listfiles-latestversion-no": "None", @@ -1612,6 +1724,7 @@ "mostrevisions": "Pàggene cchiù cangete", "prefixindex": "Tutte le pàggene cu 'u prefisse", "prefixindex-namespace": "Tutte le pàggene cu 'u prefisse ($1 namespace)", + "prefixindex-submit": "Fà 'ndrucà", "prefixindex-strip": "Strisce d'u prefisse jndr'à l'elenghe", "shortpages": "Pàggene corte", "longpages": "Pàggene longhe", @@ -1629,11 +1742,13 @@ "protectedpages-performer": "Stoche a protegge l'utende", "protectedpages-params": "Parametre de protezzione", "protectedpages-reason": "Mutive", + "protectedpages-submit": "Fà 'ndrucà le pàggene", "protectedpages-unknown-timestamp": "Scanusciute", "protectedpages-unknown-performer": "Utende scanusciute", "protectedtitles": "Titele prutette", "protectedtitles-summary": "Sta pàgene elenghe le titole ca so prutette da 'a ccrejazzione. Pe 'n'elenghe de le pàggene ca sò prutette, 'ndruche [[{{#special:ProtectedPages}}|{{int:protectedpages}}]].", "protectedtitlesempty": "Nisciune titele jè pe mò prutette cu ste parametre.", + "protectedtitles-submit": "Fà 'ndrucà le titole", "listusers": "Liste de l'utende", "listusers-editsonly": "Fà vedè sulamende l'utinde cu cangiaminde fatte", "listusers-creationsort": "Arrenghete pe date de ccreazione", @@ -1641,6 +1756,7 @@ "usereditcount": "$1 {{PLURAL:$1|cangiamende|cangiaminde}}", "usercreated": "{{GENDER:$3|Ccrejate}} 'u $1 a le ore $2", "newpages": "Pàggene nuève", + "newpages-submit": "Fà 'ndrucà", "newpages-username": "Nome de l'utende:", "ancientpages": "Pàggene vìcchje", "move": "Spuèste", @@ -1660,12 +1776,18 @@ "apisandbox": "Sandbox de l'API", "apisandbox-api-disabled": "API non g'è abbiletate sus a stu site.", "apisandbox-intro": "Ause sta pàgene pe sperimendà cu le API de le web service pe MediaUicchi.\nFà referimende a [[mw:API:Main page| 'a documendazione de l'API]] pe cchiù dettaglie de l'ause de l'API.\nEsembie: [https://www.mediawiki.org/wiki/API#A_simple_example pigghie 'u condenute d'a Pàgene Prengepàle]. Scacchie 'n'azione pe 'ndrucà otre esembie.\n\nVide ca, pure ca queste jè 'na buatte de sabbie tu puè carrescià le cangiaminde de sta pàgene sus 'a uicchi.", + "apisandbox-unfullscreen": "Fà 'ndrucà 'a pàgene", "apisandbox-submit": "Fà 'na richieste", "apisandbox-reset": "Pulizze", + "apisandbox-retry": "Pruève arrete", "apisandbox-examples": "Esembie", "apisandbox-results": "Resultate", "apisandbox-request-url-label": "URL richieste:", "apisandbox-request-time": "Tiembe cercate: {{PLURAL:$1|$1 ms}}", + "apisandbox-continue": "Condinue", + "apisandbox-continue-clear": "Pulizze", + "apisandbox-multivalue-all-namespaces": "$1 (Tutte le namespace)", + "apisandbox-multivalue-all-values": "$1 (Tutte le valore)", "booksources": "Sorgende de le libbre", "booksources-search-legend": "Cirche pe le fonde de le libbre", "booksources-isbn": "ISBN:", @@ -1675,12 +1797,17 @@ "specialloguserlabel": "'Mblemendatore:", "speciallogtitlelabel": "Destinazione (titole o {{ns:user}}:nome de l'utende pe l'utende):", "log": "Archivije", + "logeventslist-submit": "Fà 'ndrucà", "all-logs-page": "Tutte l'archivije pubbleche", "alllogstext": "Visualizzazione combinate de tutte le archivije disponibbele sus a {{SITENAME}}.\nTu puè restringere 'a viste selezionanne 'u tipe de archivije, 'u nome utende (senzibbile a le maiuscole), o le pàggene coinvolte (pure chiste senzibbile a le maiuscole).", "logempty": "Non ge stè 'n'anema de priatorie jndr'à l'archivije.", "log-title-wildcard": "Cirche le titele ca accumenzene cu stu teste", "showhideselectedlogentries": "Fà vedè/scunne le righe scacchiate de l'archivije", "log-edit-tags": "Cange le tag de 'na vôsce de l'archivije scacchiate", + "checkbox-select": "Scacchie: $1", + "checkbox-all": "Tutte", + "checkbox-none": "Ninde", + "checkbox-invert": "'Nverte", "allpages": "Tutte le pàggene", "nextpage": "Pàgene apprisse ($1)", "prevpage": "Pàgene apprime ($1)", @@ -1697,6 +1824,7 @@ "cachedspecial-viewing-cached-ts": "Tu ste vide 'na versione jndr'à cache de sta pàgene, 'a quale pò essere ca non g'è attuale.", "cachedspecial-refresh-now": "Vide l'urteme.", "categories": "Le Categorije", + "categories-submit": "Fà 'ndrucà", "categoriespagetext": "{{PLURAL:$1|'A seguende categorije tène|Le seguende categorije tènene}} pàggene o media.\n[[Special:UnusedCategories|Categorije non ausate]] non ge se vèdene aqquà.\nVide pure [[Special:WantedCategories|Categorije cercate]].", "categoriesfrom": "Fà vedè le categorije partenne da:", "deletedcontributions": "Condrebbute de l'utende scangellete", @@ -1738,6 +1866,9 @@ "listgrouprights-namespaceprotection-header": "Diviete sus a 'u namespace", "listgrouprights-namespaceprotection-namespace": "Namespace", "listgrouprights-namespaceprotection-restrictedto": "Deritte ca permettone a l'utende de cangià", + "listgrants": "Assegnaziune", + "listgrants-grant": "Assegnazione", + "listgrants-rights": "Deritte", "trackingcategories": "Categorije de tracciamende", "trackingcategories-summary": "Sta pàgene elenghe le categorije de tracciamende le quale automaticamende se ienghiene cu 'u software de mediaUicchi. Le nome lore ponne essere cangiate, cangianne le messàgge de sisteme jndr'à 'u {{ns:8}} namespace.", "trackingcategories-msg": "Categorije de tracciamende", @@ -1800,11 +1931,20 @@ "unwatchthispage": "No condrollà cchiù 'a pàgene", "notanarticle": "Non g'è 'na vosce", "notvisiblerev": "'A revisione ha state scangellete", - "watchlist-details": "{{PLURAL:$1|$1 pàgene|$1 pàggene}} jndr'à l'elenghe de le pàggene condrollate, scartanne le pàggene de le 'ngazzaminde.", + "watchlist-details": "{{PLURAL:$1|$1 pàgene jè|$1 pàggene stonne}} jndr'à l'elenghe de le pàggene condrollate (cchiù le pàggene de le 'ngazzaminde).", "wlheader-enotif": "* Notifiche pe email abbilitate.", "wlheader-showupdated": "* Le pàggene ca onne state cangiate da l'urtema visite avènene fatte vedè in '''grascette'''", "wlnote": "Aqquà sotte {{PLURAL:$1|ste l'urteme cangiamende|stonne l'urteme $1 cangiaminde}} jndr'à {{PLURAL:$2|l'urtema ore|l'urteme $2 ore}}, jndr'à $3, $4.", "wlshowlast": "Vide l'urteme $1 ore $2 sciurne", + "watchlist-hide": "Scunne", + "watchlist-submit": "Fà 'ndrucà", + "wlshowhideminor": "cangiaminde stuèdeche", + "wlshowhidebots": "bot", + "wlshowhideliu": "utinde reggistrate", + "wlshowhideanons": "utinde anonime", + "wlshowhidepatr": "cangiaminde condrollate", + "wlshowhidemine": "cangiaminde mie", + "wlshowhidecategorization": "categorizzazzione d'a pàgene", "watchlist-options": "Opzione d'a liste de le pàggene condrollete", "watching": "Fà vedè...", "unwatching": "No fà vedè...", @@ -1825,6 +1965,7 @@ "enotif_lastdiff": "Pe 'ndrucà stu cangiamende, 'ndruche $1", "enotif_anon_editor": "Utende anonime $1", "enotif_body": "Care $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nRiepileghe de le cangiaminde: $PAGESUMMARY $PAGEMINOREDIT\n\nCondatte 'u cangiatore:\nmail: $PAGEEDITOR_EMAIL\nuicchi: $PAGEEDITOR_WIKI\n\nNon ge stonne otre notifiche ce tu face otre attivitate senze ca tu visite sta pàgene.\nTu puè pure azzerà 'a spunde de le notifiche pe tutte le pàggene condrollate jndr'à l'elenghe tune.\n\nStatte Bbuene, 'u sisteme de notificaziune de {{SITENAME}}\n\n--\nPe cangià le 'mbostaziune de notifeche de l'email toje, vè vide\n{{canonicalurl:{{#special:Preferences}}}}\n\nPe cangià le 'mbostaziune de l'elenghe de le pàggene condrollate tune, vè vide\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nPe scangellà 'a pàgene da l'elenghe de le pàggene condrollate, vè vide\n$UNWATCHURL\n\nSegnalaziune e otre assistenze:\n$HELPPAGE", + "enotif_minoredit": "Quiste ète 'nu cangiamende stuèdeche", "created": "ccrejete", "changed": "cangete", "deletepage": "Scangille 'a pàgene", @@ -1835,6 +1976,7 @@ "delete-confirm": "Scangille \"$1\"", "delete-legend": "Scangille", "historywarning": "Vide Bbuene: 'A pàgene ca ste scangille tène 'na storie de cangiaminde cu cchiù o mene $1 {{PLURAL:$1|revisione|revisiune}}:", + "historyaction-submit": "Fà 'ndrucà", "confirmdeletetext": "Vide Bbuene, vide ca ste scangille 'na pàgene ca tène pure nu sbuenne de cangiaminde.\nConferme quidde ca ste face, ce si sicure ca è capite quidde ca ste cumbine e ce è corrette rispette a [[{{MediaWiki:Policy-url}}|le regole de scangellazione]], ce no statte quiete.", "actioncomplete": "Aziona Combletete", "actionfailed": "Aziona fallite", @@ -1870,6 +2012,7 @@ "changecontentmodel-title-label": "Titole d'a vôsce", "changecontentmodel-model-label": "Modelle de vôsce de condenute nuève", "changecontentmodel-reason-label": "Mutive:", + "changecontentmodel-submit": "Cange", "changecontentmodel-success-title": "'U modelle d'u condenute ha cangiate", "changecontentmodel-success-text": "'U tipe d'u condenute de [[:$1]] ha state cangiate.", "changecontentmodel-cannot-convert": "'U condenute sus a [[:$1]] non ge pò essere convertite jndr'à 'u tipe $2.", @@ -1881,6 +2024,9 @@ "modifiedarticleprotection": "'u levèlle de protezione ha state cangete pe \"[[$1]]\"", "unprotectedarticle": "sprutette da \"[[$1]]\"", "movedarticleprotection": "'mbostaziune de protezzione spustate da \"[[$2]]\" a \"[[$1]]\"", + "protectedarticle-comment": "{{GENDER:$2|Prutette}} \"[[$1]]\"", + "modifiedarticleprotection-comment": "{{GENDER:$2|Cangiate 'u levélle de protezzione}} pe \"[[$1]]\"", + "unprotectedarticle-comment": "{{GENDER:$2|Luate 'a protezzione}}da \"[[$1]]\"", "protect-title": "Cange levèlle de protezione pe \"$1\"", "protect-title-notallowed": "Vide 'u levèlle de protezione pe \"$1\"", "prot_1movedto2": "[[$1]] spustete jndr'à [[$2]]", @@ -1999,6 +2145,7 @@ "sp-contributions-username": "Indirizze IP o nome de l'utende:", "sp-contributions-toponly": "Sulamende facenne vedè le cangiaminde de l'urteme revisiune", "sp-contributions-newonly": "Fà vedè sulamende le cangiaminde ca onne ccrejate 'a pàgene", + "sp-contributions-hideminor": "Scunne le cangiaminde stuèdeche", "sp-contributions-submit": "Cirche", "whatlinkshere": "Appondene aqquà", "whatlinkshere-title": "Pàggene ca appondene a \"$1\"", @@ -2017,6 +2164,7 @@ "whatlinkshere-hidelinks": "$1 collegaminde", "whatlinkshere-hideimages": "$1 collegaminde da file", "whatlinkshere-filters": "Filtre", + "whatlinkshere-submit": "Véje", "autoblockid": "Autoblocche #$1", "block": "Bluècche l'utende", "unblock": "Sbluècche l'utende", @@ -2050,6 +2198,7 @@ "ipb-unblock": "Sblocche nome utende o indirizze IP", "ipb-blocklist": "Vide le blocche ca esistene", "ipb-blocklist-contribs": "Condrebbute pe {{GENDER:$1|$1}}", + "ipb-blocklist-duration-left": "$1 mangande", "unblockip": "Sblocche l'utende", "unblockiptext": "Ause 'a maschera aqquà sotte pe repristinà l'accesse in scritture a le indirizze IP o a le cunde utinde ca apprime avèrene state bloccate.", "ipusubmit": "Live stu blocche", @@ -2058,6 +2207,13 @@ "unblocked-id": "Blocche $1 ha state luvete", "unblocked-ip": "[[Special:Contributions/$1|$1]] ha state sbloccate.", "blocklist": "Utinde bloccate", + "autoblocklist": "Autoblocche", + "autoblocklist-submit": "Cirche", + "autoblocklist-legend": "Elenghe de l'autoblocche", + "autoblocklist-localblocks": "{{PLURAL:$1|Autoblocche}} locale", + "autoblocklist-total-autoblocks": "Numere totale de auyoblocche: $1", + "autoblocklist-empty": "L'elenghe de le autoblocche jè vacande.", + "autoblocklist-otherblocks": "Otre {{PLURAL:$1|autoblocche}}", "ipblocklist": "Utinde bloccate", "ipblocklist-legend": "Iacchije 'n'utende blocchete", "blocklist-userblocks": "Scunne le blocche sus a le cunde de l'utinde", @@ -2141,8 +2297,8 @@ "lockedbyandtime": "(de $1 'u $2 a le $3)", "move-page": "Spuèste $1", "move-page-legend": "Spuèste 'a pàgene", - "movepagetext": "Ausanne 'u form aqquà sotte ste cange 'u nome d'a pàgene, spustanne tutte 'a storia soje sus a 'u nome nuéve.\nU' vecchie titole devènde 'nu ridirezionamende sus 'a pàgena nove.\nTu puè aggiornà 'u ridirezionamende ca apponde a 'u titole origgenale automaticamende.\nCe tu no ste scacchie, sta secure de condrollà [[Special:DoubleRedirects|doppie ridirezionaminde]] o [[Special:BrokenRedirects|ridirezionaminde scuasciate]].\nTu si 'u responsabbile de quidde ca cumbine, assicurate ca 'u collegamende condinue a appondà addò avessa scè.\n\nVide Bbuene ca 'a pàgene '''non''' g'avène spustate ce esiste n'otra pàgene cu 'u titole nuéve, a mene ca jè vacande o jè 'na pàgene de ridirezionamende senza storie.\nQuieste significhe ca tu puè fà turnà 'u vecchie nome 'a pàgene ce jedde ha state renomenate e t'è rese conde ca è fatte 'na studecarije sovrascrevènne 'na pàgene esistende.\n\n'''ATTENZIONE!'''\nQuiste pò essere 'nu cangiamende drastiche e inaspettate de 'na pàgene famose assaje;\npe piacere a essere secure-secure de le conseguenze apprime de condinuà.", - "movepagetext-noredirectfixer": "Ausanne 'u module aqquà sotte puè renomenà 'na pàgene, spustanne tutte 'a storia soje sotte a 'u nome nuève.\n'U titele vecchie addevende 'na pàgene de ridirezionamende a 'u titele nuève.\nMe raccomande condrolle le redirezionaminde [[Special:DoubleRedirects|a doppie]] o [[Special:BrokenRedirects|scuasciate]].\nTu si responsabbele de assicurarte ca le collagaminde appondene a 'u punde giuste.\n\nVide ca 'a pàgene '''non''' g'avene spustate ce già stè 'na pàgene cu 'u titele nuève, a meno che non g'è vacande o jè 'nu ridirezionamende e non ge tène 'na storie de cangiaminde.\nQuiste signifeche ca jè possibbele renominà 'na pàgene accume se chiamave apprime addò tu è fatte 'n'errore e non g'è possibbele sovrascirevere 'na pàgene esistende.\n\n'''Fà Attenziò!'''\nQuiste pò essere 'nu cangiamende inaspettate pe 'na pàgene popolare;\nPe piacere ha essere secure secure de avere capite le conzeguenze apprime de scè nnande.", + "movepagetext": "Ausanne 'u form aqquà sotte ste cange 'u nome d'a pàgene, spustanne tutte 'a storia soje sus a 'u nome nuéve.\nU' vecchie titole devènde 'nu ridirezionamende sus 'a pàgena nove.\nTu puè aggiornà 'u ridirezionamende ca apponde a 'u titole origgenale automaticamende.\nCe tu no ste scacchie, sta secure de condrollà [[Special:DoubleRedirects|doppie ridirezionaminde]] o [[Special:BrokenRedirects|ridirezionaminde scuasciate]].\nTu si 'u responsabbile de quidde ca cumbine, assicurate ca 'u collegamende condinue a appondà addò avessa scè.\n\nVide Bbuene ca 'a pàgene non g'avène spustate ce esiste n'otra pàgene cu 'u titole nuéve, a mene ca jè vacande o jè 'na pàgene de ridirezionamende senza storie.\nQuieste significhe ca tu puè fà turnà 'u vecchie nome 'a pàgene ce jedde ha state renomenate e t'è rese conde ca è fatte 'na studecarije sovrascrevènne 'na pàgene esistende.\n\nATTENZIONE!\nQuiste pò essere 'nu cangiamende drastiche e inaspettate de 'na pàgene famose assaje;\npe piacere a essere secure-secure de le conseguenze apprime de condinuà.", + "movepagetext-noredirectfixer": "Ausanne 'u module aqquà sotte puè renomenà 'na pàgene, spustanne tutte 'a storia soje sotte a 'u nome nuève.\n'U titele vecchie addevende 'na pàgene de ridirezionamende a 'u titele nuève.\nMe raccomande condrolle le redirezionaminde [[Special:DoubleRedirects|a doppie]] o [[Special:BrokenRedirects|scuasciate]].\nTu si responsabbele de assicurarte ca le collagaminde appondene a 'u punde giuste.\n\nVide ca 'a pàgene non g'avene spustate ce già stè 'na pàgene cu 'u titele nuève, a meno che non g'è vacande o jè 'nu ridirezionamende e non ge tène 'na storie de cangiaminde.\nQuiste signifeche ca jè possibbele renominà 'na pàgene accume se chiamave apprime addò tu è fatte 'n'errore e non g'è possibbele sovrascirevere 'na pàgene esistende.\n\nFà Attenziò!\nQuiste pò essere 'nu cangiamende inaspettate pe 'na pàgene popolare;\nPe piacere ha essere secure secure de avere capite le conzeguenze apprime de scè nnande.", "movepagetalktext": "Ce tu cazze sta buatte, 'A pàgene de le 'ngazzaminde associate avène spustate automaticamende, sembre ca non g'esisite 'n'otra pàgene de le 'ngazzaminde.\n\nJndr'à stu case, 'a pàgene non g'avène spustate e pò t'a cupià a màne 'u condenute sue.", "moveuserpage-warning": "'''Attenziò:''' Tu stè spuèste 'na pàgene utende. Vide bbuène ca sulamende 'a pàgene avène spustate ma l'utende ''non'' g'avene renomenate.", "movecategorypage-warning": "Attenziò: Tu vuè ccu spuéste 'na pàgene categorije. Vide ca sulamende 'a pàgene avène spustate ma tutte le pàggene ca stonne jndr'à categorije non g'avène spustate sotte a quedda nove.", @@ -2273,7 +2429,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.", @@ -2402,7 +2558,9 @@ "pageinfo-length": "Lunghezze d'a pàgene (in byte)", "pageinfo-article-id": "ID d'a pàgene", "pageinfo-language": "Lènga d'a pàgene de condenute", + "pageinfo-language-change": "cange", "pageinfo-content-model": "Modelle de vôsce de condenute", + "pageinfo-content-model-change": "cange", "pageinfo-robot-policy": "Indicizzate da le robbot", "pageinfo-robot-index": "Permesse", "pageinfo-robot-noindex": "Non permesse", @@ -2438,8 +2596,10 @@ "pageinfo-category-pages": "Numere de pàggene", "pageinfo-category-subcats": "Numere de sottocategorije", "pageinfo-category-files": "Numere de file", + "pageinfo-user-id": "ID de l'utende", "markaspatrolleddiff": "Signe cumme condrollate", "markaspatrolledtext": "Signe sta pàgene cumme condrollate", + "markaspatrolledtext-file": "Signe stu file cumme condrollate", "markedaspatrolled": "Signate cumme condrollate", "markedaspatrolledtext": "'A revisiona scacchiate de [[:$1]] ha state signate cumme condrollate.", "rcpatroldisabled": "Condrolle de l'Urteme Cangiaminde disabbilitate", @@ -2453,6 +2613,8 @@ "patrol-log-header": "Quiste è l'archivije de le revisiune condrollate.", "log-show-hide-patrol": "$1 archivije de le condrolle", "log-show-hide-tag": "$1 archivije de le tag", + "confirm-markpatrolled-button": "OK", + "confirm-markpatrolled-top": "Signe 'a revisione $3 de $2 cumme condrollate?", "deletedrevision": "Vecchia revisione scangellete $1", "filedeleteerror-short": "Errore mentre stè scangelleve 'u file: $1", "filedeleteerror-long": "Quanne ste scangelleve 'u file s'onne presendede ste errore:\n\n$1", @@ -2491,8 +2653,13 @@ "newimages-summary": "Sta pàgena speciale face vedè l'urteme file carecate.", "newimages-legend": "Filtre", "newimages-label": "Nome d'u fail (o 'nu stuezze de jidde):", + "newimages-user": "Indirizze IP o nome de l'utende", + "newimages-newbies": "Fà 'ndrucà sulamende le condrebbute de le utinde nuève", "newimages-showbots": "Fà vedè le scarecaminde da bot", + "newimages-hidepatrolled": "Scunne le carecaminde condrollate", + "newimages-mediatype": "Tipe de media:", "noimages": "Non ge stè ninde da vedè.", + "gallery-slideshow-toggle": "Live e mitte le miniature", "ilsubmit": "Cirche", "bydate": "pe date", "sp-newimages-showfrom": "Fa vedè le file nuève partenne da $2, $1", @@ -2757,6 +2924,7 @@ "exif-compression-34712": "JPEG2000", "exif-copyrighted-true": "Sotte copyright", "exif-copyrighted-false": "Pubbleche dominie", + "exif-photometricinterpretation-1": "Vianghe e gnure (gnure jè 0)", "exif-photometricinterpretation-2": "RGB", "exif-photometricinterpretation-6": "YCbCr", "exif-unknowndate": "Data scanusciute", @@ -2949,6 +3117,8 @@ "confirmemail_body_set": "Quacchedune, pò essere tu, da l'indirizze IP $1,\nha cangiate l'indirizze e-mail d'u cunde utende \"$2\" cu st'indirizze e-mail sus a {{SITENAME}}.\n\nPe confermà ca stu cunde ète avveramende 'u tune e pe attivà 'a funzione email de {{SITENAME}}, iapre stu collegamende jndr'à 'u browser tune:\n\n$3\n\nCe tu *NON* g'è reggistrate 'u cunde utende, segue stu collegamende pe scangellà l'indirizze email de conferme:\n\n$5\n\nStu codece de conferme scade 'u $4.", "confirmemail_invalidated": "Conferme de l'indirizze e-mail scangellete", "invalidateemail": "Scangille 'a conferme de l'e-mail", + "notificationemail_subject_changed": "L'indirizze email reggistrate sus a {{SITENAME}} ha state cangiate", + "notificationemail_subject_removed": "L'indirizze email reggistrate sus a {{SITENAME}} ha state luate", "scarytranscludedisabled": "[Collegaminde 'mbrà InterUicchi disabbilitate]", "scarytranscludefailed": "[L'analisi d'u template ha fallite pe $1]", "scarytranscludefailed-httpstatus": "[Analise d'u template fallite pe $1: HTTP $2]", @@ -2965,6 +3135,7 @@ "confirm-watch-top": "Vuè ccu mitte sta pàgene da chidde condrollate?", "confirm-unwatch-button": "OK", "confirm-unwatch-top": "Vuè ccu live sta pàgene da chidde condrollate?", + "confirm-rollback-button": "OK", "semicolon-separator": "; ", "comma-separator": ", ", "colon-separator": ": ", @@ -3096,6 +3267,7 @@ "hebrew-calendar-m12-gen": "Elul", "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|'ngazzaminde]])", "timezone-utc": "UTC", + "timezone-local": "Locale", "duplicate-defaultsort": "'''Attenziò:''' 'A chiave de arrangamende de default \"$2\" sovrascrive quedda precedende \"$1\".", "duplicate-displaytitle": "Attenziò: 'U titole da vedè \"$2\" sovrascrive 'u titole da vedè \"$1\".", "invalid-indicator-name": "Errore: Le indicature name de state d'a pàgene non ge ponne avè l'attribute vacande.", @@ -3154,6 +3326,7 @@ "redirect-page": "ID d'a pàgene", "redirect-revision": "Revisione d'a pàgene", "redirect-file": "Nome d'u file", + "redirect-logid": "ID de l'archivije", "redirect-not-exists": "Valore non acchiate", "fileduplicatesearch": "Cirche pe le file duplichete", "fileduplicatesearch-summary": "Cirche pe file duplichete sus a base d'u valore hash.", @@ -3165,7 +3338,7 @@ "fileduplicatesearch-noresults": "Nisciune file chiamate \"$1\" ha state acchiate.", "specialpages": "Pàggene speciele", "specialpages-note-top": "Leggende", - "specialpages-note": "* Pàggene speciale normale.\n* Pàggene speciale cu le restriziune.", + "specialpages-note-restricted": "* Pàggene speciale normale.\n* Pàggene speciale cu le restriziune.", "specialpages-group-maintenance": "Report d'a manutenzione", "specialpages-group-other": "Otre pàggene speciele", "specialpages-group-login": "Tràse / Reggistrate", @@ -3186,6 +3359,7 @@ "tag-filter": "Filtre de le [[Special:Tags|tag]]:", "tag-filter-submit": "Filtre", "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Tag}}]]: $2)", + "tag-mw-contentmodelchange": "cangiamende d'u modelle de condenute", "tags-title": "Tag", "tags-intro": "Sta pàgene elenghe le tag ca 'u software pò marcà cu 'nu cangiamende e 'u lore significate.", "tags-tag": "Nome d'u tag", @@ -3278,6 +3452,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)", @@ -3301,7 +3476,16 @@ "htmlform-cloner-create": "Aggiunge 'n'otre", "htmlform-cloner-delete": "Live", "htmlform-cloner-required": "Almene 'nu valore l'a mettere.", + "htmlform-date-placeholder": "AAAA-MM-GG", + "htmlform-time-placeholder": "HH:MM:SS", + "htmlform-datetime-placeholder": "AAAA-MM-GG HH:MM:SS", + "htmlform-date-invalid": "'U valore specificate non jè 'na date. Pruéve ausanne 'u formate AAAA-MM-GG.", + "htmlform-time-invalid": "'U valore specificate non jè 'na date. Pruéve ausanne 'u formate HH:MM:SS", + "htmlform-datetime-invalid": "'U valore specificate non jè 'na date. Pruéve ausanne 'u formate AAAA-MM-GG HH:MM:SS", + "htmlform-date-toolow": "'U valore specificate avène apprime da date congesse de $1.", + "htmlform-date-toohigh": "'U valore specificate avène apprisse da date congesse de $1.", "htmlform-title-badnamespace": "[[:$1]] non ge stè jndr'à 'u namespace \"{{ns:$2}}\".", + "htmlform-title-not-creatable": "\"$1\" jè 'nu titole de 'na pàgene ca no se pò ccrejà", "htmlform-title-not-exists": "$1 non g'esiste.", "htmlform-user-not-exists": "$1 non g'esiste.", "htmlform-user-not-valid": "$1 non g'è 'nu nome utende valide.", @@ -3444,6 +3628,9 @@ "pagelang-language": "Lènghe", "pagelang-use-default": "Ause 'a lènghe de base", "pagelang-select-lang": "Scacchie 'a lènghe", + "pagelang-reason": "Mutive", + "pagelang-submit": "Conferme", + "pagelang-nonexistent-page": "'A pàgene $1 non g'esiste.", "right-pagelang": "Cange 'a lènghe d'a pàgene", "action-pagelang": "cange 'a lènghe d'a pàgene", "log-name-pagelang": "Archivije de le cangiaminde d'a lènghe", @@ -3470,6 +3657,7 @@ "mediastatistics-header-text": "Testuale", "mediastatistics-header-executable": "Eseguibbile", "mediastatistics-header-archive": "Formate combresse", + "mediastatistics-header-total": "Tutte le file", "json-warn-trailing-comma": "$1 de prove {{PLURAL:$1|'a virgole ha |le virgole onne }} state luate da JSON", "json-error-unknown": "Ha assute 'nu probbleme cu 'u JSON. Errore: $1", "json-error-depth": "'A profonnetà massime d'a pile ha state sbunnate", @@ -3486,6 +3674,7 @@ "special-characters-group-ipa": "IPA", "special-characters-group-symbols": "Simbole", "special-characters-group-greek": "Greche", + "special-characters-group-greekextended": "Greche estese", "special-characters-group-cyrillic": "Cirilliche", "special-characters-group-arabic": "Arabe", "special-characters-group-arabicextended": "Estenziune arabe", @@ -3500,12 +3689,70 @@ "special-characters-group-thai": "Thai", "special-characters-group-lao": "Lao", "special-characters-group-khmer": "Khmer", + "special-characters-group-canadianaboriginal": "Canadese aboriggene", "special-characters-title-endash": "trattine en", "special-characters-title-emdash": "trattine em", "special-characters-title-minus": "segne mene", "mw-widgets-dateinput-no-date": "Nisciune date scacchiate", + "mw-widgets-mediasearch-input-placeholder": "Cirche le media", + "mw-widgets-mediasearch-noresults": "Nisciune resultate acchiate.", "mw-widgets-titleinput-description-new-page": "'a pàgene non g'esiste angore", "mw-widgets-titleinput-description-redirect": "redirezionate sus a $1", + "mw-widgets-categoryselector-add-category-placeholder": "Aggiunge 'na categorije...", + "mw-widgets-usersmultiselect-placeholder": "Aggiunge de cchiù...", + "date-range-from": "Da 'a date:", + "date-range-to": "'Mbonde 'a date:", "randomrootpage": "Pàgene prengepàle a uecchije", - "gotointerwiki": "Ste lasse {{SITENAME}}" + "log-action-filter-block": "Tipe de blocche:", + "log-action-filter-contentmodel": "Tipe de cangiamende d'u modelle de condenute:", + "log-action-filter-delete": "Tipe de scangellazzione:", + "log-action-filter-import": "Tipe de 'mbortazione:", + "log-action-filter-managetags": "Tipe de azione de gestione etichette:", + "log-action-filter-move": "Tipe de spustamende:", + "log-action-filter-newusers": "Tipe de ccreazione de cunde:", + "log-action-filter-patrol": "Tipe de condrolle:", + "log-action-filter-protect": "Tipe de protezzione:", + "log-action-filter-rights": "Tipe de cangiamende de le deritte:", + "log-action-filter-suppress": "Tipe de soppressione:", + "log-action-filter-upload": "Tipe de carecamende:", + "log-action-filter-all": "Tutte", + "log-action-filter-block-block": "Blocche", + "log-action-filter-block-reblock": "Cangiamende d'u blocche", + "log-action-filter-block-unblock": "Sblocche", + "log-action-filter-contentmodel-change": "Cange 'u modelle de condenute", + "log-action-filter-delete-delete": "Scangellazzione d'a pàgene", + "log-action-filter-delete-event": "Scangellazzione de l'archivije", + "log-action-filter-delete-revision": "Scangellazzione d'a revisione", + "log-action-filter-managetags-create": "Ccrejazzione d'u tag", + "log-action-filter-managetags-delete": "Scangellazzione d'u tag", + "log-action-filter-managetags-activate": "Attivazione d'u tag", + "log-action-filter-managetags-deactivate": "Disattivazione d'u tag", + "log-action-filter-rights-rights": "Cangiamende a màne", + "log-action-filter-rights-autopromote": "Cangiamende automateche", + "log-action-filter-suppress-event": "Soppressione de l'archivije", + "log-action-filter-suppress-revision": "Soppressione d'a revisione", + "log-action-filter-suppress-delete": "Soppressione d'a pàgene", + "log-action-filter-suppress-block": "Soppressione de l'utende da blocche", + "log-action-filter-suppress-reblock": "Soppressione de l'utende da ri-blocche", + "log-action-filter-upload-upload": "Carecamende nuève", + "log-action-filter-upload-overwrite": "Recareche", + "authmanager-authplugin-setpass-failed-title": "Cangiamende d'a passuord fallite", + "authmanager-authplugin-setpass-bad-domain": "Dominie invalide.", + "authmanager-email-label": "Email", + "authmanager-email-help": "Indirizze e-mail", + "authmanager-realname-label": "Nome vere", + "authmanager-realname-help": "Nome vere de l'utende", + "authprovider-resetpass-skip-label": "Zumbe", + "authform-newtoken": "Gettone mangande: $1", + "authform-notoken": "Gettone mangande", + "authform-wrongtoken": "Gettone sbagliate", + "specialpage-securitylevel-not-allowed-title": "Non conzendite", + "changecredentials": "Cange credenziale", + "changecredentials-submit": "Cange credenziale", + "revid": "revisione $1", + "pageid": "ID d'a pàgene $1", + "rawhtml-notallowed": "Le tag <html> non ge ponne essere ausate fore da le pàggene normale.", + "gotointerwiki": "Ste lasse {{SITENAME}}", + "gotointerwiki-invalid": "'U titole specificate non g'è valide.", + "pagedata-bad-title": "Titole invalide: $1." } diff --git a/languages/i18n/ru.json b/languages/i18n/ru.json index 86759b4030..2c253f4c5f 100644 --- a/languages/i18n/ru.json +++ b/languages/i18n/ru.json @@ -112,7 +112,10 @@ "Av6", "Санюн Вадик", "MustangDSG", - "Valeri'swiki" + "Valeri'swiki", + "Marat-avgust", + "Ernác", + "Wertuose" ] }, "tog-underline": "Подчёркивание ссылок:", @@ -120,7 +123,7 @@ "tog-hidepatrolled": "Скрывать патрулированные правки в списке свежих правок", "tog-newpageshidepatrolled": "Скрывать отпатрулированные страницы в списке новых страниц", "tog-hidecategorization": "Скрывать категоризацию страниц", - "tog-extendwatchlist": "Расширенный список наблюдения, включающий все изменения, а не только последние (они могут быть сгруппированы настройкой на вкладке «[[Служебная:Настройки#mw-prefsection-rc|Свежие правки]]»)", + "tog-extendwatchlist": "Расширить список наблюдения, включающая все изменения, а не только последние (они могут быть сгруппированы настройкой на вкладке «[[Служебная:Настройки#mw-prefsection-rc|Свежие правки]]»)", "tog-usenewrc": "Группировать изменения в свежих правках и списке наблюдения", "tog-numberheadings": "Автоматически нумеровать заголовки", "tog-showtoolbar": "Показывать панель инструментов при редактировании", @@ -142,13 +145,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": "Скрывать категоризацию страниц", @@ -326,7 +330,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}}:Авторские права", @@ -409,7 +413,7 @@ "databaseerror-function": "Функция: $1", "databaseerror-error": "Ошибка: $1", "transaction-duration-limit-exceeded": "Для того, чтобы избежать большого лага при репликации, эта транзакция была прервана, поскольку продолжительность записи ($1) превысила лимит в $2 {{PLURAL:$2|секунду|секунд|секунды}}.\nЕсли вы изменяете несколько элементов за один раз, попробуйте вместо этого сделать несколько небольших операций.", - "laggedslavemode": "Внимание: страница может не содержать последних обновлений.", + "laggedslavemode": "Внимание: на странице могут отсутствовать последние обновления.", "readonly": "Запись в базу данных заблокирована", "enterlockreason": "Укажите причину и намеченный срок блокировки.", "readonlytext": "Добавление новых статей и другие изменения базы данных сейчас заблокированы: вероятно, в связи с плановым обслуживанием.\n\nСистемный администратор, заблокировавший базу, оставил следующее объяснение: $1", @@ -447,7 +451,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", @@ -466,7 +470,7 @@ "mycustomcssprotected": "У вас нет прав для редактирования этого CSS страницы.", "mycustomjsprotected": "У вас нет прав для редактирования JavaScript на странице.", "myprivateinfoprotected": "У вас нет разрешения на изменение вашей личной информации", - "mypreferencesprotected": "У вас нет прав для редактирования ваших настроек.", + "mypreferencesprotected": "У вас нет прав для редактирования настроек.", "ns-specialprotected": "Страницы пространства имён «{{ns:special}}» не могут правиться.", "titleprotected": "Создание страницы с таким заголовком было запрещено участником [[User:$1|$1]].\nУказана следующая причина: $2.", "filereadonlyerror": "Не удаётся изменить файл «$1», так как хранилище «$2» находится в режиме «только для чтения».\n\nСистемный администратор, заблокировавший базу, оставил следующее объяснение: «$3».", @@ -478,11 +482,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": "Введите имя вашей учётной записи", @@ -574,7 +578,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": "Адреса электронной почты этой учётной записи не могут быть изменены в этой вики.", @@ -583,7 +587,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", @@ -606,7 +610,7 @@ "retypenew": "Повторите ввод нового пароля:", "resetpass_submit": "Установить пароль и представиться", "changepassword-success": "Ваш пароль был изменён!", - "changepassword-throttled": "Вы сделали слишком много попыток представиться системе.\nПожалуйста, подождите $1 перед тем, как попробовать снова.", + "changepassword-throttled": "Вы сделали слишком много попыток входа.\nПожалуйста, подождите $1 перед тем, как попробовать снова.", "botpasswords": "Пароли ботов", "botpasswords-summary": "Пароли бота позволяют получить доступ к учётной записи пользователя через API без использования логина и пароля главной учётной записи. Права участника при входе с паролем бота могут быть ограничены.\n\nЕсли Вы не знаете, зачем это нужно, воздержитесь от использования этой страницы. Никто никогда не должен просить вас, чтобы вы создали и сообщили его.", "botpasswords-disabled": "Пароли бота отключены.", @@ -728,8 +732,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 для изменения страниц.", @@ -746,7 +750,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Ниже приведена последняя запись из журнала блокировок:", @@ -775,8 +779,8 @@ "explainconflict": "Пока вы редактировали эту страницу, кто-то внёс в неё изменения.\nВ верхнем окне для редактирования вы видите текущий текст страницы.\nВ нижнем окне находится ваш вариант.\nПеренесите сделанные вами изменения из нижнего окна в верхнее.\nПри нажатии на кнопку «$1» будет сохранён текст верхнего окна.", "yourtext": "Ваш текст", "storedversion": "Сохранённая версия", - "nonunicodebrowser": "'''ПРЕДУПРЕЖДЕНИЕ: Ваш браузер не поддерживает кодировку Юникод. При редактировании статей все не-ASCII символы будут заменены на свои шестнадцатеричные коды.'''", "editingold": "'''Предупреждение. Вы редактируете устаревшую версию данной страницы.'''\nПосле сохранения будут потеряны изменения, сделанные в последующих версиях.", + "unicode-support-fail": "Похоже, ваш браузер не поддерживает Unicode. Это необходимо для редактирования страниц, поэтому ваша правка не была сохранена.", "yourdiff": "Различия", "copyrightwarning": "Обратите внимание, что все добавления и изменения текста статьи рассматриваются как выпущенные на условиях лицензии $2 (см. $1).\nЕсли вы не хотите, чтобы ваши тексты свободно распространялись и редактировались любым желающим, не помещайте их сюда.
    \nВы также подтверждаете, что являетесь автором вносимых дополнений или скопировали их из\nисточника, допускающего свободное распространение и изменение своего содержимого.
    \n'''НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ МАТЕРИАЛЫ, ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ!'''", "copyrightwarning2": "Пожалуйста, учтите, что любой ваш вклад в проект «{{SITENAME}}» может быть отредактирован или удалён другими участниками.\nЕсли вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
    \nВы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. $1).\n'''НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!'''", @@ -804,8 +808,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Вероятно, она была удалена.", @@ -845,6 +849,7 @@ "parser-template-loop-warning": "Обнаружена петля в шаблонах: [[$1]]", "template-loop-category": "Страницы с петлями в шаблонах", "template-loop-category-desc": "Эта страница содержит петлю в шаблоне, т.е. шаблон, который рекурсивно вызывает сам себя.", + "template-loop-warning": "Предупреждение: Эта страница вызывает [[:$1]], который приводит к возникновению цикла в шаблоне (бесконечный рекурсивный вызов).", "parser-template-recursion-depth-warning": "Превышен предел глубины рекурсии шаблона ($1)", "language-converter-depth-warning": "Превышен предел глубины преобразователя языков ($1)", "node-count-exceeded-category": "Страницы, на которых превышено число узлов", @@ -1074,7 +1079,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": "Другие настройки", @@ -1095,7 +1100,7 @@ "recentchangescount": "Количество правок, отображаемое по умолчанию:", "prefs-help-recentchangescount": "Включает свежие правки, истории страниц, журналы.", "prefs-help-watchlist-token2": "Это секретный ключ для веб-канала вашего списка наблюдений.\nЛюбой, кто знает его, сможет читать ваш список наблюдения, поэтому не сообщайте его другим. [[Special:ResetTokens|Нажмите здесь, если вам нужно сбросить его]].", - "savedprefs": "Ваши настройки сохранены.", + "savedprefs": "Настройки сохранены.", "savedrights": "Группы пользователя {{GENDER:$1|$1}} были сохранены.", "timezonelegend": "Часовой пояс:", "localtime": "Местное время:", @@ -1114,6 +1119,7 @@ "timezoneregion-indian": "Индийский океан", "timezoneregion-pacific": "Тихий океан", "allowemail": "Разрешить получение электронной почты от других участников", + "email-blacklist-label": "Запретить этим участникам отправлять мне электронные письма:", "prefs-searchoptions": "Поиск", "prefs-namespaces": "Пространства имён", "default": "по умолчанию", @@ -1121,7 +1127,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|Имя участника|Имя участницы}}:", @@ -1136,11 +1142,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": "Адрес почты не обязателен, но это единственный способ восстановить забытый пароль.", @@ -1155,6 +1161,7 @@ "prefs-editor": "Редактор", "prefs-preview": "Предварительный просмотр", "prefs-advancedrc": "Расширенные настройки", + "prefs-opt-out": "Отказ от улучшений", "prefs-advancedrendering": "Расширенные настройки", "prefs-advancedsearchoptions": "Расширенные настройки", "prefs-advancedwatchlist": "Расширенные настройки", @@ -1162,13 +1169,13 @@ "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": "Выбор участника", "userrights-user-editname": "Введите имя учётной записи:", - "editusergroup": "Загрузить группы участников", + "editusergroup": "Загрузить группы участника", "editinguser": "Изменение прав {{GENDER:$1|участника|участницы}} [[User:$1|$1]] $2", "viewinguserrights": "Просмотр прав {{GENDER:$1|участника|участницы}} [[User:$1|$1]] $2", "userrights-editusergroup": "Изменение групп {{GENDER:$1|участника|участницы}}", @@ -1265,7 +1272,7 @@ "right-editmywatchlist": "редактирование своего списка наблюдения", "right-viewmyprivateinfo": "просмотр собственных личных данных (например, адрес электронной почты, настоящее имя)", "right-editmyprivateinfo": "правка собственных личных данных (например, адрес электронной почты, настоящее имя)", - "right-editmyoptions": "редактирование собственных предпочтений", + "right-editmyoptions": "редактирование собственных настроек", "right-rollback": "быстрый откат правок последнего участника", "right-markbotedits": "отметка откатываемых правок как правок бота", "right-noratelimit": "обход ограничений скорости", @@ -1301,7 +1308,7 @@ "grant-delete": "Удаление страниц, правок и записей журнала", "grant-editinterface": "Правка пространства имён MediaWiki и пользовательских CSS/JavaScript", "grant-editmycssjs": "Редактирование ваших пользовательских CSS/JavaScript", - "grant-editmyoptions": "Редактирование ваших пользовательских настроек", + "grant-editmyoptions": "Редактирование ваших настроек", "grant-editmywatchlist": "Редактирование вашего списка наблюдения", "grant-editpage": "Редактирование существующих страниц", "grant-editprotected": "Редактирование защищённых страниц", @@ -1390,8 +1397,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 последних изменений}}", + "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": "Чтобы сохранить настройки фильтра и повторно использовать их позже, щелкните значок закладки в области «Активный фильтр» ниже.", @@ -1403,43 +1422,41 @@ "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-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-registration": "Регистрация участников", - "rcfilters-filter-registered-label": "Зарегистрированные", - "rcfilters-filter-registered-description": "Вошедшие редакторы.", - "rcfilters-filter-unregistered-label": "Незарегистрированные", - "rcfilters-filter-unregistered-description": "Редакторы, которые не вошли в систему.", - "rcfilters-filter-unregistered-conflicts-user-experience-level": "Этот фильтр конфликтует со {{PLURAL:$2|следующим фильтром|следующими фильтрами}} по опыту, {{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-filtergroup-user-experience-level-conflicts-unregistered": "Фильтры по опыту ищут только зарегистрированных участников, поэтому этот фильтр конфликтует с фильтром «Незарегистрированные».", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Фильтр «Незарегистрированные» конфликтует с одним или более фильтрами по опыту, которые ищут только незарегистрированных участников. Конфликтующие фильтры отмечены в поле активных фильтров выше.", + "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": "Правки, сделанные с помощью автоматизированных инструментов.", @@ -1455,13 +1472,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": "Правки содержимого, обсуждений, описания категорий…", @@ -1474,18 +1496,28 @@ "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": ":not $1", + "rcfilters-exclude-button-off": "Исключить выбранное", + "rcfilters-exclude-button-on": "Исключение выбранного", + "rcfilters-view-advanced-filters-label": "Расширенные фильтры", "rcfilters-view-tags": "Тегированные правки", "rcfilters-view-namespaces-tooltip": "Результаты фильтра по пространствам имён", - "rcfilters-view-tags-tooltip": "Результаты фильтра, использующего метки правок", + "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": "Отметить все изменения как просмотренные", + "rcfilters-watchlist-edit-watchlist-button": "Редактировать ваш список наблюдения", + "rcfilters-watchlist-showupdated": "Изменения страниц, которые вы не посещали с того момента, как они изменились, выделены жирным и отмечены полным маркером.", + "rcfilters-preference-label": "Скрыть улучшенную версию Последних изменений", + "rcfilters-preference-help": "Откатывает редизайн интерфейса 2017 года и все инструменты, добавленные с тех пор.", "rcnotefrom": "Ниже {{PLURAL:$5|указано изменение|перечислены изменения}} с $3, $4 (показано не более $1).", "rclistfromreset": "Сбросить выбор даты", "rclistfrom": "Показать изменения с $3 $2.", @@ -1543,6 +1575,7 @@ "uploadbtn": "Загрузить файл", "reuploaddesc": "Вернуться к форме загрузки", "upload-tryagain": "Отправить изменённое описание файла", + "upload-tryagain-nostash": "Отправить повторно загруженный файл и изменённое описание", "uploadnologin": "Вы не представились системе", "uploadnologintext": "Вы должны $1, чтобы загружать файлы на сервер.", "upload_directory_missing": "Директория для загрузок ($1) отсутствует и не может быть создана веб-сервером.", @@ -1602,6 +1635,7 @@ "file-deleted-duplicate-notitle": "Файл, идентичный этому файлу, был ранее удалён, а имя файла было запрещено.\nВам следует попросить кого-нибудь с правами просмотра данных по запрещённым файлам, чтобы он проанализировал ситуацию перед тем, как загружать файл снова.", "uploadwarning": "Предупреждение", "uploadwarning-text": "Пожалуйста, измените представленное ниже описание файла и попробуйте ещё раз.", + "uploadwarning-text-nostash": "Повторите загрузку файла, измените описание ниже и повторите попытку.", "savefile": "Записать файл", "uploaddisabled": "Загрузка запрещена", "copyuploaddisabled": "Загрузка по URL отключена.", @@ -1764,7 +1798,7 @@ "listfiles_size": "Размер", "listfiles_description": "Описание", "listfiles_count": "Версий", - "listfiles-show-all": "Включить старые версии изображений", + "listfiles-show-all": "Включить старые версии файлов", "listfiles-latestversion": "Текущая версия", "listfiles-latestversion-yes": "Да", "listfiles-latestversion-no": "Нет", @@ -1868,6 +1902,8 @@ "pageswithprop-legend": "Страницы с переопределёнными свойствами", "pageswithprop-text": "Здесь перечислены страницы, у которых были вручную переопределены отдельные свойства.", "pageswithprop-prop": "Название свойства:", + "pageswithprop-reverse": "Сортировать в обратном порядке", + "pageswithprop-sortbyvalue": "Сортировать по значению свойства", "pageswithprop-submit": "Найти", "pageswithprop-prophidden-long": "длинное значение текстового свойства скрыто ($1)", "pageswithprop-prophidden-binary": "значение двоичного свойства скрыто ($1)", @@ -2172,7 +2208,7 @@ "unwatchthispage": "Прекратить наблюдение", "notanarticle": "Не статья", "notvisiblerev": "Версия была удалена", - "watchlist-details": "В вашем списке наблюдения $1 {{PLURAL:$1|страница|страницы|страниц}}, не считая страниц обсуждений.", + "watchlist-details": "В вашем Списке наблюдения $1 {{PLURAL:$1|страница|страницы|страниц}} (а также страницы обсуждений).", "wlheader-enotif": "Уведомления по эл. почте включены.", "wlheader-showupdated": "Страницы, изменившиеся с вашего последнего их посещения, выделены '''полужирным''' шрифтом.", "wlnote": "Ниже {{PLURAL:$1|показано последнее изменение|показаны $1 последние изменения|показаны $1 последних изменений}} за {{PLURAL:$2|последний час|последние $2 часа|последние $2 часов}}, по состоянию на $3 $4.", @@ -2207,6 +2243,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": "Удалить страницу", @@ -2231,10 +2268,11 @@ "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 подстраниц}}]].", "rollback": "Откатить изменения", "rollbacklink": "откатить", "rollbacklinkcount": "откатить $1 {{PLURAL:$1|правку|правки|правок}}", @@ -2275,8 +2313,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»", @@ -2353,6 +2391,7 @@ "undelete-search-title": "Поиск удалённых страниц", "undelete-search-box": "Поиск удалённых страниц", "undelete-search-prefix": "Показать страницы, начинающиеся с:", + "undelete-search-full": "Показать названия страниц, содержащие:", "undelete-search-submit": "Найти", "undelete-no-results": "не найдено соответствующих страниц в архиве удалений.", "undelete-filename-mismatch": "Невозможно восстановить версию файла с отметкой времени $1: несоответствие имени файла", @@ -2399,6 +2438,7 @@ "sp-contributions-newonly": "Показывать только правки, являющиеся созданием страниц", "sp-contributions-hideminor": "Скрыть малые правки", "sp-contributions-submit": "Найти", + "sp-contributions-outofrange": "Не удаётся показать результаты. Запрашиваемый IP-диапазон больше, чем лимит CIDR /$1.", "whatlinkshere": "Ссылки сюда", "whatlinkshere-title": "Страницы, ссылающиеся на «$1»", "whatlinkshere-page": "Страница:", @@ -2534,7 +2574,7 @@ "ipbnounblockself": "Вы не можете разблокировать самого себя", "lockdb": "Сделать базу данных доступной только для чтения", "unlockdb": "Восстановить возможность записи в базу данных", - "lockdbtext": "Блокировка базы данных приостановит для всех участников возможность редактировать страницы, изменять настройки,\nизменять списки наблюдения и производить другие действия, требующие доступа к базе данных.\nПожалуйста, подтвердите, что это — именно то, что вы хотите сделать, и что вы снимете блокировку как только закончите\nпроцедуру обслуживания базы данных.", + "lockdbtext": "Блокировка базы данных приостановит возможность редактировать страницы, изменять настройки,\nсписки наблюдения и производить другие действия, требующие доступа к базе данных для всех участников.\nПожалуйста, подтвердите, что вы действительно хотите это сделать, и что вы снимете блокировку как только закончите\nпроцедуру обслуживания базы данных.", "unlockdbtext": "Разблокирование базы данных восстановит для всех участников\nвозможность редактировать страницы, изменять настройки, изменять списки наблюдения и производить\nдругие действия, требующие доступа к базе данных.\nПожалуйста, подтвердите, что вы намерены это сделать.", "lockconfirm": "Да, я действительно хочу заблокировать базу данных на запись.", "unlockconfirm": "Да, я действительно хочу снять блокировку базы данных.", @@ -2687,7 +2727,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» не была импортирована, так как вам не разрешено её создавать.", @@ -3551,7 +3591,7 @@ "fileduplicatesearch-noresults": "Не найден файл с именем «$1».", "specialpages": "Спецстраницы", "specialpages-note-top": "Легенда", - "specialpages-note": "* Обычные служебные страницы.\n* Служебные страницы с ограниченным доступом.", + "specialpages-note-restricted": "* Обычные служебные страницы.\n* Служебные страницы с ограниченным доступом.", "specialpages-group-maintenance": "Отчёты технического обслуживания", "specialpages-group-other": "Другие служебные страницы", "specialpages-group-login": "Представиться / Зарегистрироваться", @@ -3670,6 +3710,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)", @@ -4029,7 +4076,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/sah.json b/languages/i18n/sah.json index e7abb788f8..b1f3c2b6b5 100644 --- a/languages/i18n/sah.json +++ b/languages/i18n/sah.json @@ -1287,7 +1287,9 @@ "recentchanges-legend-heading": "Легендата:", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (өссө көр: [[Special:NewPages|Саҥа сирэйдэр тиһиктэрэ]])", "recentchanges-submit": "Көрдөр", + "rcfilters-legend-heading": "Кылгатыы испииһэгэ:", "rcfilters-activefilters": "Холбоммут сиидэлэр", + "rcfilters-advancedfilters": "Сиһилии сиидэлэр", "rcfilters-quickfilters": "Бигэргэммит сиидэлэр", "rcfilters-quickfilters-placeholder-title": "Бигэргэммит сигэ билигин суох", "rcfilters-quickfilters-placeholder-description": "Сиидэ туруорууларын кэлин туһанарга, \"Холбоммут сиидэ\" хонуутугар кыбытык ойуутун баттаа.", @@ -1297,7 +1299,8 @@ "rcfilters-savedqueries-unsetdefault": "Эбии этиллибэтэҕинэ талыллары суох гын", "rcfilters-savedqueries-remove": "Сот", "rcfilters-savedqueries-new-name-label": "Аата", - "rcfilters-savedqueries-apply-label": "Туруоруулары өйдөөн хаалыы", + "rcfilters-savedqueries-new-name-placeholder": "Сиидэ сорудаҕын ойуулаа", + "rcfilters-savedqueries-apply-label": "Сиидэни оҥоруу", "rcfilters-savedqueries-cancel-label": "Салҕаама", "rcfilters-savedqueries-add-new-title": "Сиидэлэ билиҥҥи туруорууларын хааллар", "rcfilters-restore-default-filters": "Анаан этиллибэтэҕинэ турар сиидэлэри холбоо", @@ -1315,20 +1318,16 @@ "rcfilters-noresults-conflict": "Көрдөөһүн мэктиэлэрин мөккүөрэ тахсан, туох да көстүбэтэ", "rcfilters-state-message-subset": "Сиидэ туһата суох, тоҕо диэтэххэ кини түмүгэ атын {{PLURAL:$2|сиидэ түмүгэр|сиидэлэр түмүктэригэр}} киирэр эбит (өҥүн уларытыыны туһанан сиһилии көрүөххүн сөп): $1", "rcfilters-state-message-fullcoverage": "Сиидэни барытын талыы тугу да талбатаҕыҥ тэҥэ, онон сиидэ туһата суох. Холбоммут бөлөхтөр: $1", - "rcfilters-filtergroup-registration": "Кыттааччылары бэлиэтээһин", - "rcfilters-filter-registered-label": "Бэлиэтэммиттэр", - "rcfilters-filter-registered-description": "Киирбит эрэдээктэрдэр.", - "rcfilters-filter-unregistered-label": "Бэлиэтэммэтэхтэр", - "rcfilters-filter-unregistered-description": "Киирбэтэх эрэдээктэрдэр.", - "rcfilters-filter-unregistered-conflicts-user-experience-level": "Бу сиидэ бэлиэтэммит эрэ кыттааччылары көрөр {{PLURAL:$2|сиидэни|сиидэлэри}} кытта сөп түбэспэт: $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-user-experience-level-conflicts-unregistered": "Уопуту көрөр сиидэ бэлиэтэммит эрэ кыттааччылары көрөр, онон \"Бэлиэтэммэтэх\" диэнинэн көрдүүр сиидэни кытта бииргэ сатаан туттуллубат.", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "\"Бэлиэтэммэтэх\" диэнинэн көрдүүр сиидэ уопуту көрөр биир дуу хас да дуу сиидэни кытта сатаан туттуллубат, тоҕо диэтэххэ уоупут көрөр сиидэлэр бэлиэтэммит эрэ кыттааччылары көрөллөр. Сөп түбэспэт сиидэлэр үөһэ көстөллөр.", + "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": "Үөрэнээччилэр", @@ -1374,6 +1373,9 @@ "rcfilters-filter-lastrevision-description": "Сирэй тиһэх уларыйыыта.", "rcfilters-filter-previousrevision-label": "Эрдэ оҥоһуллубут көннөрүүлэр", "rcfilters-filter-previousrevision-description": "Тиһэх көннөрүүттэн ураты бары уларытыылар.", + "rcfilters-filter-excluded": "Мантан ураты", + "rcfilters-tag-prefix-namespace-inverted": ":not $1", + "rcfilters-view-tags": "Бэлиэтэммит (тиэктээх) уларытыылар", "rcnotefrom": "Манна {{PLURAL:$5|уларытыы көрдөрүлүннэ|уларытыылар көһүннүлэр}} баччаттан $3, $4 (баччаттан элбэх көстүбэт $1).", "rclistfromreset": "Дьылын-күнүн сот", "rclistfrom": "Бу кэм $3 $2 кэнниттэн оҥоһуллубуттары көрдөр", diff --git a/languages/i18n/sat.json b/languages/i18n/sat.json index a9f13f886c..1495a72592 100644 --- a/languages/i18n/sat.json +++ b/languages/i18n/sat.json @@ -13,7 +13,9 @@ "Srabony90", "아라", "Shirayuki", - "MtDu" + "MtDu", + "Manik Soren", + "Ramjit Tudu" ] }, "tog-underline": "Joṛaoko latarre dag udugoḱma:", @@ -137,13 +139,7 @@ "anontalk": "Nui baṅ ńutumanić beoharićaḱ galmarao sakam", "navigation": "Ạcurbaṛa", "and": "ar", - "qbfind": "N̕am", - "qbbrowse": "Sendra", - "qbedit": "Tońge", - "qbpageoptions": "Noa sakam", - "qbmyoptions": "In̕anḱ sakamko", "faq": "Baḍae kupuliko", - "faqpage": "Project:FAQ", "actions": "Kạmi", "namespaces": "Ńutum reaḱ ṭhai", "variants": "Etaḱko", @@ -166,28 +162,19 @@ "view-foreign": "$1 re ńelme", "edit": "Toṅge", "create": "Tearme", - "editthispage": "Noa sakam joṛaome", - "create-this-page": "Noa sakam benao me", "delete": "muchau me", - "deletethispage": "Noa sakam do get giḍikam", "undelete_short": "Baṅ getgiḍilena {{PLURAL:$1 1ṭen joṛao $ joṛaoko}}", "viewdeleted_short": "{{PLURAL:$1 gan ocoḱ sompadok $1 gan ocoḱ sompadon}} udugmẽ", "protect": "banchao'", "protect_change": "Judạ", - "protectthispage": "Noa sakam ban̕caome", "unprotect": "Bodol ban̕cao", - "unprotectthispage": "Noa sakam reaḱ rukhiyạ bodolmẽ", "newpage": "Nãwã sakam", - "talkpage": "Noa sakam galmaraome", "talkpagelinktext": "Ro̠ṛme", "specialpage": "Osokayteaḱ sakam", "personaltools": "Nijaḱ jontropạti", - "articlepage": "Menaḱ sakam uduḱme", "talk": "Galmarao", "views": "Ńelogoḱ", "toolbox": "Jontropạti", - "userpage": "Laṛcaṛićaḱ sakam uduḱme", - "projectpage": "Porjakṭ sakam uduḱme", "imagepage": "Rẽt sakam uduḱme", "mediawikipage": "Mesag sakam uduḱme", "templatepage": "Ṭempleṭ sakam udugmẽ", @@ -198,7 +185,7 @@ "redirectedfrom": "$1 khon ạcur heć akana", "redirectpagesub": "Bań sojhe sakam", "redirectto": "Ar hõ udugoḱakana:", - "lastmodifiedat": "Noa sakam do sạjao hoena $1, $2 te", + "lastmodifiedat": "ᱱᱚᱭᱟ ᱥᱟᱦᱴᱟ ᱨᱮᱱᱟᱜ ᱚᱞ ᱢᱩᱪᱟᱹᱫᱫᱷᱟᱣ ᱵᱚᱫᱚᱞ ᱟᱠᱟᱱᱟ $1, at $2", "viewcount": "Noa sakamdo {{PLURAL:$1 dhom $1 dhom}} udug hoena.", "protectedpage": "Rukhíạ sakamko", "jumpto": "Donme :", @@ -221,7 +208,7 @@ "mainpage-description": "Mukhiạ sakam", "policy-url": "Project:Ritiniti", "portal": "Gusṭi bolon hor", - "portal-url": "Projeṭ: Gusṭ bolon hor", + "portal-url": "Project:ᱠᱷᱩᱴ ᱵᱚᱞᱚᱱ ᱦᱚᱨ", "privacy": "Oku eḱtear", "privacypage": "Project: Nijaḱ eḱteạr", "badaccess": "Ektiạr vul", @@ -439,7 +426,7 @@ "preview": "Ńel, Unuduḱ", "showpreview": "Unuduḱ", "showdiff": "Bodolko ńeloḱma", - "anoneditwarning": "Husiạr: amdo nit́hõ bam boloakana.\nJudil am nonḍem toṅge lekhan amaḱ IP ṭhikana do noa sakamre ol tahẽna.", + "anoneditwarning": "ᱦᱩᱥᱤᱭᱟᱹᱨ: ᱟᱢ ᱵᱟᱢ ᱵᱚᱞᱚᱣᱟᱠᱟᱱᱟ ᱾ ᱡᱩᱫᱤ ᱟᱢ ᱡᱟᱦᱟᱸᱱᱟᱜ ᱥᱟᱯᱲᱟᱣᱟᱢ ᱟᱢᱟᱜ IP ᱵᱩᱴᱟᱹ ᱥᱚᱫᱚᱨ ᱛᱟᱦᱮᱸᱱᱟ ᱾ ᱡᱩᱫᱤ ᱟᱢ [$1 ᱵᱚᱞᱚᱱᱟᱢ] ᱟᱨᱵᱟᱝ [$2 ᱠᱷᱟᱛᱟ ᱛᱮᱭᱟᱨᱟᱢ], ᱟᱢᱟᱜ ᱥᱟᱯᱲᱟᱣ ᱫᱚ ᱩᱫᱩᱜᱚᱜ-ᱟ ᱟᱢᱟᱜ ᱵᱮᱵᱷᱟᱨᱤᱭᱟᱹ ᱧᱩᱛᱩᱢ, ᱥᱟᱶᱛᱮ ᱮᱴᱟᱜ ᱥᱩᱵᱤᱫᱷᱟ ᱠᱚ ᱾", "anonpreviewwarning": "\"Am do bhitri bam bolo akana. Noa sakamre amaḱ kạmiko jạre IP ṭhiikạ̣nare rukhiyạ ḱa.\"", "missingcommenttext": "Daya kate amaḱ menaḱ katha latare olmẽ.", "summary-preview": "Guṭ katha unuduḱ:", @@ -471,7 +458,6 @@ "editconflict": "Sompadon reaḱ bene bạiri: $1", "yourtext": "Amaḱ ol", "storedversion": "Rukhiyạ nãwã aroe", - "nonunicodebrowser": "'''Sontoro: Amaḱ sendra reaḱ eunikoḍ-gate sompok baṅ kana. Am do je lekate apod baṅ hoe kate noam sompadon daṛeaḱ, ona lạgit́ somadhan menaḱa: baṅaski karecṭarko do heskaḍesimal koḍ hisạbte udug hoyoḱa.'''", "yourdiff": "Farak", "templatesused": "Noa sakamre beoharen {{PLURAL:$1 ṭempeleṭ ṭempeleṭko}}:", "template-protected": "Rukhiạ", @@ -567,7 +553,7 @@ "searchprofile-advanced-tooltip": "Judạ ńutum re sẽndra", "search-result-size": "$1 ({{PLURAL:$2 1 Aṛaṅ$2 Aṛaṅko}})", "search-result-category-size": "{{PLURAL:$1 1 gãoren $1 gãota renko}} ({{PLURAL:$2 1 kạṭic rokom sokom $ 2 goṭen}}, {{PLURAL:$3 1 rẽt $3 rẽtko}})", - "search-redirect": "($1 te sujhi doṛha )", + "search-redirect": "(ᱥᱚᱡᱷᱮ ᱦᱤᱡᱩᱜ-ᱟ $1 ᱠᱷᱚᱱ)", "search-section": "(Pahaṭa $1)", "search-suggest": "Am do cet́ $1 em menocoyet tãhẽkana", "search-interwiki-caption": "Hopon porjekṭko", @@ -618,6 +604,7 @@ "right-move-subpages": "Sakam saõte kạtic sakamko ocogmẽ", "right-movefile": "Rẽtko ocogmẽ", "right-upload": "Rẽtko rakabmẽ", + "right-writeapi": "write API ᱵᱮᱵᱦᱟᱨ", "right-delete": "Sakamko get giḍiymẽ", "newuserlogpage": "Laṛcaṛićaḱ tear cạbi", "action-edit": "noa sakam joṛao", @@ -631,7 +618,7 @@ "recentchanges-label-minor": "Noado hudiń mạchi toṅge", "recentchanges-label-bot": "Noa toṅge do bot hotete purauena", "recentchanges-label-unpatrolled": "Noa sompadon do ńit́ hạbić baṅ ńel ńamakana", - "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (arhõ ńelme [[Asokaete:Nãwã sakamko |nãwã sakamko reaḱ lisṭi]])", + "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (ᱟᱨᱦᱚᱸ ᱧᱮᱞᱢᱮ [[Special:NewPages|ᱱᱟᱶᱟ ᱥᱟᱦᱴᱟ ᱞᱤᱥᱴᱤ]])", "rcnotefrom": "$2 habić bodolak ko do latare ńeloḱkana", "rclistfrom": "Nãwã bodolko uduḱme $3 $2 khon ehoṕkate", "rcshowhideminor": "$1 kaṭic culuń tońgeko", @@ -657,7 +644,7 @@ "minoreditletter": "m", "newpageletter": "N", "boteditletter": "b", - "rc-change-size-new": "$1 {{PLURAL:$1|bayiṭ|bayiṭ}} Bodol tayomte", + "rc-change-size-new": "$1 {{PLURAL:$1|ᱵᱟᱭᱤᱴ|ᱵᱟᱭᱤᱴᱥ}} ᱵᱚᱫᱚᱞ ᱛᱟᱭᱚᱢ", "rc-enhanced-expand": "Purạote uduḱ", "rc-enhanced-hide": "Purạo cuku", "recentchangeslinked": "Sãotenaḱ bodolko", @@ -929,8 +916,9 @@ "specialpages": "Osokayteaḱ sakamko", "external_image_whitelist": "#Noa sakam do cet leka menaḱa oṅkage dohoemẽ\n#Sanam okte re jạhiren kuṭrạ latar re (khạli hạtiń //talare) bạisạomẽ\n#Noako do bahre reaḱ (hotlinked) chubi reaḱ URL saõte milạo hoyoḱa\n#Okako milạḱa, onako do chubi lekate udugoḱa, baṅkhan do khali chubi joṛao udugoḱa\n#Noa layen reaḱ ehoṕre # menaḱa ona layenko menko hisapte beohar hoyoḱka\n#Noa do kas-baṅ rimjhạoaḱge\n#Noa dag cetanre regex kuṭrạ bạsạomẽ. Noa layen cetleka menaḱa oṅkage dohoemẽ", "tag-filter": "[[Special:Tags|Tag]] saphay:", + "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|ᱥᱟᱛᱚᱢ|ᱥᱟᱛᱚᱢᱠᱩ}}]]: $2)", "logentry-move-move": "$1 beoharić $3 sakam do $4 ńutumre {{GENDER:$2|ạcạr}} akada", "logentry-newusers-create": "Beoharićaḱ hisạb khata $1 do jhićena", "logentry-upload-upload": "$1 {{GENDER:$2|rakaṕ akadae}} $3", - "searchsuggest-search": "Se̠ndra" + "searchsuggest-search": "ᱥᱸᱫᱨᱟ" } diff --git a/languages/i18n/sd.json b/languages/i18n/sd.json index 010223bb49..12889fb7df 100644 --- a/languages/i18n/sd.json +++ b/languages/i18n/sd.json @@ -26,8 +26,8 @@ "tog-watchuploads": "منھنجا نوان چاڙهيل فائيلس نظر ۾ فھرست ۾ شامل ڪريو", "tog-watchrollback": "انهن صفحن کي منهنجي نظر ۾ فھرست تي رکو، جن ۾ تبديلين کي مون واپس ورايو آهي", "tog-minordefault": "سمورين تبديلين کي بنان چئي معمولي ترميم تصور ڪريو", - "tog-previewontop": "ترميمي دٻيءَ مٿان پيش نگاهہ ڏيکاريو", - "tog-previewonfirst": "پهرين ترميم تي پيش نگاهہ ڏيکاريو", + "tog-previewontop": "ترميمي دٻيءَ مٿان پيش نگاھ ڏيکاريو", + "tog-previewonfirst": "پهرين ترميم تي پيش نگاھ ڏيکاريو", "tog-enotifwatchlistpages": "منهنجي نظر ۾ فھرست اندر شامل ڪنهن صفحي يا فائيل ۾ تبديل پيش اچي مون کي برقٽپال اماڻيو", "tog-enotifusertalkpages": "منهنجي مباحثي صفحي ۾ تبديليءَ جي صورت ۾ مون کي برقٽپال اماڻيو", "tog-enotifminoredits": "صفحن ۾ معمولي ترميمن جي صورت ۾ بہ مون کي برقٽپال ڪريو", @@ -35,12 +35,12 @@ "tog-shownumberswatching": "ڏسندڙ يوزرس جو انگ ڏيکاريو", "tog-oldsig": "توھان جو موجوده دستخط:", "tog-fancysig": "صحيح کي وڪيٽيڪسٽ سمجھو (ڪنھن خوڪار ڳنڍڻي کانسواءِ)", - "tog-uselivepreview": "سڌي سنئين پيش نگاھہ استعمال ڪريو", + "tog-uselivepreview": "صفحي کي ٻيھر اتارڻ سواءِ پيش نگاھ ڏيکاريو", "tog-watchlisthideown": "نظر ۾ فھرست مان منھنجون ترميمون لڪايو", "tog-watchlisthidebots": "نظر ۾ فھرست تان بوٽ جون ترميمون لڪايو", "tog-watchlisthideminor": "نظر ۾ فھرست تان معمولي ترميمون لڪايو", "tog-watchlisthideliu": "داخل ٿيل يوزرس جون ڪيل ترميمون نظر ۾ فھرست ۾ نہ ڏيکاريو", - "tog-watchlisthideanons": "نظر ۾ فھرست تان اڻڄاتل يوزر جون ترميمون لڪايو", + "tog-watchlisthideanons": "نظر ۾ فھرست تان اڻڄاتل واپرائيندڙ جون ترميمون لڪايو", "tog-watchlisthidepatrolled": "نظر ۾ فھرست مان گشت ڪيل ترميمون لڪايو", "tog-watchlisthidecategorization": "صفحن جا زمرا لڪايو", "tog-ccmeonemails": "ٻين يوزرس ڏانھن منهنجي موڪليل برقٽپال جو پرت مون کي اماڻيو", @@ -49,7 +49,7 @@ "tog-norollbackdiff": "واپس ورائڻ کان پوءِ تفاوت نہ ڏيکاريو", "tog-useeditwarning": "مونکي خبردار ڪريو جڏهن مان هڪ ترميم وارو صفحو بغير تبديلين سانڍڻ جي ڇڏيان", "tog-prefershttps": "هميشہ محفوظ ڪنيڪشن استعمال ڪريو جڏهن داخل ٿيل هجو", - "underline-always": "هميشہ", + "underline-always": "سدائين", "underline-never": "ڪڏهن بہ نہ", "underline-default": "پيش طَي چَم يا جھانگُو", "editfont-style": "ايراضي جو فونٽ اسٽائيل سنواريو:", @@ -125,7 +125,7 @@ "category_header": "\"$1\" زمري جا صفحا", "subcategories": "ذيلي زمرا", "category-media-header": " \"$1\" زمري اندر ذريعات", - "category-empty": "''في‌الوقت هن زمري ۾ ڪي بہ صفحا يا ذريعات شامل ناهن.''", + "category-empty": "في‌الوقت هن زمري ۾ ڪي بہ صفحا يا ذريعات شامل ناهن.", "hidden-categories": "{{PLURAL:$1|لڪيل زمرو|لڪيل زمرا}}", "hidden-category-category": "لڪل زمرا", "category-subcat-count": "{{PLURAL:$2|ھن زمري ۾ رڳو ھيٺيون ذيلي زمرو آهي.|هن زمري ۾ ڪل $2 مان ھيٺيان {{PLURAL:$1|subcategory|$1 ذيلي زمرا}} آھن.}}", @@ -142,20 +142,14 @@ "article": "موادي صفحو", "newwindow": "(نئين دريءَ ۾ کلندو)", "cancel": "رد", - "moredotdotdot": "اڃا...", + "moredotdotdot": "وڌيڪ...", "morenotlisted": "ھي فھرست نامڪمل بہ ٿي سگھي ٿي.", - "mypage": "منهنجو صفحو", + "mypage": "صفحو", "mytalk": "بحث", "anontalk": "بحث", "navigation": "رھنمائي", "and": " ؛۽", - "qbfind": "ڳوليو", - "qbbrowse": "جھانگيو", - "qbedit": "سنواريو", - "qbpageoptions": "هيءُ صفحو", - "qbmyoptions": "منهنجا صفحا", "faq": "ڪپس", - "faqpage": "Project:ڪپس", "actions": "ڪارگذاريون", "namespaces": "نانءُپولارَ", "variants": "بَدَلَ", @@ -166,7 +160,7 @@ "help": "مدد", "search": "ڳولا", "searchbutton": "ڳوليو", - "go": "کوليو", + "go": "هلو", "searcharticle": "وڃو", "history": "صفحي جي سوانح", "history_short": "سوانح", @@ -180,36 +174,26 @@ "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": "هيءُ صفحو تحفظيو", + "protect_change": "مٽايو", "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": "ذريعاتي صفحو ڏسو", + "tool-link-userrights": "{{GENDER:$1|واپرائيندڙ}} گروھ مَٽايو", + "tool-link-userrights-readonly": "{{GENDER:$1|واپرائيندڙ}}ن جا گروھ ڏسو", + "tool-link-emailuser": "ھن {{GENDER:$1|واپرائيندڙ}} ڏانھن برقٽپال موڪليو", + "imagepage": "فائيل صفحو ڏسو", "mediawikipage": "نياپي جو صفحو ڏسو", "templatepage": "سانچي جو صفحو ڏسو", - "viewhelppage": "امدادي صفحو ڏسو", + "viewhelppage": "مددي صفحو ڏسو", "categorypage": "زمراتي صفحو ڏسو", "viewtalkpage": "بحث ڏسو", "otherlanguages": "ٻين ٻولين ۾", @@ -222,13 +206,13 @@ "jumpto": "ڏانھن ٽپ ڏيو:", "jumptonavigation": "رھنمائي", "jumptosearch": "ڳولا", - "view-pool-error": "معذرت سان سرور هاڻي تمام گھڻو سُڪ آهي.\nتمام گھڻا يوزر ھن صفحي کي ڏسڻ جي ڪوشش ڪري رھيا آھن.\nمهرباني ڪري ٿورو ترسو انکان اڳ جو توھان ھن صفحي تائين رسڻ لاءِ ٻيھر ڪوشش ڪريو.\n\n$1", - "generic-pool-error": "معذرت سان سرور هاڻي تمام گھڻو سُڪ آهي.\nتمام گھڻا يوزر هتي موجود آهن.\nمهرباني ڪري ٿورو ترسي پوءِ ڪوشش ڪريو.", + "view-pool-error": "معذرت سان سرور هاڻي تمام گھڻو سُڪ آهي.\nتمام گھڻا واپرائيندڙ ھن صفحي کي ڏسڻ جي ڪوشش ڪري رھيا آھن.\nمهرباني ڪري ٿورو ترسو انکان اڳ جو توھان ھن صفحي تائين رسڻ لاءِ ٻيھر ڪوشش ڪريو.\n\n$1", + "generic-pool-error": "معذرت سان سرور هاڻي تمام گھڻو سُڪ آهي.\nتمام گھڻا واپرائيندڙَ هتي موجود آهن.\nمهرباني ڪري ٿورو ترسي پوءِ ڪوشش ڪريو.", "pool-errorunknown": "اڻڄاتل چُڪَ", "poolcounter-usage-error": "استعمال جي خرابي: $1", "aboutsite": "{{SITENAME}} بابت", "aboutpage": "Project:بابت", - "copyright": "ڪجھہ ٻيو ڄاڻايل نہ هجڻ جي صورت ۾ سمورو مواد $1 تحت ميسر ڪجي ٿو.", + "copyright": "ڪجھ ٻيو ڄاڻايل نہ هجڻ جي صورت ۾ سمورو مواد $1 تحت ميسر ڪجي ٿو.", "copyrightpage": "{{ns:project}}:تاليف جا حق", "currentevents": "ھاڻوڪا واقعا", "currentevents-url": "Project:ھاڻوڪا واقعا", @@ -243,12 +227,12 @@ "portal-url": "Project:نياتي باب", "privacy": "ذاتيات پاليسي", "privacypage": "Project:ذاتيات پاليسي", - "badaccess": "اجازتنامہ چُڪَ", + "badaccess": "اجازتي چُڪَ", "versionrequired": "ذريعات‌وڪي جو ورزن $1 درڪار", "versionrequiredtext": "هيءُ صفحو استعمال ڪرڻ لاءِ ذريعات‌وڪي جو ورزن $1 درڪار آهي. وڌيڪ ڄاڻڻ لاءِ [[Special:Version|ورزن بابت صفحو]] ڏسو.", "ok": "ٺيڪ", "retrievedfrom": "\"$1\" تان ورتل", - "youhavenewmessages": "توهان لاءِ $1 ($2) آهن.", + "youhavenewmessages": "{{PLURAL:$3|توھان وٽ}} $1 ($2) آھن.", "youhavenewmessagesmanyusers": "توهان لاءِ ڪيترن ئي يُوزرس ($2) طرفان $1 آيل آهن.", "newmessageslinkplural": "{{PLURAL:$1|ھڪ نئون پيغام|999=نوان پيغام}}", "newmessagesdifflinkplural": "آخري {{PLURAL:$1|تبديلي|999=تبديليون}}", @@ -267,11 +251,11 @@ "confirmable-confirm": "ڇا{{GENDER:$1|توهانکي}} پڪ آهي؟", "confirmable-yes": "ها", "confirmable-no": "نہ", - "thisisdeleted": "$1 کي ڏسڻ يا بحالڻ چاهيندا؟", - "viewdeleted": "$1 ڏسندا؟", - "restorelink": "{{PLURAL:$1|هڪڙي ڊاٺل ترميم|$1 ڊاٺل ترميمون}}", + "thisisdeleted": "$1 کي ڏسندئو يا بحاليندئو؟", + "viewdeleted": "$1 ڏسندئو؟", + "restorelink": "{{PLURAL:$1|هڪڙي ڊاٿل ترميم|$1 ڊاٿل ترميمون}}", "feedlinks": "روان رسد:", - "site-rss-feed": "$1 آر ايس ايس روان رسد", + "site-rss-feed": "$1 آرايسايس روان رسد", "site-atom-feed": "$1 اڻو روان رسد", "page-rss-feed": "\"$1\" RSS برق مواد", "page-atom-feed": "\"$1\" اڻو روان رسد", @@ -279,14 +263,14 @@ "sort-descending": "لهندڙ ترتيب ڏيو", "sort-ascending": "چڙهندڙ ترتيب ڏيو", "nstab-main": "صفحو", - "nstab-user": "يُوزر صفحو", + "nstab-user": "واپرائيندڙ جو صفحو", "nstab-media": "ذريعاتي صفحو", "nstab-special": "خاص صفحو", "nstab-project": "رٿائي صفحو", "nstab-image": "فائيل", "nstab-mediawiki": "نياپو", "nstab-template": "سانچو", - "nstab-help": "امدادي صفحو", + "nstab-help": "مددي صفحو", "nstab-category": "زمرو", "mainpage-nstab": "مک صفحو", "nosuchaction": "اهڙو ڪو بہ عمل نہ آهي", @@ -316,7 +300,7 @@ "badarticleerror": "هن صفحي تي اهڙو عمل ڪار نہ آهي.", "cannotdelete": "$1 نالي صفحو يا فائيل ڊهي نہ سگھيو. ٿي سگھي ٿو تہ ڪنهن ان کي اڳ ۾ ئي ڊاهي ڇڏيو هجي.", "cannotdelete-title": "$1 نالي صفحي کي ڊاهي نہ ٿا سگھون.", - "badtitle": "غيردرست عنوان", + "badtitle": "خراب عنوان", "badtitletext": "صفحي جو گھربل عنوان ڪار ڪونهي، يا خالي آهي، يا وري غيردرست طريقي سان ڳنڍيل بين‌الزباني يا بين‌الوڪي عنوان آهي. \nان ۾ هڪ يا هڪ کان وڌيڪ اهڙا اکر موجود آهن، جيڪي عنوان ۾ استعمال ڪري نہ ٿا سگھجن.", "title-invalid-utf8": "صفحي جي ڄاڻايل عنوان ۾ ناقابل ڪار يُو ٽِي ايف اکر شامل آهن.", "title-invalid-interwiki": "ڄاڻايل عنوان ۾ اهڙو بين‌الوڪِي ڳنڍڻو شامل آهي، جيڪو عنوانن ۾ استعمال ڪري نہ ٿو سگھجي.", @@ -338,15 +322,15 @@ "cannotlogoutnow-title": "ھاڻي خارج نٿو ٿي سگھجي", "cannotlogoutnow-text": "$1 استعمال ڪرڻ دوران خارج ٿيڻ ممڪن نہ آھي.", "welcomeuser": "ڀلي ڪري آيا، $1!", - "yourname": "يُوزرنانءُ:", - "userlogin-yourname": "يوزرنانءُ", + "yourname": "واپرائيندڙ-نانءُ:", + "userlogin-yourname": "واپرائيندڙ-نانءُ", "userlogin-yourname-ph": "پنھنجو يوزرنانءُ ڄاڻايو", - "createacct-another-username-ph": "يُوزرنانءُ ڄاڻايو", + "createacct-another-username-ph": "واپرائيندڙ-نانءُ ڄاڻايو", "yourpassword": "ڳجھولفظ:", "userlogin-yourpassword": "ڳجھولفظ", "userlogin-yourpassword-ph": "پنهنجو ڳجھولفظ ڄاڻايو", "createacct-yourpassword-ph": "ڪو ڳجھولفظ ڄاڻايو", - "yourpasswordagain": "يُوزرنان ٻيهر ٽائيپ ڪريو:", + "yourpasswordagain": "ڳجھولفظ ٻيھر لکو:", "createacct-yourpasswordagain": "ڳجھي لفظ جي پڪ ڪريو", "createacct-yourpasswordagain-ph": "ٻيھر ڳجھولفظ داخل ڪريو", "userlogin-remembermypassword": "مون کي داخل ٿيل رکو", @@ -364,7 +348,7 @@ "logout": "خارج ٿيو", "userlogout": "خارج ٿيو", "notloggedin": "داخل ٿيل نہ آهيو", - "userlogin-noaccount": "کاتو نہ ٿا رکو؟", + "userlogin-noaccount": "کاتو نٿا رکو؟", "userlogin-joinproject": "{{SITENAME}} ۾ شامل ٿيو", "createaccount": "کاتو کوليو", "userlogin-resetpassword-link": "ڳجھولفظ وساري ويٺا آهيو؟", @@ -374,7 +358,7 @@ "createacct-emailrequired": "برقٽپال پتو", "createacct-emailoptional": "برقٽپال پتو (مرضيءَ موجب)", "createacct-email-ph": "پنھنجو برقٽپال پتو ڄاڻايو", - "createacct-another-email-ph": "برق ٽپال پتو ڄاڻايو", + "createacct-another-email-ph": "برقٽپال پتو ڄاڻايو", "createaccountmail": "ڪو بہ عارضي ڳجھولفظ استعمال ڪريو ۽ ڄاڻايل برقٽپال پتي تي اماڻيو", "createacct-realname": "اصل نالو (مرضيءَ موجب)", "createacct-reason": "سبب", @@ -388,20 +372,20 @@ "createacct-benefit-body2": "{{PLURAL:$1|صفحو|صفحا}}", "createacct-benefit-body3": "ھاڻوڪا {{PLURAL:$1|ڀاڱيدار}}", "badretype": "توهان جو ڄاڻايل ڳجھولفظ درست نہ آهي.", - "usernameinprogress": "ان يُوزرنانءُ لاءِ کاتو اڳ ۾ ئي تياريءَ هيٺ آهي. مهرباني ڪري انتظار فرمايو.", - "userexists": "ڄاڻايل يوزرنانءُ اڳ ۾ ئي استعمال هيٺ آهي. مهرباني ڪري ڪو ٻيو يُوزرنانءُ چونڊيو.", + "usernameinprogress": "ان واپرائيندڙ-نانءَ لاءِ کاتو اڳ ۾ ئي تياريءَ هيٺ آهي.\nمهرباني ڪري انتظار فرمايو.", + "userexists": "ڄاڻايل واپرائيندڙ-نانءُ اڳ ۾ ئي استعمال هيٺ آهي.\nمهرباني ڪري ڪو ٻيو واپرائيندڙ-نانءُ چونڊيو.", "loginerror": "داخل ٿيڻ ۾ چُڪَ", "createacct-error": "کاتو کولڻ ۾ چُڪَ", "createaccounterror": "کاتو کُلي نہ سگھيو: $1", - "nocookiesnew": "يُوزر کاتو کلي چڪو، پر توهان داخل نہ ٿيا آهيو. يُوزرس کي داخل ڪرڻ لاءِ {{SITENAME}} ڪوڪيز استعمال ڪندي آهي. توهان ڪوڪيز کي ناڪاره بڻائي رکيو آهي. داخل ٿيڻ لاءِ ڪوڪيز کي ڪارائتو بڻايو.", + "nocookiesnew": "واپرائيندڙ کاتو کلي چڪو، پر توهان داخل نہ ٿيا آهيو. واپرائيندڙ کي داخل ڪرڻ لاءِ {{SITENAME}} ڪوڪيز استعمال ڪندي آهي. توهان ڪوڪيز کي ناڪاره بڻائي رکيو آهي. داخل ٿيڻ لاءِ ڪوڪيز کي ڪارائتو بڻايو.", "nocookieslogin": "يُوزرس کي داخل ڪرڻ لاءِ {{SITENAME}} ڪوڪيز استعمال ڪندي آهي.\nتوھان ڪوڪيز کي ناڪاره بڻائي رکيو آھي.\nداخل ٿيڻ لاءِ ڪوڪيز کي ڪارائتو بڻايو.", - "noname": "توهان جو ڄاڻايل يُوزرنانءُ ناقابل ڪار آهي.", + "noname": "توهان جو ڄاڻايل واپرائيندڙ-نانءُ ناقابل ڪار آهي.", "loginsuccesstitle": "داخل ٿيل", "loginsuccess": "'''هاڻي توهان {{SITENAME}} تي بطور \"$1\" داخل ٿيل آهيو.'''", - "nosuchuser": "\"$1\" نالي سان ڪو بہ يوزر نہ آهي.\nننڍن وڏن اکرن ۾ امتياز ڪرڻ لازمي آهي. \nهِجي چڪاسيو، يا [[Special:CreateAccount|نئون کاتو تخليق ڪريو]]", - "nosuchusershort": "\"$1\" نالي ڪو بہ يُوزر ناهي.\nهِجي جي پڪ ڪندا.", - "nouserspecified": "توهان کي ڪو يوزرنانءُ ڄاڻائڻو پوندو.", - "login-userblocked": "هيءُ يُوزر بندشيل آهي. داخل ٿيڻ جي اجازت نٿي ڏجي.", + "nosuchuser": "\"$1\" نالي سان ڪو بہ واپرائيندڙ نہ آهي.\nننڍن وڏن اکرن ۾ امتياز ڪرڻ لازمي آهي. \nهِجي چڪاسيو، يا [[Special:CreateAccount|نئون کاتو تخليق ڪريو]].", + "nosuchusershort": "\"$1\" نالي ڪو بہ واپرائيندڙ ناهي.\nپنھنجي هِجي جي پڪ ڪندا.", + "nouserspecified": "توهان کي ڪو واپرائيندڙ-نان‎ءُ ڄاڻائڻو پوندو.", + "login-userblocked": "هيءُ واپرائيندڙ بندشيل آهي. داخل ٿيڻ جي اجازت نٿي ڏجي.", "wrongpassword": "ڏنل ڳجھولفظ غير درست آهي. مھرباني ڪري ٻيھر ڪوشش ڪندا.", "wrongpasswordempty": "ڏنل ڳجھولفظ خالي هو.\nمهرباني ڪري وري ڪوشش ڪندا.", "passwordtooshort": "ڳجھولفظ گھٽ ۾ گھٽ {{PLURAL:$1|1 اکر|$1 اکرَن}} تي ٻڌل هوڻ گھرجي.", @@ -409,10 +393,10 @@ "password-name-match": "توهان جو ڳجھولفظ توهان جي يوزرنانءُ کان مختلف هجڻ گھرجي.", "mailmypassword": "ڳجھولفظ ٻيھر مقرر ڪريو", "passwordremindertitle": "{{SITENAME}} لاءِ نئون عارضي ڳجھولفظ", - "passwordremindertext": "ڪنھن (شايد توھان آءِپي پتي $1 تان) اسان کي {{SITENAME}} ($4) لاءِ نئون ڳجھولفظ اماڻڻ جي گُھرَ ڪئي.\"$2\" يوزر لاءِ ھڪ ڳجھولفظ تخليق ڪيو ويو آهي \"$3\" تي ترتيب ڏنو ويو ھو. جيڪڏھن اھو توھان جو ارادو ھيو، تہ ھاڻي توھان کي ھينئر ئي داخل ٿي پنھنجو ڳجھولفظ تبديل ڪرڻ گھرجي.\nتوھان جو عارضي ڳجھولفظ {{PLURAL:$5|هڪ ڏينھُن|$5 ڏينھَن}} ۾ ختم ٿيندو.\n\nجيڪڏھن اھا گُھرَ اوھان نہ ڪئي ھئي، يا ھاڻي اوھان کي پنھنجو ڳجھولفظ ياد اچي ويو آھي ۽ توھان ان کي تبديل ڪرڻ نٿا چاھيو، تہ توھان ھن نياپي کي نظر انداز ڪندي پنھنجو پراڻو ڳجھولفظ ئي استعمال ڪري سگھو ٿا.", - "noemail": "يُوزر \"$1\" جي ڪو بہ برقٽپال پتو درج ٿيل ناهي.", + "passwordremindertext": "ڪنھن (شايد توھان آءِپي پتي $1 تان) اسان کي {{SITENAME}} ($4) لاءِ نئون ڳجھولفظ اماڻڻ جي گُھرَ ڪئي.\"$2\" واپرائيندڙ لاءِ ھڪ ڳجھولفظ تخليق ڪيو ويو آهي \"$3\" تي ترتيب ڏنو ويو ھو. جيڪڏھن اھو توھان جو ارادو ھيو، تہ ھاڻي توھان کي ھينئر ئي داخل ٿي پنھنجو ڳجھولفظ تبديل ڪرڻ گھرجي.\nتوھان جو عارضي ڳجھولفظ {{PLURAL:$5|هڪ ڏينھُن|$5 ڏينھَن}} ۾ ختم ٿيندو.\n\nجيڪڏھن اھا گُھرَ اوھان نہ ڪئي ھئي، يا ھاڻي اوھان کي پنھنجو ڳجھولفظ ياد اچي ويو آھي ۽ توھان ان کي تبديل ڪرڻ نٿا چاھيو، تہ توھان ھن نياپي کي نظر انداز ڪندي پنھنجو پراڻو ڳجھولفظ ئي استعمال ڪري سگھو ٿا.", + "noemail": "واپرائيندڙ \"$1\" جو ڪو بہ برقٽپال پتو درج ٿيل ناهي.", "noemailcreate": "توھان کي قابلڪار برقٽپال پتو مھيا ڪرڻو پوندو.", - "passwordsent": "يوزر \"$1\" لاءِ ھڪ نئون ڳجھولفظ برقٽپال ذريعي اماڻيو ويو آهي. مھرباني ڪري اھو حاصل ڪرڻ بعد داخل ٿيندا.", + "passwordsent": "واپرائيندڙ \"$1\" لاءِ ھڪ نئون ڳجھولفظ برقٽپال ذريعي اماڻيو ويو آهي.\nمھرباني ڪري اھو حاصل ڪرڻ بعد داخل ٿيندا.", "mailerror": "ٽپال اماڻڻ ۾ چُڪَ: $1", "acct_creation_throttle_hit": "توهان جي آءِپي پتي تان هن وڪيءَ تي پوئين $2، کان {{PLURAL:$1|1 کاتو|$1 کاتا}} کلي چڪا آهن، جيڪو وڌ ۾ وڌ اجازت ڏنل وقت آهي. \nنتيجتاً ساڳي آءِپي پتي تان في‌الوقت وڌيڪ کاتا کولي نٿا سگھجن.", "emailauthenticated": "توھان جي برقٽپال پتي جي تصديق $2 تي $3 بجي ڪئي وئي.", @@ -423,11 +407,11 @@ "cannotchangeemail": "هن وڪيءَ تي کاتيدار جو برقٽپال پتو بدلائي نہ ٿو سگھجي.", "emaildisabled": "هيءَ سرزمين برقٽپال اماڻي نہ ٿي سگھي.", "accountcreated": "کاتو کلي چڪو", - "accountcreatedtext": "يوزر کاتو [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|talk]]) جي لاءِ تخليق ٿي چڪو آهي.", + "accountcreatedtext": "واپرائيندڙ کاتو براءِ [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|بحث]]) جي لاءِ تخليق ٿي چڪو آهي.", "createaccount-title": "{{SITENAME}} تي کاتو کولڻ", "login-throttled": "توهان تازو ئي داخل ٿيڻ جون هيڪانديون گھڻيون ڪوششون ڪيون آهن. مهرباني ڪري $1 لاءِ ترسي پوءِ وري ڪوشش ڪريو.", "login-abort-generic": "توهان جو داخل ٿيڻ ناڪام ويو - بند ڪيل", - "login-migrated-generic": "توهان جو کاتو لڏي چڪو آهي، ۽ هن وڪيءَ تي توهان جو يُوزنانءُ هاڻي وجود نہ ٿو رکي.", + "login-migrated-generic": "توهان جو کاتو لڏي چڪو آهي، ۽ هن وڪيءَ تي توهان جو واپرائيندڙ-نان‎ءُ هاڻي وجود نٿو رکي.", "loginlanguagelabel": "ٻولي: $1", "createacct-another-realname-tip": "اصل نالو ڄاڻائڻ اختياري آهي. جيڪڏهن توهان اصل نالو ڄاڻايو ٿا، تہ اهو توهان کي توهان جي ڪم جي مڃتا ڏيڻ لاءِ ڪم آندو ويندو.", "pt-login": "داخل ٿيو", @@ -448,6 +432,7 @@ "changepassword-throttled": "توهان تازو ئي داخل ٿيڻ جون هيڪانديون گھڻيون ڪوششون ڪيون آهن. مهرباني ڪري $1 لاءِ ترسي پوءِ وري ڪوشش ڪريو.", "botpasswords": "بوٽ جو ڳجھولفظ", "botpasswords-disabled": "بوٽ ڳجھالفظ ناقابلِڪار ڪيل آھن.", + "botpasswords-label-appid": "باٽ جو نالو:", "botpasswords-label-create": "سرجيو", "botpasswords-label-update": "تجديد", "botpasswords-label-cancel": "رد", @@ -471,7 +456,7 @@ "passwordreset-text-one": "برقٽپال ذريعي عارضي ڳجھولفظ حاصل ڪرڻ لاءِ هيءُ فارم پُر ڪريو.", "passwordreset-disabled": "هن وڪيءَ تي ڳجھولفظ ٻيھر مقرر ڪرڻ وارو چارو غير فعال بڻايو ويو آهي.", "passwordreset-emaildisabled": "هن وڪيءَ تي برق‌ٽپال واريون خصوصيتون غير فعال بڻايون ويون آهن.", - "passwordreset-username": "يُوزرنانءُ:", + "passwordreset-username": "واپرائيندڙ-نانءُ:", "passwordreset-domain": "ميدان:", "passwordreset-email": "برقٽپال پتو:", "passwordreset-emailtitle": "{{SITENAME}} واري کاتي جا تفصيل", @@ -522,11 +507,11 @@ "missingcommenttext": "براءِ مھرباني هيٺ پنهنجو تاثر درج ڪندا.", "summary-preview": "تت جي پيش نگاھ:", "subject-preview": "موضوع جي پيش نگاھ:", - "blockedtitle": "يُوزر بندشيل آهي.", - "blockedtext": "'''توھان جي يوزرنانءُ يا آءِ پي کي بندشيو ويو آھي.'''\n\nبندش $1 ھني. جڏھن تہ ڄاڻايل سبب ''$2'' آهي.\n\n\n* بندش جو آغاز: $8\n* بندش جو انجام: $6\n* بندش جو هدف: $7\n\nاھڙي روڪ تي بحث ڪرڻ لاءِ توھان $1 يا ڪنھن ٻي [[{{MediaWiki:Grouppage-sysop}}|منتظم]] سان رابطو ڪري سگھو ٿا. جيڪڏهن توھان جو درست [[Special:ترجيحون|کاتو ترجيحون]] ۾ درست برقٽپال پتو درج ٿيل نہ آهي تہ توهان 'هن يوزر کي برقٽپال ڪريو' وارو فيچر نہ ٿا \nYou cannot use the 'e-mail this user' feature unless a valid e-mail address is specified in your [[Special:Preferences|account preferences]] and you have not been blocked from using it.\nاستعمال ڪري سگھو. توھان جو ھاڻوڪو آءِپي پتو $3 آھي، ۽ بندش سڃاڻپ $5 آهي. مھرباني ڪري ڪنھن بہ پڇا ڳاڇا يا لھوچڙ لاءِ انھن مان ڪنھن ھڪ يا ٻنھي جو حوالو ڏيندا.", + "blockedtitle": "واپرائيندڙ بندشيل آهي", + "blockedtext": "'''توھان جي واپرائيندڙ-نانءُ يا آءِ پي کي بندشيو ويو آھي.'''\n\nبندش $1 ھنئي. جڏھن تہ ڄاڻايل سبب ''$2'' آهي.\n\n\n* بندش جو آغاز: $8\n* بندش جو انجام: $6\n* بندش جو هدف: $7\n\nاھڙي روڪ تي بحث ڪرڻ لاءِ توھان $1 يا ڪنھن ٻي [[{{MediaWiki:Grouppage-sysop}}|منتظم]] سان رابطو ڪري سگھو ٿا. جيڪڏهن توھان جو درست [[Special:Preferences|کاتي جي ترجيحن]] ۾ درست برقٽپال پتو درج ٿيل نہ آهي تہ توهان 'هن واپرائيندڙ کي برقٽپال ڪريو' وارو فيچر نہ ٿا \nاستعمال ڪري سگھو. توھان جو ھاڻوڪو آءِپي پتو $3 آھي، ۽ بندش سڃاڻپ $5 آهي. مھرباني ڪري ڪنھن بہ پڇا ڳاڇا يا لھ و چڙھ لاءِ انھن مان ڪنھن ھڪ يا ٻنھي جو حوالو ڏيندا.", "blockednoreason": "سبب اڻڄاڻايل", "whitelistedittext": "صفحا سنوارڻ لاءِ مھرباني ڪري $1.", - "confirmedittext": "صفحا سنوارڻ کان اڳ توھان کي پنھنجي برقٽپال پتي جي تصديق ڪرڻي پوندي. مھرباني ڪري [[Special:Preferences|يوزر ترجيحن]] ذريعي پنھنجو برقٽپال پتو ڄاڻايو ۽ تصديقيو.", + "confirmedittext": "صفحا سنوارڻ کان اڳ توھان کي پنھنجي برقٽپال پتي جي تصديق ڪرڻي پوندي.\nمھرباني ڪري [[Special:Preferences|واپرائيندڙ جي ترجيحن]] ذريعي پنھنجو برقٽپال پتو ڄاڻايو ۽ تصديقيو.", "nosuchsectiontitle": "سيڪشن نٿو لھي سگھي", "loginreqtitle": "داخل ٿيڻ گھربل آهي", "loginreqlink": "داخل ٿيو", @@ -536,8 +521,8 @@ "newarticletext": "توھان اھڙي صفحي جو ڳنڍڻو وٺي ھتي پھتا آھيو، جيڪو اڃا وجود نٿو رکي.\nاھڙو صفحو جوڙڻ لاءِ، ھيٺين دٻي ۾ لکڻ شروع ڪريو (وڌيڪ ڄاڻڻ لاءِ [$1 امدادي صفحو] ڏسندا).\nجي توھان ھتي غلطيءَ ۾ اچي ويا آهيو، تہ رڳو پنھنجي جھانگُوءَ جي back بٽڻ تي ٽڙڪ ڪريو.", "noarticletext": "في‌الوقت هن صفحي اندر ڪو بہ ٽيڪسٽ نہ آهي.\nتوهان ٻين صفحن ۾ [[Special:Search/{{PAGENAME}}|search ساڳي عنوان جي ڳولا]] ڪري سگھو ٿا، \n[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} لاڳاپيل لاگس ۾ ڳوليو]،\nيا [{{fullurl:{{FULLPAGENAME}}|action=edit}} هيءُ صفحو ترميميو].", "noarticletext-nopermission": "ھن وقت ھن صفحي ۾ ڪا بہ لکت نہ آھي.\nتوھان ٻين صفحن ۾ [[Special:Search/{{PAGENAME}}|ھن صفحي جي عنوان سان ڳولا ڪري سگھو ٿا]]، يا [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} لاڳاپيل لاگس ڳوليو]، پر توھان کي ان جي تخليق ڪرڻ جي اجازت نہ آھي.", - "userpage-userdoesnotexist-view": "يُوزر کاتو $1 درج ٿيل نہ آهي.", - "blocked-notice-logextract": "هيءَ يُوزر في‌الحال بندشيل آهي. تازو بندش لاگ حوالي طور پيش ڪجي ٿو:", + "userpage-userdoesnotexist-view": "واپرائيندڙ کاتو $1 درج ٿيل نہ آهي.", + "blocked-notice-logextract": "هيءُ واپرائيندڙ في‌الحال بندشيل آهي.\nتازو بندش لاگ حوالي طور پيش ڪجي ٿو:", "updated": "(تجديديل)", "note": "نوٽ:", "previewnote": "هيءَ فقط پيش نگاھ آهي.\nتوھان جون ترميمون اڃان نہ سانڍيون ويون آھن!", @@ -568,8 +553,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": "هيءُ صفحو سرجي چڪو آهي.", @@ -611,9 +596,9 @@ "history-feed-description": "وڪي جي هن صفحي جي ترميمي سوانح", "history-feed-item-nocomment": "$2 تي $1", "rev-deleted-comment": "(ترميمي خلاصو ھٽايل)", - "rev-deleted-user": "(يُوزرنانءُ ڊاٺو ويو)", + "rev-deleted-user": "(واپرائيندڙ-نانءُ ڊاٿو ويو)", "rev-deleted-event": "(لاگ تفصيل هٽايا ويا)", - "rev-deleted-user-contribs": "[يُوزرنانءُ يا آءِ پِي پتو مِٽايو ويو - ڀاڱيدارين مان ترميمون لڪايون ويون]", + "rev-deleted-user-contribs": "[واپرائيندڙ-نانءُ يا آءِپِي پتو مِٽايو ويو - ڀاڱيدارين مان ترميمون لڪايون ويون]", "rev-suppressed-no-diff": "توهان اهو تفاوت ڏسي نہ ٿا سگھو، ڇاڪاڻ تہ ڪا هڪ ترميم ڊهي چڪي آهي.", "rev-delundel": "نمائش تبديل ڪريو", "rev-showdeleted": "ڏيکاريو", @@ -624,7 +609,7 @@ "revdelete-hide-image": "فائيل جو مواد لڪايو", "revdelete-hide-name": "هدف ۽ نيمپيما لڪايو", "revdelete-hide-comment": "ترميم جو تتُ", - "revdelete-hide-user": "ايڊيٽر جو يوزرنانءُ / آء پي پتو", + "revdelete-hide-user": "ايڊيٽر جو واپرائيندڙ-نانءُ/آءِپِي پتو", "revdelete-hide-restricted": "منتظمن توڙي ٻين کان مليل اعداد دٻايو", "revdelete-radio-same": "(نہ بدلايو)", "revdelete-radio-set": "لڪل", @@ -712,8 +697,8 @@ "prefs-skin": "چَمَ", "skin-preview": "پيش نگاهہ", "datedefault": "بلا ترجيح", - "prefs-user-pages": "يُوزر صفحو", - "prefs-personal": "يُوزر جو خدوخال", + "prefs-user-pages": "واپرائيندڙن جا صفحا", + "prefs-personal": "واپرائيندڙ جو خدوخال", "prefs-rc": "تازيون تبديليون", "prefs-watchlist": "نظر ۾ فھرست", "prefs-editwatchlist": "نظر ۾ فھرست کي سنواريو", @@ -741,7 +726,7 @@ "recentchangescount": "عدم پيروي جي صورت ۾ ڏيکارڻ جي لاءِ ترميمون:", "prefs-help-recentchangescount": "ان ۾ تازيون تبديليون، صفحن جي سوانح، ۽ لاگ شامل آهن.", "savedprefs": "توھان جون ترجيحون سانڍجي چڪيون آھن.", - "savedrights": "{{GENDER:$1|$1}} جا يوزر گروھ سانڍجي چڪا آھن.", + "savedrights": "{{GENDER:$1|$1}} جا واپرائيندڙ گروھ سانڍجي چڪا آھن.", "timezonelegend": "اوقاتي زون:", "localtime": "مقامي وقت:", "timezoneuseserverdefault": "وڪي عدم پيروي استعمال ڪريو ($1)", @@ -765,7 +750,7 @@ "prefs-files": "فائيلس", "prefs-emailconfirm-label": "برقٽپال خاطري:", "youremail": "برقٽپال:", - "username": "{{GENDER:$1|يُوزرنانءُ}}", + "username": "{{GENDER:$1|واپرائيندڙ-نانءُ}}", "prefs-memberingroups": "{{PLURAL:$1|گروھ|گروھن}} جو {{GENDER:$2|رڪن}}:", "prefs-registration": "رجسٽريشن جو وقت:", "yourrealname": "اصل نالو:", @@ -796,16 +781,16 @@ "prefs-tokenwatchlist": "ٽوڪن", "prefs-diffs": "تفاوت", "prefs-help-prefershttps": "هيءَ ترجيح توهان جي ايند داخل ٿيڻ تي عمل ۾ ايندي.", - "userrights": "يُوزر حق", - "userrights-lookup-user": "ڪو يوزر چونڊيو", - "userrights-user-editname": "يُوزرنانءُ ڄاڻايو:", - "editusergroup": "يوزر گروھ اتاريو", - "userrights-editusergroup": "{{GENDER:$1|يوزر}} گروھ سنواريو", - "saveusergroups": "{{GENDER:$1|يوزر}} گروھ سانڍيو", + "userrights": "واپرائيندڙ جا حق", + "userrights-lookup-user": "ڪو واپرائيندڙ چونڊيو", + "userrights-user-editname": "ڪو واپرائيندڙ-نانءُ ڄاڻايو:", + "editusergroup": "واپرائيندڙ جا گروھ لاهيو", + "userrights-editusergroup": "{{GENDER:$1|واپرائيندڙ}} گروھ سنواريو", + "saveusergroups": "{{GENDER:$1|واپرائيندڙ}} گروھ سانڍيو", "userrights-groupsmember": "برڪن:", "userrights-groupsmember-auto": "رڪن واجبي:", "userrights-reason": "سبب:", - "userrights-no-interwiki": "توهان کي ٻين وڪيز تي يُوزر حقن ۾ ترميم ڪرڻ جو حق حاصل نہ آهي.", + "userrights-no-interwiki": "توهان کي ٻين وڪيز تي واپرائيندڙ حقن ۾ ترميم ڪرڻ جو حق حاصل نہ آهي.", "userrights-nodatabase": "اعداخانو $1 يا تہ وجود نہ ٿو رکي يا تہ اهو مقامي اعدادخانو نہ آهي.", "userrights-changeable-col": "گروپَ جيڪي توهان تبديل ڪري سگھو ٿا", "userrights-unchangeable-col": "گروپَ جيڪي توهان تبديل نٿا ڪري سگھو", @@ -816,7 +801,7 @@ "group-sysop": "منتظم", "group-bureaucrat": "ڪامورا", "group-all": "(سڀ)", - "group-user-member": "{{GENDER:$1|يُوزر}}", + "group-user-member": "{{GENDER:$1|واپرائيندڙ}}", "group-bot-member": "{{GENDER:$1|بوٽ}}", "group-sysop-member": "{{GENDER:$1|منتظم}}", "group-bureaucrat-member": "{{GENDER:$1|ڪامورو}}", @@ -831,7 +816,7 @@ "right-edit": "صفحا سنواريو", "right-createpage": "صفحا سنواريو (جيڪي مباحثي صفحا نہ آهن)", "right-createtalk": "مباحثي صفحا سرجيو", - "right-createaccount": "نوان يُوزر کاتا کوليو", + "right-createaccount": "نوان واپرائيندڙ کاتا کوليو", "right-minoredit": "ترميمُن کي معمُولي ڄاڻايو", "right-move": "صفحا چوريو", "right-move-subpages": "ذيلي صفحن سميت صفحا چوريو", @@ -846,13 +831,13 @@ "right-browsearchive": "ڊاٺل صفحا ڳوليو", "right-undelete": "ڪو صفحو اڻڊاهيو", "right-unblockself": "ڪنهن تان بندش ختم ڪريو", - "right-editinterface": "يُوزر باهمرُو کي سنواريو", + "right-editinterface": "واپرائيندڙ باهمرُو کي سنواريو", "right-viewmywatchlist": "پنهنجي نظر ۾ فھرست ڏسو", "right-editmyoptions": "پنهنجون ترجيحون سنواريو", "right-import": "ٻين وڪيز کان صفحا درآمديو", "right-importupload": "ڪو فائيل چاڙهي صفحا درآمديو", "right-mergehistory": "صفحن جي سوانح سنواريو", - "right-userrights": "سڀ يوزر حق ترميم ڪريو", + "right-userrights": "واپرائيندڙ جا سڀ حق سنواريو", "right-userrights-interwiki": "هن وڪي جي يوزرس جا حق ترميم ڪريو", "right-siteadmin": "اعدادخانو بنديو ۽ کوليو", "right-override-export-depth": "5ئين اونهائيءَ تائين ڳنڍيل صفحن سميت صفحا برآمديو", @@ -870,13 +855,13 @@ "grant-basic": "بنيادي حقَ", "grant-viewdeleted": "ڊَٺَلَ فائيلَ ۽ صفحا ڏسو", "grant-viewmywatchlist": "پنهنجي نظرھيٺ فھرست ڏسو", - "newuserlogpage": "يوزر تخليق لاگ", - "rightslog": "يُوزر حق لاگ", + "newuserlogpage": "واپرائيندڙ جو تخليق لاگ", + "rightslog": "واپرائيندڙ حق لاگ", "action-read": "هي صفحو پڙهو", "action-edit": "هن صفحي کي سسنواريو", "action-createpage": "ھي صفحو تخليق ڪريو", "action-createtalk": "ھي مباحثي صفحو تخليق ڪريو", - "action-createaccount": "هي يوزر کاتو تخليق ڪريو", + "action-createaccount": "ھي واپرائيندڙ کاتو سرجيو", "action-history": "هن صفحي جي سوانح ڏسو", "action-minoredit": "هن ترميم کي معمولي طور نشان لڳايو", "action-move": "هيءَُ صفحو چوريو", @@ -891,14 +876,14 @@ "action-undelete": "صفحا اڻڊاھيو", "action-suppressrevision": "لڪيل ڀيرن تي نظرثاني ڪريو ۽ بحاليو", "action-suppressionlog": "هيءُ ذاتي لاگ ڏسو", - "action-block": "هن يُوزر کي سنوارڻ کان روڪيو", + "action-block": "هن واپرائيندڙ کي سنوارڻ کان بندشيو", "action-protect": "هن صفحي جي تحفظاتي سطح بدلايو", - "action-rollback": "ڪنهن مخصوص صفحي تي آخري ترميم ڪندڙ يُوزر جي سمورين ترميمن کي ترت واپس ورايو", + "action-rollback": "ڪنهن مخصوص صفحي تي آخري ترميم ڪندڙ واپرائيندڙ جي سمورين ترميمن کي ترت واپس ورايو", "action-import": "ٻي ڪنهن وڪي کان صفحا درآمد ڪريو", "action-importupload": "ڪو فائيل چاڙهي صفحا درآمديو", "action-unwatchedpages": "اڻ ڏٺل صفحن جي فھرست ڏسو", "action-mergehistory": "هن صفحي جي سوانح ضم ڪريو", - "action-userrights": "سڀ يوزر حق ترميم ڪريو", + "action-userrights": "واپرائيندڙ جا سڀ حق سنواريو", "action-userrights-interwiki": "ٻين وڪيز جي يوزرس جا حق ترميم ڪريو", "action-siteadmin": "اعدادخاني کي بند ڪريو يا کوليو", "action-sendemail": "برقٽپال اماڻيو", @@ -925,16 +910,16 @@ "rcfilters-search-placeholder": "تازيون تبديليون ڇاڻيو (جھانگيو يا لکڻ شروع ڪريو)", "rcfilters-empty-filter": "ڪي بہ سرگرم ڇاڻيون ناھن. سڀ ڀاڱيداريون ڏيکاريل آھن.", "rcfilters-filterlist-title": "ڇاڻيون", - "rcfilters-filterlist-whatsthis": "هي ڇا آهي؟", + "rcfilters-filterlist-whatsthis": "هي ڪيئن ڪم ڪن ٿا؟", "rcfilters-highlightbutton-title": "نتيجن کي نمايان (هاءِ لائيٽ) ڪيو", "rcfilters-highlightmenu-title": "رنگ چونڊيو", - "rcfilters-filter-registered-label": "رجسٽر ٿيل", - "rcfilters-filter-unregistered-label": "اڻ رجسٽر ٿيل", "rcfilters-filter-editsbyself-label": "مون پاران تبديليون", "rcfilters-filter-editsbyother-label": "ٻين پاران تبديليون", + "rcfilters-filter-user-experience-level-registered-label": "رجسٽر ٿيل", + "rcfilters-filter-user-experience-level-unregistered-label": "اڻرجسٽر ٿيل", "rcfilters-filter-user-experience-level-newcomer-label": "نوان ايندڙ", "rcfilters-filter-user-experience-level-learner-label": "سکندڙ", - "rcfilters-filter-user-experience-level-experienced-label": "تجربيڪار واھپ", + "rcfilters-filter-user-experience-level-experienced-label": "تجربيڪار واپرائيندڙ", "rcfilters-filter-bots-label": "بوٽ", "rcfilters-filter-humans-label": "انسان (بوٽ نہ)", "rcfilters-filter-humans-description": "انساني ايڊيٽرن پاران ڪيل ترميمون.", @@ -1061,7 +1046,7 @@ "listfiles_thumb": "ٽِڪِلِي", "listfiles_date": "تاريخ", "listfiles_name": "نالو", - "listfiles_user": "يُوزر", + "listfiles_user": "واپرائيندڙ", "listfiles_size": "ماپَ", "listfiles_description": "تشريح", "listfiles_count": "ورزن", @@ -1079,9 +1064,9 @@ "filehist-thumb": "آڱوٺي ننھن", "filehist-thumbtext": "$1 جي نظرثاني لاءِ تصويري نشان", "filehist-nothumb": "ٽِڪِلِي اڻموجود", - "filehist-user": "يُوزر", + "filehist-user": "واپرائيندڙ", "filehist-dimensions": "ماپَ", - "filehist-filesize": "فائيل سائيز", + "filehist-filesize": "فائيل ماپ", "filehist-comment": "تاثر", "imagelinks": "فائيل جو استعمال", "linkstoimage": "ھن فائيل سان {{PLURAL:$1|ھيٺيون صفحو ڳنڍيل آھي |$1 ھيٺيان صفحا ڳنڍيل آھن}}:", @@ -1116,7 +1101,7 @@ "statistics": "انگ اکر", "statistics-header-pages": "صفحي جا انگ اکر", "statistics-header-edits": "ترميمن جا انگ اکر", - "statistics-header-users": "يُوزر جا انگ اکر", + "statistics-header-users": "واپرائيندڙ جا انگ اکر", "statistics-header-hooks": "ٻيا انگ اکر", "statistics-articles": "موادي صفحا", "statistics-pages": "صفحا", @@ -1176,13 +1161,13 @@ "protectedpages-reason": "سبب", "protectedpages-submit": "صفحا ڏيکاريو", "protectedpages-unknown-timestamp": "اڻڄاتل", - "protectedpages-unknown-performer": "نامعلوم يُوزر", + "protectedpages-unknown-performer": "اڻڄاتل واپرائيندڙ", "protectedtitles": "تحفظيل عنوان", "protectedtitles-submit": "عنوان ڏيکاريو", - "listusers": "يُوزر فهرست", + "listusers": "واپرائيندڙن جي فهرست", "newpages": "نوان صفحا", "newpages-submit": "ڏيکاريو", - "newpages-username": "يُوزرنانءُ:", + "newpages-username": "واپرائيندڙ-نانءُ:", "ancientpages": "قديم ترين صفحا", "move": "چوريو", "movethispage": "هيءُ صفحو چوريو", @@ -1204,6 +1189,7 @@ "log": "لاگس", "logeventslist-submit": "ڏيکاريو", "all-logs-page": "سڀ عوامي لاگس", + "checkbox-all": "سڀ", "checkbox-none": "ڪو بہ نہ", "checkbox-invert": "ابتيو", "allpages": "سڀ صفحا", @@ -1218,21 +1204,21 @@ "allpagesbadtitle": "صفحي جو گھربل عنوان ڪار ڪونهي، يا خالي آهي، يا وري غيردرست طريقي سان ڳنڍيل بين‌الزباني يا بين‌الوڪي عنوان آهي. \nان ۾ هڪ يا هڪ کان وڌيڪ اهڙا اکر موجود ٿي سگھن ٿا، جيڪي عنوان ۾ استعمال ڪري نہ ٿا سگھجن.", "categories": "زمرا", "categories-submit": "ڏيکاريو", - "deletedcontributions": "يُوزر جون ڊاٺل ڀاڱيداريون", - "deletedcontributions-title": "يُوزر جون ڊاٺل ڀاڱيداريون", + "deletedcontributions": "واپرائيندڙ جون ڊاٿل ڀاڱيداريون", + "deletedcontributions-title": "واپرائيندڙ جون ڊاٿل ڀاڱيداريون", "sp-deletedcontributions-contribs": "ڀاڱيداريون", "linksearch-ns": "نانءُپولار", "linksearch-ok": "ڳوليو", - "listusersfrom": "تي شروع ڪندڙ يوزر ڏيکاريو:", + "listusersfrom": "تي شروع ڪندڙ واپرائيندڙ ڏيکاريو:", "listusers-submit": "ڏيکاريو", - "listusers-noresult": "ڪو بہ يُوزر نہ لڌو", + "listusers-noresult": "ڪو بہ واپرائيندڙ نہ لڌو.", "listusers-blocked": "(بندشيل)", "activeusers": "سرگرم يُوزرس جي فهرست", "activeusers-groups": "گروھن سان تعلق رکندڙ يوزرس ڏيکاريو:", "activeusers-excludegroups": "گروھن سان تعلق رکندڙ گروھ ڇڏيو:", "activeusers-noresult": "ڪي بہ يُوزرس نہ لڌا.", "activeusers-submit": "سرگرم يُوزرس ڏيکاريو", - "listgrouprights": "يوزر گروپ جا حق", + "listgrouprights": "واپرائيندڙ گروھ جا حق", "listgrouprights-group": "گروهہ:", "listgrouprights-rights": "حق", "listgrouprights-members": "(رڪنن جي فھرست)", @@ -1243,14 +1229,14 @@ "trackingcategories-name": "پيغام جو نالو", "trackingcategories-nodesc": "ڪا به تشريح موجود نه آهي.", "trackingcategories-disabled": "زمرو ناقابلِ ڪار بڻايل آهي.", - "emailuser": "هن واھپ کي برق ٽپال اماڻيو", - "emailuser-title-target": "ھن {{GENDER:$1|يوزر}} ڏانھن برقٽپال موڪليو", - "emailuser-title-notarget": "واھپ ڏانھن برقٽپال اماڻيو", - "usermaildisabled": "يوزر ايميل ناقابلِ ڪار بڻيل", + "emailuser": "هن واپرائيندڙ کي برقٽپال اماڻيو", + "emailuser-title-target": "ھن {{GENDER:$1|واپرائيندڙ}} ڏانھن برقٽپال موڪليو", + "emailuser-title-notarget": "واپرائيندڙ ڏانھن برقٽپال اماڻيو", + "usermaildisabled": "واپرائيندڙ برقٽپال ناقابلِڪار بڻيل", "usermaildisabledtext": "توهان هن وڪي تي ٻين يوزرس ڏانهن ايميل نٿا موڪلي سگھو", "noemailtitle": "برقٽپال پتو ناھي", - "noemailtext": "هن واھپ ڪو بہ قابلِڪار برقٽپال پتو نہ ڄاڻايو آهي.", - "emailusername": "يُوزرنانءُ:", + "noemailtext": "هن واپرائيندڙ ڪو بہ قابلِڪار برقٽپال پتو نہ ڄاڻايو آهي.", + "emailusername": "واپرائيندڙ-نانءُ:", "emailusernamesubmit": "جمع ڪرايو", "emailfrom": "طرفان:", "emailto": "ڏانهن:", @@ -1272,7 +1258,7 @@ "unwatch": "نظر ۾ نہ رکو", "unwatchthispage": "نظر ۾ رکڻ ڇڏيو", "notanarticle": "غير موادي صفحو", - "watchlist-details": "{{PLURAL:$1|$1 صفحو|$1 صفحا}} توهان جي ٽيٽ فهرست، ڳالھ ٻولھ جا صفحا الڳ شمار نٿا ٿين.", + "watchlist-details": "توھان جي نظر ۾ فھرست (گڏوگڏ بحث صفحن تي) {{PLURAL:$1|$1 صفحو آھي|$1 صفحا آھن}}.", "wlshowlast": "گذريل $1 ڪلاڪ $2 ڏينهن ڏيکاريو", "watchlist-hide": "لڪايو", "watchlist-submit": "ڏيکاريو", @@ -1286,9 +1272,9 @@ "watching": "نظر ۾ رکندي...", "unwatching": "نظر مان ڪڍندي...", "enotif_reset": "سڀ گھميل صفحن تي نشان لڳايو", - "enotif_impersonal_salutation": "{{SITENAME}} يُوزر", + "enotif_impersonal_salutation": "{{SITENAME}} واپرائيندڙ", "enotif_lastdiff": "هي تبديلي ڏسڻ لاءِ، $1 ڏسو", - "enotif_anon_editor": "گمنام يُوزر $1", + "enotif_anon_editor": "گمنام واپرائيندڙ $1", "created": "ٺهي چڪو", "changed": "تبديل ٿي ويو", "deletepage": "صفحو ڊاهيو", @@ -1363,26 +1349,26 @@ "tooltip-invert": "هن دٻي تي نشان لڳايو صحفن ۾ تبديليون لڪائڻ لاءِ چونڊيل نانءَپولار مان (۽ لاڳاپيل نانءُپولار جيڪڏهن نشان لڳل)", "namespace_association": "منسلڪ نانءُپولار", "blanknamespace": "(مُک)", - "contributions": "{{GENDER:$1|يوزر}} جون ڀاڱيداريون", - "contributions-title": "يُوزر ڀاڱيداريون براءِ $1", + "contributions": "{{GENDER:$1|واپرائيندڙ}} جون ڀاڱيداريون", + "contributions-title": "$1 لاءِ واپرائيندڙ جون ڀاڱيداريون", "mycontris": "ڀاڱيداريون", "anoncontribs": "ڀاڱيداريون", "contribsub2": "{{GENDER:$3|$1}} ($2) لاءِ", - "contributions-userdoesnotexist": "يُوزر کاتو \"$1\" درج ٿيل نہ آهي.", + "contributions-userdoesnotexist": "واپرائيندڙ کاتو \"$1\" درج ٿيل نہ آهي.", "uctop": "(هاڻوڪو)", "month": "مھيني کان (۽ اڳوڻيون):", "year": "سال کان (۽ اڳوڻيون):", "sp-contributions-newbies": "صرف نون کاتن جون ڀاڱيداريون ڏيکاريو", "sp-contributions-newbies-sub": "نون کاتن لاءِ", - "sp-contributions-newbies-title": "نون کاتن جي لاءِ يوزر جون ڀاڱيداريون", + "sp-contributions-newbies-title": "نون کاتن جي لاءِ واپرائيندڙ جون ڀاڱيداريون", "sp-contributions-blocklog": "بندش لاگ", - "sp-contributions-deleted": "ڊاٿل {{GENDER:$1|يوزر}} ڀاڱيداريون", + "sp-contributions-deleted": "{{GENDER:$1|واپرائيندڙ}} جون ڊاٿل ڀاڱيداريون", "sp-contributions-uploads": "چاڙھَ", "sp-contributions-logs": "لاگس", "sp-contributions-talk": "ڳالھ", "sp-contributions-userrights": "{{GENDER:$1|يوُزر}} حقن جي سنڀال", "sp-contributions-search": "ڀاڱيدارين لاءِ ڳولا ڪريو", - "sp-contributions-username": "آءِپي پتو يا يوزرنانءُ:", + "sp-contributions-username": "آءِپي پتو يا واپرائيندڙ-نانءُ:", "sp-contributions-submit": "ڳوليو", "whatlinkshere": "هتان ڇا ڳنڍيل آهي", "whatlinkshere-title": "\"$1\" سان ڳنڍيندڙ صفحا", @@ -1399,10 +1385,10 @@ "whatlinkshere-hidelinks": "$1 ڳنڍڻا", "whatlinkshere-filters": "ڇاڻيون", "whatlinkshere-submit": "هلو", - "block": "يُوزر کي بندشيو", - "unblock": "يُوزر کي اڻبندشيو", - "blockip": "{{GENDER:$1|يوزر}} تي بندش وجھو", - "blockip-legend": "يُوزر کي بندشيو", + "block": "واپرائيندڙ کي بندشيو", + "unblock": "واپرائيندڙ کي اڻبندشيو", + "blockip": "{{GENDER:$1|واپرائيندڙ}} تي بندش وجھو", + "blockip-legend": "واپرائيندڙ کي بندشيو", "ipbexpiry": "اختتام:", "ipbreason": "سبب:", "ipbother": "ٻيو وقت:", @@ -1410,7 +1396,7 @@ "ipb-confirm": "بندش جي پڪ ڪريو", "badipaddress": "ناقابلڪار آءِ پي پتو", "blockipsuccesssub": "بندش ڪامياب ٿي", - "unblockip": "يُوزر کي اڻبندشيو", + "unblockip": "واپرائيندڙ کي اڻبندشيو", "ipusubmit": "اها بندش هٽايو", "unblocked-range": "$1 تان بندش هٽي چڪي آهي.", "unblocked-id": "بندش $1 هٽي چڪي آهي.", @@ -1436,7 +1422,7 @@ "unblocklogentry": "$1 تان بندش هٽائي وئي", "block-log-flags-anononly": "فقط نامعلوم يوزرس", "block-log-flags-noemail": "برقٽپال غير فعال", - "block-log-flags-hiddenname": "لڪل يُوزرنانءُ", + "block-log-flags-hiddenname": "واپرائيندڙ-نانءُ لڪل", "ipb_already_blocked": "\"$1\" اڳ ۾ ئي بندشيل آهي.", "ipbnounblockself": "توهان پنهنجو پاڻ تان بندش هٽائي نہ ٿا سگھو.", "lockdb": "اعدادخاني کي بنديو", @@ -1480,8 +1466,8 @@ "import-upload-filename": "فائيل نانءُ:", "import-comment": "تاثر:", "importlogpage": "درآمد لاگ", - "tooltip-pt-userpage": "{{GENDER:|توھانجو يوزر}} صفحو", - "tooltip-pt-mytalk": "{{GENDER:|توھانجو}} يوزر صفحو", + "tooltip-pt-userpage": "{{GENDER:|توھانجو}} صفحو", + "tooltip-pt-mytalk": "{{GENDER:|توھانجو}} بحث صفحو", "tooltip-pt-preferences": "{{GENDER:|توھانجون}} ترجيحون", "tooltip-pt-watchlist": "صفحن جي فھرست جيڪي توھان تبديلين لاءِ نظر ۾ رکيا آھن", "tooltip-pt-mycontris": "{{GENDER:|توھانجي}} ڀاڱيدارين جي فھرست", @@ -1512,14 +1498,14 @@ "tooltip-t-whatlinkshere": "ھتان ڳنڍيل سمورن وڪي صفحن جي فھرست", "tooltip-t-recentchangeslinked": "ويجھڙائيءَ ۾ صفحن ۾ ٿيل تبديليون هن صفحي سان ڳنڍيل آهن", "tooltip-feed-atom": "هن صفحي لاءِ ايٽم فيڊ", - "tooltip-t-contributions": "{{GENDER:$1|ھن يوزر}} جي ڀاڱيدارين جي فھرست", - "tooltip-t-emailuser": "{{GENDER:$1|ھن يوزر}} ڏانھن برقٽپال موڪليو", + "tooltip-t-contributions": "{{GENDER:$1|ھن واپرائيندڙ}} جي ڀاڱيدارين جي فھرست", + "tooltip-t-emailuser": "{{GENDER:$1|ھن واپرائيندڙ}} ڏانھن برقٽپال موڪليو", "tooltip-t-upload": "فائيل چاڙهيو", "tooltip-t-specialpages": "سڀني خاص صفحن جي فھرست", "tooltip-t-print": "هن صفحي جو ڇاپائتو پرت", "tooltip-t-permalink": "صفحي جي ان نظرثاليءَ ڏانھن مستقل ڳنڍڻو", "tooltip-ca-nstab-main": "مواد جي صفحي کي ڏسو", - "tooltip-ca-nstab-user": "ھن جو يُوزر صفحو ڏسو", + "tooltip-ca-nstab-user": "واپرائيندڙ جو صفحو ڏسو", "tooltip-ca-nstab-special": "هيءُ خاص صفحو آهي، ان ۾ ترميم نٿي ڪري سگھجي", "tooltip-ca-nstab-project": "رٿائي صفحو ڏسو", "tooltip-ca-nstab-image": "ھن فائيل جو صفحو ڏسو", @@ -1533,8 +1519,9 @@ "tooltip-compareselectedversions": "هن صفحي جن ٻن چونڊيل پرتن درميان تفاوت ڏسو.", "tooltip-watch": "هيءُ صفحو پنهنجي نظر ۾ فھرست ۾ شامل ڪريو", "tooltip-rollback": "\"واپس ورايو\" ھن صفحي ۾ پوئين ڀاڱيدار جي ڪيل ترميم(ن) کي ھڪ ٽڙڪ سان اڻڪري ٿو", + "tooltip-preferences-save": "ترجيحون سانڍيو", "tooltip-summary": "ننڍو خلاصو ڏيو", - "anonymous": "گمنام {{PLURAL:$1|يوزر|يوزرس}} جو {{SITENAME}}", + "anonymous": "{{SITENAME}} جا گمنام {{PLURAL:$1|واپرائيندڙ|واپرائيندڙَ}}", "simpleantispam-label": "اينٽي-اسپام روڪ.\nھن کي نہ ڀريو!", "pageinfo-toolboxlink": "صفحي جي معلومات", "pageinfo-contentpage-yes": "ها", @@ -1542,6 +1529,7 @@ "pageinfo-category-total": "رڪنن جو ڪل تعداد", "pageinfo-category-subcats": "ذيلي زمرن جو تعداد", "pageinfo-category-files": "صفحن جو تعداد", + "markaspatrolledtext": "ھن صفحي کي گشت ڪيل طور نشان لڳايو", "previousdiff": "← اڳوڻي ترميم", "nextdiff": "نئين تر ترميم →", "file-info-size": "$1 × $2 عڪسلون، فائيل سائيز: $3، MIME ٽائيپ: $4", @@ -1551,10 +1539,13 @@ "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|فريم|فريمَ}}", + "file-info-png-frames": "$1 {{PLURAL:$1|فريم|فريمَ}}", "newimages": "نون فائيلن جي گيلري", "noimages": "ڏسڻ لاءِ ڪجھہ ناهي.", "ilsubmit": "ڳوليو", "bydate": "تاريخوار", + "days-abbrev": "$1 ڏ", "hours": "{{PLURAL:$1|$1 ڪلاڪ|$1 ڪلاڪَ}}", "days": "{{PLURAL:$1|$1 ڏينهن|$1 ڏينهَن}}", "weeks": "{{PLURAL:$1|$1 هفتو|$1 هفتا}}", @@ -1595,7 +1586,7 @@ "exif-colorspace": "رنگ پولار", "exif-pixelxdimension": "عڪس جي ويڪر", "exif-pixelydimension": "عڪس جي اوچائي", - "exif-usercomment": "يُوزر جا تاثرات", + "exif-usercomment": "واپرائيندڙ جا تاثرات", "exif-relatedsoundfile": "لاڳاپيل آوازي فائيل", "exif-datetimeoriginal": "اعداد جي جڙڻ جي تاريخ ۽ وقت", "exif-datetimedigitized": "عددڪاريءَ جي تاريخ ۽ وقت", @@ -1771,9 +1762,9 @@ "htmlform-cloner-delete": "هٽايو", "htmlform-title-not-exists": "$1 وجود نٿو رکي.", "logentry-delete-delete": "$1 {{GENDER:$2|ڊاٿو}} صفحو $3", - "revdelete-uname-hid": "يُوزرنانءُ لڪل", + "revdelete-uname-hid": "واپرائيندڙ-نانءُ لڪل", "logentry-move-move": "$1 {{GENDER:$2|چوريو}} صفحو $3 ڏانهن $4", - "logentry-newusers-create": "يوزر کاتو $1 {{GENDER:$2|سرجيو ويو}}", + "logentry-newusers-create": "واپرائيندڙ کاتو $1 {{GENDER:$2|سرجيو ويو}}", "logentry-upload-upload": "$1 {{GENDER:$2|چاڙهيو}} $3", "rightsnone": "(ڪو بہ نہ)", "feedback-back": "پوئتي", @@ -1804,8 +1795,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": "تامل", @@ -1814,7 +1807,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 368e648c8a..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": "Murzemt ɣ tasatmt tamaynut", - "cancel": "ḥiyyd", + "newwindow": "(ⵉⵜⵜⵏⵓⵔⵥⵓⵎ ⴷⴳ ⵓⵙⴽⵙⵍ ⴰⵎⴰⵢⵏⵓ)", + "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,42 +169,42 @@ "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": "Imbddeln imggura n tasna yad z $1, s $2.", + "lastmodifiedat": "ⴰⵙⵏⴼⵍ ⵉⴳⴳⵯⵔⴰⵏ ⵖ ⵜⴰⵙⵏⴰ ⴰⴷ ⵉⵜⵜⵢⵓⵙⴽⵔ ⴰⵙⵙ ⵏ $1 ⵖ $2.", "viewcount": "Tmmurzm tasna yad {{PLURAL:$1|yat twalt|$1 mnnawt twal}}.", "protectedpage": "Tasnayat iqn ugdal nes.", - "jumpto": "Ftu s:", + "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": "ⵉⵙⵎⵉⴳⵍⵏ", "disclaimerpage": "Project:ⴰⵙⵎⵉⴳⵍ ⴰⵎⴰⵜⴰⵢ", - "edithelp": "Aws ɣ tirra", + "edithelp": "ⵜⵉⵡⵉⵙⵉ ⴷⴳ ⵓⵙⵏⴼⵍ", "helppage-top-gethelp": "ⵜⵉⵡⵉⵙⵉ", "mainpage": "ⵜⴰⵙⵏⴰ ⵏ ⵓⵙⵏⵓⴱⴳ", "mainpage-description": "ⵜⴰⵙⵏⴰ ⵏ ⵓⵙⵏⵓⴱⴳ", "policy-url": "Project:ⵜⴰⵙⵔⵜⵉⵜ", - "portal": "ⴰⵡⵡⵓⵔ ⵏ ⵜⴳⵔⴰⵡⵜ", - "portal-url": "Project:ⴰⵡⵡⵓⵔ ⵏ ⵜⴳⵔⴰⵡⵜ", + "portal": "ⴰⴳⴳⵓⵔ ⵏ ⵜⴳⵔⴰⵡⵜ", + "portal-url": "Project:ⴰⴳⴳⵓⵔ ⵏ ⵜⴳⵔⴰⵡⵜ", "privacy": "ⵜⴰⵙⵔⵜⵉⵜ ⵏ ⵜⵉⵏⵏⵓⵜⵍⴰ", "privacypage": "Project:ⵜⴰⵙⵔⵜⵉⵜ ⵏ ⵜⵉⵏⵏⵓⵜⵍⴰ", "badaccess": "Anezri (uras tufit)", @@ -218,52 +218,52 @@ "retrievedfrom": "Yurrid z \"$1\"", "youhavenewmessages": "{{PLURAL:$3|{{GENDER:$3|ⴷⴰⵔⴽ|ⴷⴰⵔⵎ}}}} $1 ($2).", "newmessageslinkplural": "{{PLURAL:$1|ⵜⵓⵣⵉⵏⵜ ⵜⴰⵎⴰⵢⵏⵓⵜ|ⵜⵓⵣⵉⵏⵉⵏ ⵜⵉⵎⴰⵢⵏⵓⵜⵉⵏ}}", - "newmessagesdifflinkplural": "{{PLURAL:$1|ⴰⵙⵏⴼⵍ ⵉⴳⴳⵯⵔⴰⵏ|ⵉⵙⵏⴼⵍⵏ ⴳⴳⵯⵔⴰⵏⵉⵏ}}", - "youhavenewmessagesmulti": "{{GENDER:|ⴷⴰⵔⴽ|ⴷⴰⵔⵎ}} ⵜⵓⵣⵉⵏⵉⵏ ⵜⵉⵎⴰⵢⵏⵓⵜⵉⵏ ⴳ $1", + "newmessagesdifflinkplural": "{{PLURAL:$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-benefit-body1": "{{PLURAL:$1|ⴰⵙⵏⴼⵍ|ⵉⵙⵏⴼⵍⵏ}}", + "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": "Ẓrig $1 (tagzumt)", - "yourtext": "nss nek", - "storedversion": "noskha ityawsjaln", + "editingsection": "ⴰⵙⵏⴼⵍ ⵏ $1 (ⵜⵉⴳⵣⵎⵉ)", + "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,110 +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": "Cabba ɣ kullu may ityran ɣid (d ḥtta ɣ tisna nu umsgdal)", - "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|ⵡⴰⵙⵙ|ⵡⵓⵙⵙⴰⵏ}} ⵙ ⵉⴳⴳⵓⵜ", "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": "ⵜⵉⵣⵉ ⵏ ⵓⵣⵎⵎⴻⵎ:", @@ -561,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", - "grouppage-bot": "{{ns:project}}:ⵉⴷ ⴱⵓⵜ", - "grouppage-sysop": "{{ns:project}}: Inedbalen", + "group-bot": "ⵉⵔⵓⴱⵓⵜⵏ", + "group-sysop": "ⵉⵏⵎⵀⴰⵍⵏ", + "grouppage-bot": "{{ns:project}}:ⵉⵔⵓⴱⵓⵜⵏ", + "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", @@ -583,44 +586,53 @@ "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": "Tixtiɣitin (options) n imbddl imaynutn", - "recentchanges-summary": "Ml imbddln imaynutn n wiki ɣ tasna yad", - "recentchanges-feed-description": "ⴹⴼⵓⵔ ⵉⵙⵏⴼⵍⵏ ⴰⴽⴽⵯ ⵉⴳⴳⵯⵔⴰⵏ ⵏ ⵓⵡⵉⴽⵉ ⴳ ⵉⴼⵉⵍⵉ ⴰⴷ.", + "recentchanges": "ⵉⵙⵏⴼⵉⵍⵏ ⴳⴳⵯⵔⴰⵏⵉⵏ", + "recentchanges-legend": "ⵜⵉⵙⵖⴰⵍ ⵏ ⵉⵙⵏⴼⵉⵍⵏ ⴳⴳⵯⵔⴰⵏⵉⵏ", + "recentchanges-summary": "ⴹⴼⵓⵔ ⴰⵎⴰⵢⵏⵓ ⴰⴽⴽⵯ ⵖ ⵉⵙⵏⴼⵉⵍⵏ ⵏ ⵓⵡⵉⴽⵉ ⵖ ⵜⴰⵙⵏⴰ ⴰⴷ.", + "recentchanges-feed-description": "ⴹⴼⵓⵔ ⵉⵙⵏⴼⵉⵍⵏ ⴰⴽⴽⵯ ⵉⴳⴳⵯⵔⴰⵏ ⵏ ⵓⵡⵉⴽⵉ ⵖ ⵉⴼⵉⵍⵉ ⴰⴷ.", "recentchanges-label-newpage": "ⵉⵙⵏⵓⵍⴼⴰ ⵓⵙⵏⴼⵍ ⴰⴷ ⵢⴰⵜ ⵜⴰⵙⵏⴰ ⵜⴰⵎⴰⵢⵏⵓⵜ", "recentchanges-label-minor": "ⵡⴰⴷ ⵉⴳⴰ ⴰⵙⵏⴼⵍ ⵓⵎⵥⵉⵢ", "recentchanges-label-bot": "ⴰⵙⵏⴼⵍ ⴰⴷ ⵉⵙⴽⵔ ⵜ ⵢⴰⵏ ⵓⵔⵓⴱⵓ", "recentchanges-label-unpatrolled": "Ambddl ad ura jju ittmẓra", + "recentchanges-label-plusminus": "ⵜⵏⴼⵍ ⵜⵉⴷⴷⵉ ⵏ ⵜⴰⵙⵏⴰ ⵙ ⵡⵓⵟⵟⵓⵏ ⴰⴷ ⵏ ⵉⴷ ⴱⴰⵢⵜ", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (ⵥⵔ ⵓⵍⴰ [[Special:NewPages|ⵜⴰⵍⴳⴰⵎⵜ ⵏ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵜⵉⵎⴰⵢⵏⵓⵜⵉⵏ]])", + "rcfilters-legend-heading": "ⵜⵉⵣⴳⵣⵉⵍⵉⵏ:", + "rcfilters-days-title": "ⵓⵙⵙⴰⵏ ⴳⴳⵯⵔⴰⵏⵉⵏ", + "rcfilters-hours-title": "ⵜⵉⵙⵔⴰⴳⵉⵏ ⴳⴳⵯⵔⴰⵏⵉⵏ", + "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", - "rcshowhideminor": "$1 ⵉⵙⵏⴼⵍⵏ ⵓⵎⵥⵉⵢⵏ", + "rcfilters-filter-bots-label": "ⴰⵔⵓⴱⵓ", + "rcnotefrom": "ⴷⴷⴰⵡ ⴰⵙ {{PLURAL:$5|ⴰⵙⵏⴼⵍ|ⵉⵙⵏⴼⵉⵍⵏ}} ⵣⵖ $3, $4 (ⴰⵔ $1 ⴰⴷ ⵉⴱⴰⵢⵏⴻⵏ ⵙ ⵉⴳⴳⵓⵜ).", + "rclistfrom": "ⵎⵍ ⵉⵙⵏⴼⵉⵍⵏ ⵉⵎⴰⵢⵏⵓⵜⵏ ⵣⵖ $3 ⵖ $2", + "rcshowhideminor": "$1 ⵉⵙⵏⴼⵉⵍⵏ ⵓⵎⵥⵉⵢⵏ", "rcshowhideminor-hide": "ⵙⵙⵏⵜⵍ", - "rcshowhidebots": "$1 ⵉⴷ ⴱⵓⵜ", + "rcshowhidebots": "$1 ⵉⵔⵓⴱⵓⵜⵏ", + "rcshowhidebots-show": "ⵎⵍ", "rcshowhidebots-hide": "ⵙⵙⵏⵜⵍ", "rcshowhideliu": "$1 ⵉⵙⵎⵔⴰⵙⵏ ⵣⵎⵎⴻⵎⵏⵉⵏ", + "rcshowhideliu-show": "ⵎⵍ", "rcshowhideliu-hide": "ⵙⵙⵏⵜⵍ", "rcshowhideanons": "$1 midn ur ttuyssan nin", + "rcshowhideanons-show": "ⵎⵍ", "rcshowhideanons-hide": "ⵙⵙⵏⵜⵍ", - "rcshowhidepatr": "$1 Imbddln n tsagga", + "rcshowhidepatr": "$1 ⵉⵙⵏⴼⵉⵍⵏ ⵜⵜⵡⴰⵃⴹⴰⵏⵉⵏ", "rcshowhidepatr-hide": "ⵙⵙⵏⵜⵍ", - "rcshowhidemine": "$1 ⵉⵙⵏⴼⵍⵏ ⵉⵏⵓ", + "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": "ⴱ", @@ -628,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", - "recentchangeslinked": "Imbddel zun ɣwid", + "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-title": "ⵉⵙⵏⴼⵉⵍⵏ ⵇⵇⵏⵏⵉⵏ ⵙ \"$1\"", + "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", @@ -657,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": "ⵜⵓⵔⴰⴳⵜ", @@ -671,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": "ⵙⵎⴰⵜⵜⵉ ⵜⴰⵙⵏⴰ ⴰⴷ", + "move": "ⵙⵎⵓⵜⵜⵉ", + "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", @@ -739,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": "ⵜⴰⵔⴰⴱⴱⵓⵜ", @@ -758,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", @@ -771,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.", @@ -798,23 +812,23 @@ "restriction-type": "ⵜⵓⵔⴰⴳⵜ:", "restriction-level": "Restriction level:", "restriction-edit": "ⵙⵏⴼⵍ", - "restriction-move": "ⵙⵎⴰⵜⵜⵉ", + "restriction-move": "ⵙⵎⵓⵜⵜⵉ", "undeletelink": "mel/rard", "undeleteviewlink": "Ẓṛ", "undelete-search-submit": "ⵙⵉⴳⴳⵍ", "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)", @@ -827,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", @@ -855,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": "ⵔⵏⵓ", @@ -891,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.", @@ -909,44 +924,44 @@ "tooltip-ca-unprotect": "ⵙⵏⴼⵍ ⴰⴼⵔⴰⴳ ⵏ ⵜⴰⵙⵏⴰ ⴰⴷ", "tooltip-ca-delete": "ⴽⴽⵙ ⵜⴰⵙⵏⴰ ⴰⴷ", "tooltip-ca-undelete": "Rard imbddeln imzwura li ittyskarnin ɣ tasna yad", - "tooltip-ca-move": "ⵙⵎⴰⵜⵜⵉ ⵜⴰⵙⵏⴰ ⴰⴷ", + "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-p-logo": "Tasnat tamuqrant", - "tooltip-n-mainpage": "Kkid tasna tamzwarut", - "tooltip-n-mainpage-description": "Kid tasna tamuqrant", - "tooltip-n-portal": "f' usenfar, matzdart atitskrt, maniɣrattaft ɣayli trit", + "tooltip-search-fulltext": "ⵙⵉⴳⴳⵍ ⴰⴹⵔⵉⵙ ⴰⴷ ⵖ ⵜⴰⵙⵏⵉⵡⵉⵏ", + "tooltip-p-logo": "ⴽⴽ ⴷ ⵜⴰⵙⵏⴰ ⵏ ⵓⵙⵏⵓⴱⴳ", + "tooltip-n-mainpage": "ⴽⴽ ⴷ ⵜⴰⵙⵏⴰ ⵏ ⵓⵙⵏⵓⴱⴳ", + "tooltip-n-mainpage-description": "ⴽⴽ ⴷ ⵜⴰⵙⵏⴰ ⵏ ⵓⵙⵏⵓⴱⴳ", + "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", @@ -955,24 +970,26 @@ "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 ⵡⵓⵙⵙⴰⵏ}}", "ago": "$1 ⴰⵢⴰ", "hours-ago": "$1 {{PLURAL:$1|ⵜⵙⵔⴰⴳⵜ|ⵜⵙⵔⴰⴳⵉⵏ}} ⴰⵢⴰ", "minutes-ago": "$1 {{PLURAL:$1|ⵜⵓⵙⴷⵉⴷⵜ|ⵜⵓⵙⴷⵉⴷⵉⵏ}} ⴰⵢⴰ", @@ -982,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": "ⵜⵓⵜⵍⴰⵢⵜ", @@ -1013,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": "ⴰⴽⴽⵯ", @@ -1038,18 +1056,18 @@ "confirm-unwatch-button": "ⵡⴰⵅⵅⴰ", "confirm-rollback-button": "ⵡⴰⵅⵅⴰ", "quotation-marks": "\"$1\"", - "imgmultigo": "ballak !", + "imgmultigo": "ⴷⴷⵓ!", "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", @@ -1073,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", @@ -1094,7 +1112,7 @@ "tags-active-no": "ⵓⵀⵓ", "tags-edit": "ⵙⵏⴼⵍ", "tags-delete": "ⴽⴽⵙ", - "tags-hitcount": "$1 {{PLURAL:$1|ⵓⵙⵏⴼⵍ|ⵉⵙⵏⴼⵍⵏ}}", + "tags-hitcount": "$1 {{PLURAL:$1|ⵓⵙⵏⴼⵍ|ⵉⵙⵏⴼⵉⵍⵏ}}", "tags-create-submit": "ⵙⵏⵓⵍⴼⵓ", "comparepages": "ⵙⵎⵣⴰⵣⴰⵍ ⵜⴰⵙⵏⵉⵡⵉⵏ", "compare-page1": "ⵜⴰⵙⵏⴰ 1", @@ -1120,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..30434b638d 100644 --- a/languages/i18n/sk.json +++ b/languages/i18n/sk.json @@ -691,7 +691,6 @@ "explainconflict": "Niekto iný zmenil túto stránku, zatiaľ čo ste ju upravovali vy.\nHorné okno na úpravy obsahuje text stránky tak, ako je momentálne platný.\nVaše úpravy sú uvedené v dolnom okne na úpravy.\nBudete musieť zlúčiť vaše zmeny s existujúcim textom.\n'''Iba''' obsah horného okna sa uloží, keď stlačíte „$1“.", "yourtext": "Váš text", "storedversion": "Uložená verzia", - "nonunicodebrowser": "UPOZORNENIE: Váš prehliadač nepodporuje Unicode.\nDočasným riešením ako bezpečne upravovať stránky je, že ne-ASCII znaky sa v upravovacom textovom poli zobrazia ako zodpovedajúce hexadecimálne hodnoty.", "editingold": "UPOZORNENIE: Upravujete starú verziu tejto stránky.\nAk vašu úpravu uložíte, prepíšete tým všetky úpravy, ktoré nasledovali po tejto starej verzii.", "yourdiff": "Rozdiely", "copyrightwarning": "Nezabudnite, že všetky príspevky do {{GRAMMAR:genitív|{{SITENAME}}}} sa považujú za príspevky pod licenciou $2 (podrobnosti pozri pod $1). Ak nechcete, aby bolo to, čo ste napísali, neúprosne upravované a ďalej ľubovoľne rozširované, tak sem váš text neumiestňujte.
    \n\nTýmto sa právne zaväzujete, že ste tento text buď napísali sám, alebo že je skopírovaný\nz voľného diela (public domain) alebo podobného zdroja neobmedzeného autorskými právami.\nNEUMIESTŇUJTE SEM BEZ POVOLENIA DIELA CHRÁNENÉ AUTORSKÝM PRÁVOM!", @@ -717,7 +716,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á.", @@ -1237,7 +1237,7 @@ "action-deletedtext": "zobraziť si zmazané texty revízií", "action-browsearchive": "vyhľadávať zmazané stránky", "action-undelete": "obnoviť túto stránku", - "action-suppressrevision": "skontrolovať a obnoviť túto skrytú revíziu", + "action-suppressrevision": "skontrolovať a obnoviť tieto skryté revízie", "action-suppressionlog": "zobraziť tento súkromný záznam", "action-block": "zablokovať úpravy tohto používateľa", "action-protect": "zmeniť úrovne ochrany tejto stránky", @@ -1279,7 +1279,129 @@ "recentchanges-legend-heading": "Legenda:", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (pozri tiež [[Special:NewPages|zoznam nových stránok]])", "recentchanges-submit": "Zobraziť", + "rcfilters-tag-remove": "Odstrániť '$1'", + "rcfilters-legend-heading": "Zoznam skratiek:", + "rcfilters-other-review-tools": "Ďalšie kontrolné nástroje", + "rcfilters-group-results-by-page": "Zoskupiť výsledky podľa stránky", + "rcfilters-grouping-title": "Zoskupovanie", + "rcfilters-activefilters": "Aktívne filtre", + "rcfilters-advancedfilters": "Pokročilé filtre", + "rcfilters-limit-title": "Zobraziť zmeny", + "rcfilters-limit-shownum": "Zobraziť {{PLURAL:$1|poslednú jednu zmenu|posledné $1 zmeny|posledných $1 zmien}}", + "rcfilters-days-title": "Posledné dni", + "rcfilters-hours-title": "Posledné hodiny", + "rcfilters-days-show-days": "$1 {{PLURAL:$1|deň|dni|dní}}", + "rcfilters-days-show-hours": "$1 {{PLURAL:$1|hodina|hodiny|hodín}}", + "rcfilters-highlighted-filters-list": "Zvýraznené: $1", + "rcfilters-quickfilters": "Uložené filtre", + "rcfilters-quickfilters-placeholder-title": "Zatiaľ neboli uložené žiadne odkazy", + "rcfilters-quickfilters-placeholder-description": "Ak chcete uložiť svoje nastavenia filtrov a použiť ich neskôr, stlačte ikonu záložky v ploche aktívnych filtrov nižšie.", + "rcfilters-savedqueries-defaultlabel": "Uložené filtre", + "rcfilters-savedqueries-rename": "Premenovať", + "rcfilters-savedqueries-setdefault": "Nastaviť ako predvolené", + "rcfilters-savedqueries-unsetdefault": "Odstrániť predvolenie", + "rcfilters-savedqueries-remove": "Odstrániť", + "rcfilters-savedqueries-new-name-label": "Názov", + "rcfilters-savedqueries-new-name-placeholder": "Popíšte účel filtra", + "rcfilters-savedqueries-apply-label": "Vytvoriť filter", + "rcfilters-savedqueries-apply-and-setdefault-label": "Vytvoriť predvolený filter", + "rcfilters-savedqueries-cancel-label": "Zrušiť", + "rcfilters-savedqueries-add-new-title": "Uložiť súčasné nastavenie filtrov", + "rcfilters-restore-default-filters": "Obnoviť predvolené filtre", + "rcfilters-clear-all-filters": "Zrušiť všetky filtre", + "rcfilters-show-new-changes": "Zobraziť najnovšie zmeny", + "rcfilters-search-placeholder": "Filtrovať posledné úpravy (vyhľadávajte alebo začnite písať)", + "rcfilters-invalid-filter": "Neplatný filter", + "rcfilters-empty-filter": "Žiadne aktívne filtre. Všetky príspevky sú zobrazené.", + "rcfilters-filterlist-title": "Filtre", + "rcfilters-filterlist-whatsthis": "Ako to funguje?", + "rcfilters-filterlist-feedbacklink": "Povedzte nám, čo si myslíte o týchto (nových) filtroch", + "rcfilters-highlightbutton-title": "Zvýrazniť výsledky", + "rcfilters-highlightmenu-title": "Vybrať farbu", + "rcfilters-highlightmenu-help": "Vyberte farbu pre zvýraznenie tejto vlastnosti", + "rcfilters-filterlist-noresults": "Neboli nájdené žiadne filtre", + "rcfilters-noresults-conflict": "Neboli nájdené žiadne výsledky, pretože vyhľadávacie kritériá sú v konflikte", + "rcfilters-state-message-subset": "Tento filter nemá žiaden efekt, pretože jeho výsledky sú zahrnuté {{PLURAL:$2|v nasledujúcom širšom filtri|v nasledujúcich širších filtroch}} (pre odlíšenie skúste zvýraznenie): $1", + "rcfilters-state-message-fullcoverage": "Zvolenie všetkých filtrov v tejto skupine je akoby ste nevybrali žiaden, čiže tento filter nemá žiaden efekt. Skupina zahŕňa: $1", + "rcfilters-filtergroup-authorship": "Autorstvo príspevku", + "rcfilters-filter-editsbyself-label": "Vaše zmeny", + "rcfilters-filter-editsbyself-description": "Vaše vlastné príspevky.", + "rcfilters-filter-editsbyother-label": "Zmeny ostatných používateľov", + "rcfilters-filter-editsbyother-description": "Všetky zmeny okrem vašich.", + "rcfilters-filtergroup-userExpLevel": "Registrácia a skúsenosť používateľov", + "rcfilters-filter-user-experience-level-registered-label": "Registrácia", + "rcfilters-filter-user-experience-level-registered-description": "Prihlásení redaktori.", + "rcfilters-filter-user-experience-level-unregistered-label": "Neregistrovaní", + "rcfilters-filter-user-experience-level-unregistered-description": "Redaktori, ktorí nie sú prihlásení.", + "rcfilters-filter-user-experience-level-newcomer-label": "Nováčikovia", + "rcfilters-filter-user-experience-level-newcomer-description": "Registrovaní používatelia s menej ako 10 úpravami a 4 dňami aktivity.", + "rcfilters-filter-user-experience-level-learner-label": "Začiatočníci", + "rcfilters-filter-user-experience-level-learner-description": "Registrovaní používatelia, ktorých skúsenosti spadajú medzi „Nováčikmi“ a „Skúsenými používateľmi“.", + "rcfilters-filter-user-experience-level-experienced-label": "Skúsení používatelia", + "rcfilters-filter-user-experience-level-experienced-description": "Registrovaní používatelia s viac ako 500 úpravami a 30 dňami aktivity.", + "rcfilters-filtergroup-automated": "Automatizované úpravy", + "rcfilters-filter-bots-label": "Bot", + "rcfilters-filter-bots-description": "Úpravy vykonané pomocou automatizovaných nástrojov.", + "rcfilters-filter-humans-label": "Človek (nie bot)", + "rcfilters-filter-humans-description": "Úpravy vykonané ľuďmi.", + "rcfilters-filtergroup-reviewstatus": "Stav preverenia", + "rcfilters-filter-patrolled-label": "Preverené", + "rcfilters-filter-patrolled-description": "Úpravy označené ako preverené.", + "rcfilters-filter-unpatrolled-label": "Nepreverené", + "rcfilters-filter-unpatrolled-description": "Úpravy neoznačené ako preverené.", + "rcfilters-filtergroup-significance": "Dôležitosť", + "rcfilters-filter-minor-label": "Drobné úpravy", + "rcfilters-filter-minor-description": "Úpravy, ktoré autor označil ako drobné.", + "rcfilters-filter-major-label": "Nie drobné úpravy", + "rcfilters-filter-major-description": "Úpravy neoznačené ako drobné.", + "rcfilters-filtergroup-watchlist": "Sledované stránky", + "rcfilters-filter-watchlist-watched-label": "Na zozname sledovaných stránok", + "rcfilters-filter-watchlist-watched-description": "Zmeny stránok zo zoznamu sledovaných.", + "rcfilters-filter-watchlist-watchednew-label": "Nové zmeny sledovaných stránok", + "rcfilters-filter-watchlist-watchednew-description": "Zmeny stránok z vášho zoznamu sledovaných, ktoré ste od ich zmeny nenavštívili.", + "rcfilters-filter-watchlist-notwatched-label": "Nesledované stránky", + "rcfilters-filter-watchlist-notwatched-description": "Všetko okrem vašich sledovaných stránok.", + "rcfilters-filtergroup-watchlistactivity": "Aktivita v sledovaných stránkach", + "rcfilters-filter-watchlistactivity-unseen-label": "Nezobrazené zmeny", + "rcfilters-filter-watchlistactivity-unseen-description": "Zmeny stránok, ktoré ste od ich zmeny nenavštívili.", + "rcfilters-filter-watchlistactivity-seen-label": "Zobrazené zmeny", + "rcfilters-filter-watchlistactivity-seen-description": "Zmeny stránok, ktoré ste od ich zmeny už navštívili.", + "rcfilters-filtergroup-changetype": "Druh zmeny", + "rcfilters-filter-pageedits-label": "Úpravy stránok", + "rcfilters-filter-pageedits-description": "Úpravy obsahu wiki, diskusií, popisov kategórií…", + "rcfilters-filter-newpages-label": "Založenia stránok", + "rcfilters-filter-newpages-description": "Úpravy, ktoré vytvorili novú stránku.", + "rcfilters-filter-categorization-label": "Zmeny kategórií", + "rcfilters-filter-categorization-description": "Záznamy stránok zaradených alebo vyradených z kategórií.", + "rcfilters-filter-logactions-label": "Zaznamenané činnosti", + "rcfilters-filter-logactions-description": "Správcovské úkony, zakladanie účtov, mazanie stránok, nahrávanie súborov…", + "rcfilters-hideminor-conflicts-typeofchange-global": "Filter „Drobné úpravy“ je v konflikte s jedným alebo viacerými filtrami podľa typu zmeny, pretože určité typy zmien sa nedajú označiť ako drobné. Dané filtre sú označené hore, v priestore „Aktívne filtre“.", + "rcfilters-hideminor-conflicts-typeofchange": "Isté druhy úprav sa nedajú označiť ako drobné, tento filter je preto v konflikte s nasledujúcimi filtrami podľa typu zmeny: $1", + "rcfilters-typeofchange-conflicts-hideminor": "Tento filter podľa typu zmeny je v konflikte s filtrom „Drobné zmeny“. Isté druhy úprav sa nedajú označiť ako drobné.", + "rcfilters-filtergroup-lastRevision": "Posledné verzie", + "rcfilters-filter-lastrevision-label": "Aktuálna verzia", + "rcfilters-filter-lastrevision-description": "Len posledná úprava stránky.", + "rcfilters-filter-previousrevision-label": "Nie najnovšia revízia", + "rcfilters-filter-previousrevision-description": "Všetky zmeny, ktoré nie sú „najnovšími revíziami“.", + "rcfilters-filter-excluded": "Vylúčený", + "rcfilters-tag-prefix-namespace-inverted": ":nie $1", + "rcfilters-exclude-button-off": "Vylúčiť zvolené", + "rcfilters-exclude-button-on": "Zvolené vylúčené", + "rcfilters-view-advanced-filters-label": "Pokročilé filtre", + "rcfilters-view-tags": "Označené úpravy", + "rcfilters-view-namespaces-tooltip": "Filtrovať výsledky podľa menného priestoru", + "rcfilters-view-tags-tooltip": "Filtrovať výsledky pomocou značiek úprav", + "rcfilters-view-return-to-default-tooltip": "Návrat do hlavného menu filtrov", + "rcfilters-liveupdates-button": "Živé aktualizácie", + "rcfilters-liveupdates-button-title-on": "Vypnúť živé aktualitácie", + "rcfilters-liveupdates-button-title-off": "Zobraziť nové zmeny hneď, ako budú zverejnené", + "rcfilters-watchlist-markseen-button": "Označiť všetky úpravy ako zobrazené", + "rcfilters-watchlist-edit-watchlist-button": "Upraviť zoznam sledovaných stránok", + "rcfilters-watchlist-showupdated": "Zmeny stránok, ktoré ste od ich zmeny nenavštívili, sú zobrazené hrubo s vyplneným krúžkom.", + "rcfilters-preference-label": "Skryť vylepšenú verziu posledných úprav", + "rcfilters-preference-help": "Zruší novú podobu rozhrania z roku 2017 a všetky nástroje odvtedy pridané.", "rcnotefrom": "Nižšie {{PLURAL:$5|je zobrazená úprava|sú zobrazené úpravy}} od $2 (do $1).", + "rclistfromreset": "Obnoviť výber údajov", "rclistfrom": "Zobraziť nové úpravy počnúc od $3 $2", "rcshowhideminor": "$1 drobné úpravy", "rcshowhideminor-show": "Zobraziť", @@ -3147,8 +3269,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 +3290,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 +3362,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 +3391,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 +3435,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 new file mode 100644 index 0000000000..827bc0c07f --- /dev/null +++ b/languages/i18n/skr-arab.json @@ -0,0 +1,1030 @@ +{ + "@metadata": { + "authors": [ + "Saraiki" + ] + }, + "tog-underline": "لنک ہیٹھ لکیر", + "tog-hideminor": "چھوٹیاں تبدیلیاں لُکاؤ", + "tog-hidepatrolled": "تازہ تبدیلیاں وچوں زیرنگرانی تبدیلیاں لکاؤ", + "tog-newpageshidepatrolled": "نویں ورقیاں دی فہرست وچوں نگرانی ہیٹھ ورقے لُکاؤ", + "tog-hidecategorization": "ورقیاں دیاں قسم بندی لُکاؤ", + "tog-numberheadings": "سرخیاں کوں خود کار نمبر ݙیوو", + "tog-showtoolbar": "آلات ترمیم ݙکھاؤ", + "tog-editondblclick": "ڈبل کلک نال ورقے وچ تبدیلیاں کرو", + "tog-previewonfirst": "پہلی تبدیلی تے پری ویویو ݙکھاؤ", + "tog-oldsig": "تہاݙے موجودہ دستخط:", + "tog-uselivepreview": "ورقہ ولدا لوڈ کیتے ٻاجھوں نمائش ݙکھاؤ", + "tog-watchlisthideminor": "چھوٹیاں تبدیلیاں اکھیں ہیٹھ فہرست وچوں لکاؤ", + "tog-watchlisthidecategorization": "ورقیاں دیاں قسم بندی لُکاؤ", + "tog-showhiddencats": "لڳیاں قسماں ݙکھاؤ", + "underline-always": "ہمیشہ", + "underline-never": "کݙاہیں وی کائناں", + "underline-default": "سکن یا براؤزر دا طے شدہ", + "editfont-style": "خانہ ترمیم دا فونٹ", + "editfont-default": "براؤزر دا طے شدہ", + "editfont-monospace": "مونوسپیسڈ فونٹ", + "editfont-sansserif": "سنس سیرف فونٹ", + "editfont-serif": "سیرف فونٹ", + "sunday": "اتوار", + "monday": "سونوار", + "tuesday": "منگل", + "wednesday": "بدھ", + "thursday": "خمیس", + "friday": "جمعہ", + "saturday": "چھݨ چھݨ", + "sun": "اتوار", + "mon": "سونوار", + "tue": "منگل", + "wed": "بدھ", + "thu": "خمیس", + "fri": "جمعہ", + "sat": "چھݨ چھݨ", + "january": "جنوری", + "february": "فروری", + "march": "مارچ", + "april": "اپريل", + "may_long": "مئی", + "june": "جون", + "july": "جولائی", + "august": "اگست", + "september": "ستمبر", + "october": "اکتوبر", + "november": "نومبر", + "december": "دسمبر", + "january-gen": "جنوری", + "february-gen": "فروری", + "march-gen": "مارچ", + "april-gen": "اپريل", + "may-gen": "مئی", + "june-gen": "جون", + "july-gen": "جولائی", + "august-gen": "اگست", + "september-gen": "ستمبر", + "october-gen": "اکتوبر", + "november-gen": "نومبر", + "december-gen": "دسمبر", + "jan": "جنوری", + "feb": "فروری", + "mar": "مارچ", + "apr": "اپریل", + "may": "مئی", + "jun": "جون", + "jul": "جولائی", + "aug": "اگست", + "sep": "ستمبر", + "oct": "اکتوبر", + "nov": "نومبر", + "dec": "دسمبر", + "january-date": "$1 جنوری", + "february-date": "$1 فروری", + "march-date": "$1 مارچ", + "april-date": "$1 اپریل", + "may-date": "$1 مئی", + "june-date": "$1 جون", + "july-date": "$1 جولائی", + "august-date": "$1 اگست", + "september-date": "$1 ستمبر", + "october-date": "$1 اکتوبر", + "november-date": "$1 نومبر", + "december-date": "$1 دسمبر", + "period-am": "سویر", + "period-pm": "شام", + "pagecategories": "{{PLURAL:$1|زمرہ|زمرہ جات}}", + "category_header": "زمرہ \"$1\" وچ ورقے", + "subcategories": "ذیلی زمرہ جات", + "category-media-header": "زمرہ \"$1\" وچ میڈیا", + "category-empty": "ایں قسم وچ اڄݨ تائیں کوئی ورقہ یا میڈیا کائنی۔", + "hidden-categories": "{{PLURAL:$1|پوشیدہ زمرہ|پوشیدہ زمرہ جات}}", + "hidden-category-category": "لکیاں قسماں", + "listingcontinuesabbrev": "جاری۔", + "index-category": "فہرست شدہ ورقے", + "noindex-category": "غیر فہرست شدہ صفحات", + "broken-file-category": "ٹٹے ہوۓ جوڑاں آلے صفحے", + "about": "تعارف", + "article": "مواد آلا ورقہ", + "newwindow": "(نویں ونڈو وچ کھولو)", + "cancel": "مکاؤ", + "moredotdotdot": "ٻئے", + "morenotlisted": "ایہ فہرست پوری کائنی", + "mypage": "ورقہ", + "mytalk": "ڳالھ مہاڑ", + "anontalk": "ڳالھ مہاڑ", + "navigation": "نیوی ڳیشݨ", + "and": " تے", + "faq": "عام طور تے پچھے ونڄݨ آلے سوال", + "actions": "کم", + "namespaces": "ناں جاہیں", + "variants": "قسماں", + "navigation-heading": "نیوی ڳیشݨ فہرست", + "errorpagetitle": "نقص", + "returnto": "واپس $1 چلو", + "tagline": " {{SITENAME}} توں", + "help": "مدد", + "search": "کھوج", + "searchbutton": "کھوج", + "go": "ڄلو", + "searcharticle": "ڄلو", + "history": "پچھلے کم", + "history_short": "تاریخچہ", + "history_small": "تاریخچہ", + "printableversion": "چھپݨ جوگا ورقہ", + "permalink": "پکا جوڑ", + "print": "چھاپو", + "view": "ݙکھالے", + "view-foreign": "$1 تے ݙیکھو", + "edit": "لکھو", + "edit-local": "مقامی تفصیل درج کرو", + "create": "بݨاؤ", + "create-local": "آپݨی لکھت رَلاؤ", + "delete": "مٹاؤ", + "protect": "حفاظت کرو", + "protect_change": "تبدیل کرو", + "unprotect": "تحفظ وچ تبدیلی", + "newpage": "نواں ورقہ", + "talkpagelinktext": "ڳالھ مہاڑ", + "specialpage": "خاص ورقہ", + "personaltools": "ذاتی آوزار", + "talk": "ڳالھ مہاڑ", + "views": "ݙکھالے", + "toolbox": "آوزار", + "tool-link-emailuser": "ایں {{GENDER:$1|صارف}} کوں ای میل کرو", + "imagepage": "فائل آلا ورقہ ݙیکھو", + "mediawikipage": "سنیہے آلا ورقہ ݙیکھو", + "templatepage": "سانچے آلا ورقہ ݙیکھو", + "viewhelppage": "مدد آلا ورقہ ݙیکھو", + "categorypage": "کیٹاگری آلا ورقہ ݙیکھو", + "viewtalkpage": "مباحثہ ݙیکھو", + "otherlanguages": "ٻنھاں زباناں وچ", + "redirectedfrom": "($1 کنوں ولدا رجوع )", + "redirectpagesub": "صفحہ ریڈائریکٹ کرو", + "redirectto": "اڳے کرو:", + "lastmodifiedat": "ایہ ورقہ چھیکڑی واری $1 کوں $2 تے تبدیل تھیا ہائی۔", + "protectedpage": "آم شام ورقہ", + "jumpto": "ٹپ مارو", + "jumptonavigation": "نیوی ڳیشݨ", + "jumptosearch": "ڳولو", + "pool-errorunknown": "نامعلوم غلطی", + "poolcounter-usage-error": "استعمال وچ خامی: $1", + "aboutsite": "{{SITENAME}} دا تعارف", + "aboutpage": "Project:تعارف", + "copyright": "مواد $1 دے تحت مل سڳدے، جے تائیں کوئی ٻئی ڳالھ نہ ہوسے۔", + "copyrightpage": "{{ns:project}}:حقوق تصانیف", + "currentevents": "حالیہ واقعات", + "currentevents-url": "Project:حالیہ واقعات", + "disclaimers": "لاتعلقی اظہار", + "disclaimerpage": "Project:عام لاتعلقی اظہار", + "edithelp": "لکھݨ وچ مدد", + "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).", + "youhavenewmessagesfromusers": "{{PLURAL:$4|تہاݙے کیتے}} {{PLURAL:$3|کہیں ٻئے صارف|$3 صارفین}} دی طرفوں $1 ($2)۔", + "newmessageslinkplural": "{{PLURAL:$1|نواں سنیہا|999=نویں سنیہے}}", + "newmessagesdifflinkplural": "چھیکڑی {{PLURAL:$1|تبدیلی|تبدیلیاں}}", + "editsection": "لکھو", + "editold": "لکھو", + "viewsourceold": "ماخذ ݙیکھو", + "editlink": "لکھو", + "viewsourcelink": "ماخذ ݙیکھو", + "editsectionhint": "حصہ لکھو: $1", + "toc": "شامل حصے", + "showtoc": "ݙیکھاؤ", + "hidetoc": "لُکاؤ", + "collapsible-collapse": "لکاؤ", + "collapsible-expand": "ودھاؤ", + "confirmable-yes": "ڄیا", + "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": "میڈیا آلا ورقہ", + "nstab-special": "خاص ورقہ", + "nstab-project": "پروجیکٹ ورقہ", + "nstab-image": "فائل", + "nstab-mediawiki": "سنیہہ", + "nstab-template": "سانچہ", + "nstab-help": "مدد ورقہ", + "nstab-category": "زمرہ", + "mainpage-nstab": "وݙا ورقہ", + "nosuchaction": "کوئی اینجھا کم کائنی", + "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": "تساں ایں ورقے کوں صرف ݙیکھ تے ماخز نقل کر سڳدے ہو لیکن تبدیلی نہوے کر سڳدے", + "ns-specialprotected": "خاص ورقیاں وچ تبدیلی نی تھی سڳدی", + "exception-nologin": "لاگ ان نہوے تھئے", + "virus-scanfailed": "سکین نی تھی سڳیا(کوڈ$1)", + "virus-unknownscanner": "ان ڄاݨ اینٹی وائرس", + "cannotlogoutnow-title": "ہݨ لاگ ان نہوے تھی سڳدے", + "welcomeuser": "خوش آمدید، $1!", + "yourname": "صارف دا ناں", + "userlogin-yourname": "صارف ناں", + "userlogin-yourname-ph": "آپݨا ورتݨ ناں صارف درج کرو", + "createacct-another-username-ph": "آپݨا ورتݨ ناں صارف درج کرو", + "yourpassword": "پاس ورڈ", + "userlogin-yourpassword": "پاس ورڈ", + "userlogin-yourpassword-ph": "پاس ورڈ درج کرو", + "createacct-yourpassword-ph": "پاس ورڈ درج کرو", + "yourpasswordagain": "پاس ورڈ ولدا لکھو", + "createacct-yourpasswordagain": "پاس ورڈ دی تصدیق کرو", + "createacct-yourpasswordagain-ph": "پاس ورڈ ولدا درج کرو", + "userlogin-remembermypassword": "میکوں لاگ ان رکھو", + "userlogin-signwithsecure": "محفوظ رابطہ (کنکشن) استعمال کرو", + "cannotlogin-title": "لاگ ان نی تھی سڳدے", + "cannotlogin-text": "لاگ ان تھیوݨ ناممکن ہے", + "cannotloginnow-title": "ہݨ لاگ ان نہوے تھی سڳدے", + "cannotcreateaccount-title": "کھاتے نہوے بݨا سڳدے", + "yourdomainname": "تہاݙی ڈومین:", + "login": "لاگ ان تھیوو", + "login-security": "آپݨی سنڄاݨ دی تصدیق کرو", + "nav-login-createaccount": "لاگ ان / کھاتہ کھولو", + "logout": "لاگ آؤٹ", + "userlogout": "لاگ آؤٹ", + "notloggedin": "لاگ ان نہوے تھئے", + "userlogin-noaccount": "تہاݙا کھاتہ کائنی؟", + "userlogin-joinproject": "جُڑ ونڄو {{SITENAME}} نال", + "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|ورقہ|ورقے}}", + "createacct-benefit-body3": "ہݨ دے {{PLURAL:$1|کم|کماں}}", + "loginerror": "لاگ ان وچ غلطی", + "createacct-error": "کھاتہ بݨاوݨ وچ غلطی", + "loginsuccesstitle": "لاگ ان تھی ڳیا", + "mailmypassword": "نواں پاس ورڈ بݨاؤ", + "mailerror": "ای میل بھیجݨ وچ غلطی: $1", + "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": "عارضی لنگھݨ لفظ، پاس ورڈ", + "passwordreset": "نواں پاس ورڈ بݨاؤ", + "passwordreset-username": "صارف دا ناں", + "passwordreset-domain": "ڈومین", + "passwordreset-email": "ای میل پتہ", + "passwordreset-emailtitle": "{{SITENAME}} کھاتہ دی تفصیلات", + "passwordreset-invalidemail": "ای۔میل پتہ درست کائنی", + "changeemail-oldemail": "موجودہ ای میل پتہ:", + "changeemail-newemail": "نواں ای میل پتہ", + "changeemail-none": "(کوئی وی کائنی)", + "changeemail-password": "تہاݙا {{SITENAME}} پاس ورڈ:", + "changeemail-submit": "ای-میل بدلو", + "resettokens-tokens": "ٹوکن", + "resettokens-token-label": "$1 (موجودہ قدر: $2)", + "bold_sample": "موٹی لکھائی", + "bold_tip": "موٹی لکھائی", + "italic_sample": "ترچھا متن", + "italic_tip": "ترچھی لکھائی", + "link_sample": "جوڑ", + "link_tip": "اندرونی جوڑ", + "extlink_sample": "http://www.example.com جوڑ دا ناں", + "extlink_tip": "باہرلے جوڑ (remember http:// prefix)", + "headline_sample": "شہ سرخی", + "headline_tip": "ݙوجھے درجے دی سرخی", + "nowiki_sample": "فارمیٹ نہ تھئی ہوئی لکھائی اتھ درج کرو", + "nowiki_tip": "ویکی فارمیٹ کوں نظرانداز کرو", + "image_tip": "پیوستہ فائل", + "media_tip": "فائل دا جوڑ", + "sig_tip": "تہاݙے دستخط ویلے دے نال", + "hr_tip": "اُفقی لکیر (زیادہ استعمال نہ کریں)", + "summary": "خلاصہ", + "subject": "عنوان:", + "minoredit": "ایہ ہک چھوٹی تبدیلی ہے", + "watchthis": "ایں ورقے تے اکھ رکھو", + "savearticle": "محفوظ", + "savechanges": "تبدیلیاں محفوظ کرو", + "publishpage": "ورقہ شائع کرو", + "publishchanges": "تبدیلیاں شائع کرو", + "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|سانچے|سانچہ}}:", + "templatesusedpreview": "ایں کچے کم تے ورتے ڳئے {{PLURAL:$1|سانچے|سانچہ}}:", + "template-protected": "(بچایا گیا)", + "template-semiprotected": "(نیم محفوظ)", + "hiddencategories": "ایہ ورقہ {{PLURAL:$1|1 لُکے زمریاں|$1 لکا زمرہ }} وچ شامل ہے:", + "permissionserrors": "خطائے اجازت", + "permissionserrorstext-withaction": "انہاں {{PLURAL:$1|وجہ|وجوہات}} پاروں تہاکوں$2 دی اجازت کائنی", + "moveddeleted-notice": "ایہ ورقہ مٹایا ڳیا ہے۔ مٹاوݨ دا لاگ،حفاظت دا لاگ تے ورقہ ٹورݨ دا لاگ حوالے کیتے ہیٹھاں ݙتے ہوئے ہن۔", + "log-fulllog": "پورا لاگ ݙیکھو", + "postedit-confirmation-created": "ورقہ بݨ ڳیا ہے۔", + "postedit-confirmation-restored": "ورقہ بحال تھی ڳئے", + "postedit-confirmation-saved": "تہاݙی تبدیلی محفوظ تھی ڳئی ہے۔", + "content-model-wikitext": "ویکی متن", + "content-model-text": "سادہ متن", + "content-model-javascript": "جاوا سکرپٹ", + "content-json-empty-object": "خالی آبجیکٹ", + "content-json-empty-array": "خالی ایرے", + "undo-failure": "متنازع تبدیلیاں پاروں ایہ تبدیلی واپس نی تھی سڳدی۔", + "viewpagelogs": "صفحے دے لاگ ݙیکھو", + "currentrev": "موجودہ حالت", + "currentrev-asof": "حالیہ نسخہ بمطابق $1", + "revisionasof": "دی تبدیلیاں $1", + "revision-info": " $1 دی دہرائی توں {{جنس:$6|$2}}$7", + "previousrevision": "→ پراݨا نسخہ", + "nextrevision": "نویں تبدیلی →", + "currentrevisionlink": "موجودہ حالت", + "cur": " رائج", + "next": "اڳوں تے", + "last": "پچھلا", + "page_first": "پہلا", + "page_last": "چھیکڑی", + "history-fieldset-title": "دہرائی کیتے لبھت", + "histfirst": "قدیم ترین", + "histlast": "تازہ ترین", + "historyempty": "(خالی)", + "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": "سبب:", + "pagehist": "ورقے دی تاریخ", + "deletedhist": "مٹایا ہویا تاریخچہ", + "revdelete-reasonotherlist": "ہور وجہ", + "revdelete-edit-reasonlist": "مٹاوݨ دی وجہ لکھو", + "mergehistory-from": "مآخذ ورقہ:", + "mergehistory-reason": "سبب", + "mergelog": "لاگ رلاؤ", + "revertmerge": "وکھریاں کرو", + "history-title": "\"$1\" دا ریکارڈ", + "difference-title": "\"$1\" دے نسخیاں دے درمیان فرق", + "lineno": "سطر $1:", + "compareselectedversions": "منتخب متـن دا موازنہ", + "editundo": "واپس", + "diff-empty": "(کوئی فرق کائنی)", + "searchresults": "کھوج دا نتارا", + "searchresults-title": "\"$1\" دے کھوج نتارے", + "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|نتیجے}}", + "viewprevnext": "($1 {{int:pipe-separator}} $2) ݙیکھو ($3)", + "searchprofile-articles": "لسٹ ورقے", + "searchprofile-images": "ملٹی میڈیا", + "searchprofile-everything": "سب کجھ", + "searchprofile-advanced": "اگلا", + "searchprofile-articles-tooltip": "$1 وچ ڳولو", + "searchprofile-images-tooltip": "فائلاں ڳولو", + "searchprofile-everything-tooltip": " سارا مواد ڳولو", + "searchprofile-advanced-tooltip": "کسٹم نانواں وچ ڳولو", + "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": "ݙیکھو", + "powersearch-toggleall": "یکے", + "powersearch-togglenone": "کوئی وی کائنی", + "preferences": "ترجیحات", + "mypreferences": "ترجیحات", + "prefs-edits": "تبدیلیاں دی گنتی:", + "prefsnologintext2": "آپݨیاں ترجیہاں تبدیل کرݨ کیتے لاگ ان تھیوو", + "prefs-skin": "جِلد", + "skin-preview": "نمائش", + "datedefault": "کوئی ترجیح کائنی", + "prefs-user-pages": "ورتݨ آلے دے ورقے", + "prefs-personal": "پروفائل", + "prefs-rc": "نویاں تبدیلیاں", + "prefs-watchlist": "نظریں ہیٹھ فہرست", + "prefs-resetpass": "پاس ورڈ تبدیل کرو", + "prefs-rendering": "شکل و صورت", + "saveprefs": "بچاؤ", + "searchresultshead": "ڳولو", + "stub-threshold-sample-link": "نمونہ", + "stub-threshold-disabled": "غیر فعال", + "timezonelegend": "ویلے دا علاقہ:", + "localtime": "مقامی ویلا:", + "servertime": "سرور دا وقت:", + "guesstimezone": "براؤزر توں بھرو۔", + "timezoneregion-africa": "افریقہ", + "timezoneregion-america": "امریکہ", + "timezoneregion-antarctica": "انٹارکٹیکا", + "timezoneregion-arctic": "قطب شمالی", + "timezoneregion-asia": "ایشیاء", + "timezoneregion-atlantic": "بحر اوقیانوس", + "timezoneregion-australia": "آسٹریلیا", + "timezoneregion-europe": "یورپ", + "timezoneregion-indian": "بحر ہند", + "timezoneregion-pacific": "بحر الکاہل", + "prefs-searchoptions": "ڳولو", + "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": "دستخط", + "prefs-dateformat": "تاریخ دی ترتیب", + "prefs-timeoffset": "وقت دی ترتیب", + "prefs-advancedediting": "عام آپشن", + "prefs-editor": "خانہ ترمیم", + "prefs-preview": "نمائش", + "prefs-advancedrc": "اعلیٰ اختیارات", + "prefs-advancedrendering": "اعلیٰ اختیارات", + "prefs-advancedsearchoptions": "اعلیٰ اختیارات", + "prefs-advancedwatchlist": "اعلیٰ اختیارات", + "prefs-displayrc": "ݙکھاوݨ دے اختیارات", + "prefs-displaywatchlist": "ݙکھاوݨ دے اختیارات", + "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-move": "ورقے ٹورو", + "right-movefile": "فائلاں ٹورو", + "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": "اِختیاراتِ حالیہ تبدیلیاں", + "recentchanges-summary": "ایں ورقے وچ حالیہ تھیوݨ آلیاں تبدیلیاں ݙیکھو۔", + "recentchanges-noresult": "ایں مدت وچ ایں معیار وانگوں کوئی تبدیلی کائنی تھئی۔", + "recentchanges-feed-description": "ایں فیڈ وچ وکی تے تھیوݨ آلیاں نویاں نکور تبدیلیاں ݙیکھو۔", + "recentchanges-label-newpage": "ایں تبدیلی نواں ورقہ بݨایا ہے", + "recentchanges-label-minor": "ایہ ہک چھوٹی تبدیلی ہے", + "recentchanges-label-bot": "ایہ تبدیلی بوٹ نے کیتی ہے۔", + "recentchanges-label-unpatrolled": "ایہ تبدیلی اڄݨ تائیں واپس کائنی ولی۔", + "recentchanges-label-plusminus": "ورقے دا تبدیل شدہ حجم بلحاظ تعداد بائٹ", + "recentchanges-legend-heading": "اختصارات:", + "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (ایہ وی ݙیکھو [[Special:NewPages|نویں ورقیاں دی لسٹ]])", + "recentchanges-submit": "ݙیکھاؤ", + "rcfilters-days-title": "موجودہ ݙینہ", + "rcfilters-hours-title": "موجودہ گھنٹے", + "rcfilters-savedqueries-rename": "نواں ناں لکھو", + "rcfilters-savedqueries-setdefault": "ݙیفالٹ بݨاؤ", + "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": "ݙیکھاؤ", + "rcshowhideminor-hide": "لُکاؤ", + "rcshowhidebots": "$1 بوٹ", + "rcshowhidebots-show": "ݙیکھاؤ", + "rcshowhidebots-hide": "لُکاؤ", + "rcshowhideliu": "مندرج صارفین $1", + "rcshowhideliu-show": "ݙیکھاؤ", + "rcshowhideliu-hide": "لُکاؤ", + "rcshowhideanons": "گمنام صارف $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": "لُکاؤ", + "show": "ݙیکھاؤ", + "minoreditletter": "چھوٹا کم", + "newpageletter": "نواں", + "boteditletter": " خودکار", + "rc-change-size-new": "تبدیلی دے بعد $1 {{PLURAL:$1|بائٹ}}", + "rc-enhanced-expand": "تفصیل ݙکھاؤ", + "rc-enhanced-hide": "تفضیل لکاؤ", + "rc-old-title": "اصلاً «$1» دے عنوان نال تخلیق شدہ", + "recentchangeslinked": "رلدیاں ملدیاں تبدیلیاں", + "recentchangeslinked-feed": "رلدیاں ملدیاں تبدیلیاں", + "recentchangeslinked-toolbox": "رلدیاں ملدیاں تبدیلیاں", + "recentchangeslinked-title": "\"$1\" دے متعلقہ تبدیلیاں", + "recentchangeslinked-summary": "ایہ انہاں نویاں تبدیلیاں دی لسٹ ہے جہڑیاں خاص ورقے نال جُڑے ہوئے ورقیاں( یا خاص قسم دے ممبراں) وچ تھیاں ہن۔\nتہاݙی [[Special:Watchlist|اکھیں ہیٹھ ورقے]] موٹے نظر آسن۔", + "recentchangeslinked-page": "ورقے دا ناں", + "recentchangeslinked-to": "کھلے ہوئے ورقے دی بجائے ایندے نال جُڑے ہوئے ورقے دیاں تبدیلیاں ݙکھاؤ", + "upload": "فائل چڑھاؤ", + "uploadbtn": "فائل چڑھاؤ", + "uploadlogpage": "اپلوڈ لاگ", + "filename": "فائل دا ناں", + "filedesc": "خلاصہ", + "fileuploadsummary": "خلاصہ", + "filereuploadsummary": "حالیہ تبدیلیاں", + "filesource": "ماخذ", + "savefile": "فائل بچاؤ", + "upload-source": "اصل فائل", + "upload-dialog-title": "فائل چڑھاؤ", + "upload-dialog-button-cancel": "منسوخ", + "upload-dialog-button-back": "پچھوں", + "upload-dialog-button-done": "مکمل", + "upload-dialog-button-save": "بچاؤ", + "upload-dialog-button-upload": "اپلوڈ", + "upload-form-label-infoform-title": "تفصیلات", + "upload-form-label-infoform-name": "ناں", + "upload-form-label-infoform-description": "تفصیل", + "upload-form-label-usage-title": "استعمال", + "upload-form-label-usage-filename": "فائل دا ناں", + "upload-form-label-own-work": "یہ میݙا ذاتی کم ہے", + "upload-form-label-infoform-categories": "قسماں، زمرے", + "upload-form-label-infoform-date": "تاریخ", + "backend-fail-delete": "مِسَل \"$1\" کوں مٹایا نی ونڄ سڳیا۔", + "license": "اجازت نامہ:", + "license-header": "اجازہ کاری", + "listfiles-delete": "مٹاؤ", + "imgfile": "فائل", + "listfiles": "فائل لسٹ", + "listfiles_thumb": "تھمب نیل", + "listfiles_date": "تاریخ", + "listfiles_name": "ناں", + "listfiles_user": "ورتݨ والا", + "listfiles_size": "حجم", + "listfiles_description": "تفصیل", + "listfiles_count": "ورژن", + "listfiles-latestversion": "موجودہ ورژن", + "listfiles-latestversion-yes": "ڄیا", + "listfiles-latestversion-no": "کو", + "file-anchor-link": "فائل", + "filehist": "فائل دا تاریخچہ", + "filehist-help": "کہیں خاص ویلے تے تاریخ کوں فائل کین٘ویں نظردی ہائی، ݙیکھݨ کیتے اوں ویلے تے کلک کرو۔", + "filehist-deleteall": "سارے مٹاؤ", + "filehist-deleteone": "مٹاؤ", + "filehist-revert": "واپس", + "filehist-current": "موجودہ", + "filehist-datetime": "تریخ/ویلہ", + "filehist-thumb": "تھمب نیل", + "filehist-thumbtext": "مورخہ $1 دا تھمب نیل", + "filehist-nothumb": "کوئی تھمبنیل کائنی۔", + "filehist-user": "ورتݨ والا", + "filehist-dimensions": "پاسے", + "filehist-filesize": "تصویر دا سائز", + "filehist-comment": "رائے", + "imagelinks": "فائل ورتݨ", + "linkstoimage": "اِیں فائل نال ہیٹھاں درج {{PLURAL:$1|ورقہ مربوط ہے|$1 صفحات مربوط ہن}}:", + "nolinkstoimage": "ایں فائل نال کوئی ورقہ کائنی ڄُڑیا ہویا۔", + "linkstoimage-redirect": "$1 (فائل وت رجوع) $2", + "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": "لکھو", + "brokenredirects-delete": "مٹاؤ", + "withoutinterwiki-submit": "ݙیکھاؤ", + "nbytes": "$1 {{PLURAL:$1|بائٹ}}", + "nmembers": "{{PLURAL:$1|رکن|اراکین}}", + "prefixindex": "سارے ورقے بمع سابقہ", + "prefixindex-submit": "ݙِکھاؤ", + "protectedpages-page": "ورقہ", + "protectedpages-reason": "سبب", + "protectedpages-unknown-timestamp": "اݨ سونہاں", + "listusers": "ورتݨ آلیاں دے ناں", + "newpages": "نویں ورقے", + "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": "زیرنظر فہرست", + "watchlistfor2": "$1 تے $2 کیتے", + "watch": "اکھ تلے رکھو", + "unwatch": "اکھ ہیٹھوں ہٹاؤ", + "watchlist-details": "{{PLURAL:$1|$1 ورقہ ہے|$1 ورقے ہن}} تہاݙیاں نظراں ہیٹھ (تے ڳالھ مہاڑ آلے ورقے).", + "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": "رلدے ناں دی تھاں", + "blanknamespace": "(مکھ)", + "contributions": " $1 ورتن آلے دا حصہ", + "contributions-title": "صارف $1 دی شراکتاں", + "mycontris": "شراکتاں", + "anoncontribs": "شراکتاں", + "contribsub2": "{{GENDER:$3|$1}} ($2)", + "nocontribs": "ایں معیار دے مطابق کوئی تبدیلی نی لبھی۔", + "uctop": "(موجودہ)", + "month": "مہینے توں (تے پہلاں):", + "year": "سال توں (تے پہلاں):", + "sp-contributions-newbies": "صرف نویں ورتݨ آلیاں دے کم ݙکھاؤ", + "sp-contributions-blocklog": "لاگ روکو", + "sp-contributions-uploads": "اپلوڈ کردہ", + "sp-contributions-logs": "لاگز", + "sp-contributions-talk": "ڳالھ مہاڑ", + "sp-contributions-search": "حصے پاؤݨ آلیاں دی تلاش", + "sp-contributions-username": "آئی پی پتہ یا ورتݨ آلا ناں:", + "sp-contributions-toponly": "صرف اوہ تبدیلیاں ݙکھاؤ جیہڑیاں ہُݨے ہُݨے تھیاں ہن۔", + "sp-contributions-newonly": "صرف نویں ورقیاں بݨݨ آلیاں لکھتاں ݙیکھاؤ", + "sp-contributions-submit": "ڳولو", + "whatlinkshere": "مربوط ورقے", + "whatlinkshere-title": "«$1» دے نال جُڑے ہوے ورقے", + "whatlinkshere-page": "ورقہ", + "linkshere": "[[:$1]] نال درج ذیل ورقے مربوط ہن:", + "nolinkshere": "[[:$1]] نال کوئی ورقہ مربوط کائنی۔", + "isredirect": "صفحہ ریڈائریکٹ کرو", + "istemplate": "شامل شدہ", + "isimage": "فائل دا ربط", + "whatlinkshere-prev": "{{PLURAL:$1|پچھلا|پچھلے $1}}", + "whatlinkshere-next": "{{PLURAL:$1|اگلا|اگلے $1}}", + "whatlinkshere-links": "→ روابط", + "whatlinkshere-hideredirs": "رجوع مکررات $1", + "whatlinkshere-hidetrans": "استعمالات $1", + "whatlinkshere-hidelinks": "روابط $1", + "whatlinkshere-hideimages": "تصویر دے روابط $1", + "whatlinkshere-filters": "نتارے", + "whatlinkshere-submit": "ڄلو", + "ipbreason": "سبب:", + "autoblocklist-submit": "ڳولو", + "blocklist-reason": "سبب:", + "infiniteblock": "بے انت", + "blocklink": "پابندی لاؤ", + "contribslink": "حصے داری", + "blocklogpage": "لاگ روکو", + "blocklogentry": "«[[$1]]» تے $2 کیتے پابندی عائد کی ڳئی ہے $3", + "reblock-logentry": "[[$1]] دی ترتیبات پابندی کوں تبدیل کیتاڳئے، ہݨ میعاد $2 $3 تے مُکسی", + "block-log-flags-nocreate": "کھاتا کھولݨ تے پابندی ہے", + "proxyblocker": "پراکسی روکݨ آلا", + "movelogpage": "ناں تبدیل کرݨ دا لاگ", + "export": "ورقے ٻاہر بھیجو", + "thumbnail-more": "وݙا کرو", + "importlogpage": "لاگ گھن آؤ", + "tooltip-pt-userpage": "تہاݙا صارف ورقہ", + "tooltip-pt-mytalk": "{{GENDER:|Your}} گالھ مہاڑ", + "tooltip-pt-preferences": "تہاݙیاں ترجیحاں", + "tooltip-pt-watchlist": " انہاں ورقیاں دی لسٹ جنہاں وچ تساں تبدیلیاں کرݨ کیتے ݙیہدے پئے ہو۔", + "tooltip-pt-mycontris": "میݙے کم", + "tooltip-pt-login": "لاگ ان تھیوو تاں چنگا ہے، ضروری کائنی۔", + "tooltip-pt-logout": "لاگ آؤٹ", + "tooltip-pt-createaccount": "ایہ تہاݙے کیتے چنگا ہے جو کھاتہ کھولو تے لاگ ان تھیوو، پر ایہ لازمی کائنی۔", + "tooltip-ca-talk": "مضمون بارے بحث", + "tooltip-ca-edit": "ایں ورقے تے لکھو", + "tooltip-ca-addsection": "نواں حصہ شروع کرو", + "tooltip-ca-viewsource": "ایہ ورقہ محفوظ تھیا ہویا ہے۔ \nتساں صرف ایندا ماخذ ݙیکھ سڳدے ہو۔", + "tooltip-ca-history": "ایں ورقے دا پراݨا روپ۔", + "tooltip-ca-protect": "ایہ ورقہ محفوظ کرو", + "tooltip-ca-delete": "ایں ورقے کوں مٹاؤ", + "tooltip-ca-move": "ایں ورقے کوں گھن ڄلو", + "tooltip-ca-watch": "ایں ورقے کوں آپݨی دید آلے ورقیاں وچ رکھو", + "tooltip-ca-unwatch": "ایں ورقے کوں آپݨی دید آلے ورقیاں وچ رکھو", + "tooltip-search": "ڳولو {{SITENAME}}", + "tooltip-search-go": "جے ایں عنوان دا ورقہ ہے تاں اتھ ونڄو", + "tooltip-search-fulltext": "ایں عبارت کوں ورقیاں وچ ڳولو", + "tooltip-p-logo": "پہلا ورقہ ݙیکھو", + "tooltip-n-mainpage": "پہلا ورقہ ݙیکھو", + "tooltip-n-mainpage-description": "پہلے ورقے تے ونڄو", + "tooltip-n-portal": "ایں مںصوبے بارے، تساں کیا کر سڳدو، ، چیزاں کتھوں ڳولوں", + "tooltip-n-currentevents": "موجودہ حالات وچ پچھلیاں معلومات ݙیکھو", + "tooltip-n-recentchanges": "وکی تے نویاں تبدیلیاں۔", + "tooltip-n-randompage": "کوئی ورقہ کھولو۔", + "tooltip-n-help": "لبھݨ دی جاہ", + "tooltip-t-whatlinkshere": "ایں نال جڑے سارے وکی ورقے۔", + "tooltip-t-recentchangeslinked": "ایں ورقے توں جڑے ورقیاں وچ نویاں تبدیلیاں", + "tooltip-feed-atom": "اِیں ورقے دا اٹوم فیڈ", + "tooltip-t-contributions": "{{GENDER:$1|ایں ورتݨ آلے}} دی شراکتاں دی فہرست", + "tooltip-t-emailuser": "{{GENDER:$1|اایں صارف}} کوں ای میل بھیجو", + "tooltip-t-upload": "فائل چڑھاؤ", + "tooltip-t-specialpages": "سارے خاص ورقیاں دی تندیر", + "tooltip-t-print": "ایں ورقے دا چھپݨ آلا انگ ݙیکھو", + "tooltip-t-permalink": "ایں ورقے دی ایں رویژن دا پکا لنک جوڑ", + "tooltip-ca-nstab-main": "مواد آلا ورقہ ݙیکھو", + "tooltip-ca-nstab-user": "صارف دا ورقہ ݙیکھو", + "tooltip-ca-nstab-special": "ایہ ہک خاص ورقہ ہے، اینکوں تبدیل نسے کرسڳدے", + "tooltip-ca-nstab-project": "منصبے آلا ورقہ ݙیکھو", + "tooltip-ca-nstab-image": "فائل دا ورقہ ݙیکھو", + "tooltip-ca-nstab-mediawiki": "نظامی سنیہہ ݙیکھو", + "tooltip-ca-nstab-template": "سانچہ ݙیکھو", + "tooltip-ca-nstab-category": "کیٹاگری آلا ورقہ ݙیکھو", + "tooltip-minoredit": "ایں کوں نکی ترممیم وچ ڳݨو", + "tooltip-save": "تبدیلیاں محفوظ کرو", + "tooltip-preview": "محفوظ کرݨ کنے پہلے تبدیلیاں ݙیکھو، مہربانی ہوسی۔", + "tooltip-diff": "ایں لکھت وچ کیتیاں ڳیاں تبدیلیاں ݙیکھاؤ", + "tooltip-compareselectedversions": "چݨے ہوئے ورقیاں وچ فرق ݙیکھو", + "tooltip-watch": "ایں ورقے کوں آپݨی دید آلے ورقیاں وچ رکھو", + "tooltip-rollback": "رول بیک\" ہک کلک وچ ورقے کوں پچھلی حالت وچ گھن ویسی\"", + "tooltip-undo": "واپس تے کلک کرݨ نال پچھلی ترمیم تے پُڄ ویسو، نمائشی انداز وچ ترمیم دا خانہ کھلسی۔ تساں مختصر سسب وی بیان کر سڳدے ہو۔", + "tooltip-summary": "مختصر خلاصہ درج کرو", + "simpleantispam-label": "سپام روک پھاٹک\nاینکوں نہ بھرو!", + "pageinfo-title": "«$1» دی معلومات", + "pageinfo-header-basic": "بنیادی معلومات", + "pageinfo-header-edits": "تاریخچۂ ترمیم", + "pageinfo-header-restrictions": "ورقے دی حفاظت", + "pageinfo-header-properties": "صفحہ دی خاصیتاں", + "pageinfo-display-title": "عنوان", + "pageinfo-default-sort": "کلید برائے ابتدائی ترتیب", + "pageinfo-length": "ورقے دی لمباݨ (بائٹ وچ)", + "pageinfo-article-id": "ورقے دی شناخت", + "pageinfo-language": "زبان", + "pageinfo-content-model": "انداز متن", + "pageinfo-robot-policy": "روبوٹ دی فہرست سازی", + "pageinfo-robot-index": "مجاز", + "pageinfo-robot-noindex": "ممنوع", + "pageinfo-watchers": "تعداد ناظرین", + "pageinfo-few-watchers": "$1 کنوں گھٹ {{PLURAL:$1|ناظر|ناظرین}}", + "pageinfo-redirects-name": "رجوعاں دی تعداد", + "pageinfo-subpages-name": "ایں ورقے دے ذیلی ورقیاں دی تعداد", + "pageinfo-firstuser": "صفحہ ساز", + "pageinfo-firsttime": "صفحہ سازی دی تاریخ", + "pageinfo-lastuser": "چھیکڑی ترمیم کنندہ", + "pageinfo-lasttime": "چھیکڑی ترمیم دی تاریخ", + "pageinfo-edits": "ترامیم دی مجموعی تعداد", + "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)", + "pageinfo-toolboxlink": "معلومات صفحہ", + "pageinfo-contentpage": "شمار بطور ورقہ", + "pageinfo-contentpage-yes": "ڄیا", + "patrol-log-page": "گشت لاگ", + "previousdiff": "← پرانی لکھائی", + "nextdiff": "نویں لکھائی →", + "widthheightpage": "$1×$2، $3 {{PLURAL:$3|ورقہ|ورقے}}", + "file-info-size": "\n$1 × $2 پکسل، فائل دا حجم: $3، MIME قسم: $4", + "file-info-size-pages": "$1 × $2 پکسل، فائل دا حجم: $3، MIME قسم: $4، $5 {{PLURAL:$5|ورقہ|ورقے}}", + "file-nohires": "ایں توں زیادہ ریزولیوشن دستیاب کائنی۔", + "svg-long-desc": "ایس وی جی فائل، ابعاد $1 × $2 پکسل، فائل دا حجم: $3", + "show-big-image": "اصل فائل", + "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", + "exif-orientation": "اورینٹیشن", + "exif-xresolution": "افقی ریزولوشن", + "exif-yresolution": "عمودی ریزولیشن", + "exif-datetime": "فائل بدلݨ دی تاریخ تے ویلا", + "exif-make": "کیمرہ ساز کمپنی", + "exif-model": "کیمرے دا ماڈل", + "exif-software": "مستعمل سافٹ ویئر", + "exif-exifversion": "اکزیف ورژن", + "exif-colorspace": "رنگ فضا", + "exif-datetimeoriginal": "ڈیٹا بݨاوݨ دی تاریخ تے ویلا", + "exif-datetimedigitized": "ڈجیٹائزنگ دا ویلہ تے تریخ", + "exif-orientation-1": "عام", + "namespacesall": "یکے", + "monthsall": "یکے", + "imgmultipagenext": "اگلا →", + "imgmultigo": "ونڄو!", + "imgmultigoto": "$1 تے ونڄو", + "watchlisttools-clear": "زیرنظر فہرست دی صفائی", + "watchlisttools-view": "متعلقہ تبدیلیاں ݙیکھو", + "watchlisttools-edit": "زیرنظر فہرست کوں ݙیکھو تے تبدیلی کرو", + "watchlisttools-raw": "کچی زیرِنظرفہرست وچ تبدیلی کرو", + "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|تبادلۂ خیال]])", + "redirect": "فائل، صارف، ورقہ،دہرائی یا آئی ڈی لاگ دے ذریعے ولدا واپس", + "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|ٹیگ|ٹیگز}}]]: $2)", + "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-noredirect": "$1 نے $3 کوں $4 آلے پاسے ریڈائرکٹ کیتے ٻاڄھ{{GENDER:$2|منتقل کیتے}}", + "logentry-move-move_redir": "$1 نے رجوع مکرر ہٹا تے ورقہ $3 کوں $4 آلے پاسے {{GENDER:$2|منتقل کیتا}}", + "logentry-patrol-patrol-auto": "$1 نے ورقہ $3 دے نسخہ $4 کوں خودکار طور تے گشت کیتا ہویا {{GENDER:$2|نشان زد کیتا}}", + "logentry-newusers-create": "صارف کھاتہ $1 {{GENDER:$2|بݨایا ڳیا}}", + "logentry-newusers-autocreate": "صارف کھاتہ $1 خودکار طور {{GENDER:$2|تخلیق تھیا}}", + "logentry-upload-upload": "$1 {{GENDER:$2|اپلوڈ}} $3", + "logentry-upload-overwrite": "$1 نے $3 دا نواں نسخہ {{GENDER:$2|اپلوڈ کیتا}}", + "searchsuggest-search": "ڳولو", + "duration-days": "$1 {{PLURAL:$1|ݙینہ}}", + "randomrootpage": "بے ترتيب بنیادی صفحہ" +} diff --git a/languages/i18n/sl.json b/languages/i18n/sl.json index bd66bb1775..2b93834fc2 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", @@ -673,8 +674,8 @@ "explainconflict": "Med vašim urejanjem je stran spremenil nekdo drug.\nZgornje urejevalno polje vsebuje njeno trenutno vsebino.\nVaše spremembe so prikazane v spodnjem polju, ki jih boste morali združiti z obstoječim besedilom.\n'''Samo''' besedilo v zgornjem polju bo shranjeno, ko boste izbrali ukaz »$1«.", "yourtext": "Vaše besedilo", "storedversion": "Shranjena redakcija", - "nonunicodebrowser": "'''Opozorilo: Vaš brskalnik ne podpira Unicode.'''\nZa obhod te težave se bodo ne-ASCII-znaki v urejevalnem polju spodaj pojavili kot šestnajstiške kode.", "editingold": "'''Opozorilo: Urejate staro redakcijo strani.'''\nČe jo boste shranili, bodo vse poznejše spremembe razveljavljene.", + "unicode-support-fail": "Videti je, da vaš brskalnik ne podpira unikoda. Za urejanje strani je zahtevan, zato vašega urejanja nismo shranili.", "yourdiff": "Primerjava", "copyrightwarning": "Vsi prispevki k {{GRAMMAR:dajalnik|{{SITENAME}}}} se obravnavajo kot objave pod pogoji $2 (za podrobnosti glej $1). Če niste pripravljeni na neusmiljeno urejanje in prosto razširjanje vašega gradiva, ga ne prispevajte.
    \nPoleg tega zagotavljate, da ste prispevke napisali oziroma ustvarili sami ali pa prepisali iz javno dostopnega ali podobnega prostega vira.\n'''Ne dodajajte avtorsko zaščitenega dela brez dovoljenja!'''", "copyrightwarning2": "Vedite, da lahko drugi urejevalci urejajo, spremenijo ali odstranijo katerikoli prispevek k {{GRAMMAR:dajalnik|{{SITENAME}}}}.\nČe niste pripravljeni na neusmiljeno urejanje svojega gradiva, ga ne objavljajte tukaj.
    \nPoleg tega jamčite, da ste prispevke napisali oziroma ustvarili sami ali pa prepisali iz vira v javni lasti ali podobnega prostega vira (za podrobnosti glej $1).\n'''Ne objavljajte avtorsko zaščitenega gradiva brez dovoljenja!'''", @@ -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.", @@ -741,6 +742,7 @@ "parser-template-loop-warning": "V predlogi je bila odkrita zanka: [[$1]]", "template-loop-category": "Strani z zankami predlog", "template-loop-category-desc": "Stran vsebuje zanko predloge, tj. predlogo, ki rekurzivno kliče sama sebe.", + "template-loop-warning": "Opozorilo: Ta stran kliče [[:$1]], kar povzroči zanko predloge (neskončni rekurzivni klic).", "parser-template-recursion-depth-warning": "Prekoračena globina rekurzije predlog ($1)", "language-converter-depth-warning": "Prekoračena globina pretvorbe jezikov ($1)", "node-count-exceeded-category": "Strani s prekoračenim številom vozlišč", @@ -970,7 +972,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", @@ -1010,6 +1012,7 @@ "timezoneregion-indian": "Indijski ocean", "timezoneregion-pacific": "Tihi ocean", "allowemail": "Drugim uporabnikom omogoči pošiljanje e-pošte", + "email-blacklist-label": "Prepreči naslednjim uporabnikom, da mi pošiljajo e-pošto:", "prefs-searchoptions": "Iskanje", "prefs-namespaces": "Imenski prostori", "default": "privzeto", @@ -1052,6 +1055,7 @@ "prefs-editor": "Urejevalnik", "prefs-preview": "Predogled", "prefs-advancedrc": "Napredne možnosti", + "prefs-opt-out": "Izključite se iz izboljšav", "prefs-advancedrendering": "Napredne možnosti", "prefs-advancedsearchoptions": "Napredne možnosti", "prefs-advancedwatchlist": "Napredne možnosti", @@ -1286,9 +1290,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-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 {{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.", @@ -1300,43 +1315,41 @@ "rcfilters-savedqueries-new-name-label": "Ime", "rcfilters-savedqueries-new-name-placeholder": "Opišite namen filtra", "rcfilters-savedqueries-apply-label": "Ustvari filter", + "rcfilters-savedqueries-apply-and-setdefault-label": "Ustvari privzeti filter", "rcfilters-savedqueries-cancel-label": "Prekliči", "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-search-placeholder": "Zadnje spremembe filtrov (prebrskajte ali začnite vnašati)", + "rcfilters-show-new-changes": "Ogled najnovejših sprememb", + "rcfilters-search-placeholder": "Filtrirajte zadnje spremembe (prebrskajte ali začnite vnašati)", "rcfilters-invalid-filter": "Neveljaven filter", "rcfilters-empty-filter": "Ni dejavnih filtrov. Prikazani so vsi prispevki.", "rcfilters-filterlist-title": "Filtri", - "rcfilters-filterlist-whatsthis": "Kaj je to?", - "rcfilters-filterlist-feedbacklink": "Podajte povratne informacije o novih (preizkusnih) filtrih", + "rcfilters-filterlist-whatsthis": "Kako to deluje?", + "rcfilters-filterlist-feedbacklink": "Povejte nam, kaj menite o teh (novih) orodjih za filtriranje", "rcfilters-highlightbutton-title": "Označi rezultate", "rcfilters-highlightmenu-title": "Izberite barvo", "rcfilters-highlightmenu-help": "Izberite barvo za označitev te lastnosti", "rcfilters-filterlist-noresults": "Nismo našli nobenega filtra", "rcfilters-noresults-conflict": "Našli nismo nobenih rezultatov, ker si merila za iskanje nasprotujejo", "rcfilters-state-message-subset": "Ta filter nima učinka, saj njegove rezultate {{PLURAL:$2|vključuje naslednji, širši filter|vključujeta naslednja, širša filtra|vključujejo naslednji, širši filtri}} (označite jih, da razlikujete med njimi): $1", - "rcfilters-state-message-fullcoverage": "Izbira vseh filtrov v skupini je enako kot izbira nobenega, zato ta filter nima učinka. Skupina vključuje: $1", - "rcfilters-filtergroup-registration": "Registracija uporabnika", - "rcfilters-filter-registered-label": "Registriran", - "rcfilters-filter-registered-description": "Prijavljeni uredniki.", - "rcfilters-filter-unregistered-label": "Neregistriran", - "rcfilters-filter-unregistered-description": "Uredniki, ki niso prijavljeni.", - "rcfilters-filter-unregistered-conflicts-user-experience-level": "Filter je v sporu z {{PLURAL:$2|naslednjim filtrom|naslednjima filtroma|naslednjimi filtri}} Izkušnje, ki {{PLURAL:$2|najde|najdeta|najdejo}} samo registrirane uporabnike: $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.", "rcfilters-filter-editsbyother-label": "Spremembe drugih", "rcfilters-filter-editsbyother-description": "Vse spremembe razen vaše.", - "rcfilters-filtergroup-userExpLevel": "Stopnja izkušenosti (samo za registrirane uporabnike)", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Napredni filtri najdejo samo registrirane uporabnike, zato je ta filter v sporu s filtrom »Neregistrirani«.", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Filter »Neregistrirani« je v sporu z enim ali več filtri Izkušnje, ki najdejo samo registrirane uporabnike. Filtri v sporu so označeni zgoraj, v območju Dejavni filtri.", + "rcfilters-filtergroup-userExpLevel": "Registriranost in izkušenost uporabnika", + "rcfilters-filter-user-experience-level-registered-label": "Registriran", + "rcfilters-filter-user-experience-level-registered-description": "Prijavljeni uredniki.", + "rcfilters-filter-user-experience-level-unregistered-label": "Neregistriran", + "rcfilters-filter-user-experience-level-unregistered-description": "Uredniki, ki niso prijavljeni.", "rcfilters-filter-user-experience-level-newcomer-label": "Novinci", - "rcfilters-filter-user-experience-level-newcomer-description": "Manj kot 10 urejanj in 4 dni dejavnosti.", + "rcfilters-filter-user-experience-level-newcomer-description": "Registrirani uredniki z manj kot 10 urejanji in 4 dnevi dejavnosti.", "rcfilters-filter-user-experience-level-learner-label": "Učenci", - "rcfilters-filter-user-experience-level-learner-description": "Več izkušenj kot »Novinci«, vendar manj kot »Izkušeni uporabniki«.", + "rcfilters-filter-user-experience-level-learner-description": "Registrirani uredniki, katerih izkušenost se uvršča med »Novince« in »Izkušene uporabnike«.", "rcfilters-filter-user-experience-level-experienced-label": "Izkušeni uporabniki", - "rcfilters-filter-user-experience-level-experienced-description": "Več kot 30 dni dejavnosti in 500 urejanj.", + "rcfilters-filter-user-experience-level-experienced-description": "Registrirani uredniki z več kot 500 urejanji in 30 dnevi dejavnosti.", "rcfilters-filtergroup-automated": "Samodejni prispevki", "rcfilters-filter-bots-label": "Bot", "rcfilters-filter-bots-description": "Urejanja, narejena s samodejnimi orodji.", @@ -1359,6 +1372,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 ...", @@ -1371,18 +1389,28 @@ "rcfilters-hideminor-conflicts-typeofchange-global": "Filter »Manjša urejanja« je v sporu z enim ali več filtri Vrsta spremembe, ker nekaterih vrst urejanj ni možno označiti kot »manjša«. Filtri v sporu so označeni v območju Dejavni filtri zgoraj.", "rcfilters-hideminor-conflicts-typeofchange": "Nekaterih vrst sprememb ni možno označiti kot »manjše«, zato je ta filter v sporu z naslednjimi filtri Vrsta spremembe: $1", "rcfilters-typeofchange-conflicts-hideminor": "Ta filter Vrsta spremembe je v sporu s filtrom »Manjše urejanje«. Nekaterih vrst sprememb ni možno označiti kot »manjše«.", - "rcfilters-filtergroup-lastRevision": "Zadnja redakcija", - "rcfilters-filter-lastrevision-label": "Zadnja redakcija", - "rcfilters-filter-lastrevision-description": "Najnovejša sprememba strani.", - "rcfilters-filter-previousrevision-label": "Zgodnejše redakcije", - "rcfilters-filter-previousrevision-description": "Vse spremembe, ki niso najnovejša sprememba strani.", + "rcfilters-filtergroup-lastRevision": "Najnovejše redakcije", + "rcfilters-filter-lastrevision-label": "Najnovejša redakcija", + "rcfilters-filter-lastrevision-description": "Samo najnovejša sprememba strani.", + "rcfilters-filter-previousrevision-label": "Nenajnovejša redakcija", + "rcfilters-filter-previousrevision-description": "Vse spremembe, ki niso »najnovejša redakcija«.", "rcfilters-filter-excluded": "Izključeno", "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", + "rcfilters-watchlist-edit-watchlist-button": "Uredite svoj seznam nadzorovanih strani", + "rcfilters-watchlist-showupdated": "Spremembe strani, ki jih niste obiskali od zadnje spremembe, so prikazane krepko, z močnimi oznakami.", + "rcfilters-preference-label": "Skrij izboljšano različico Zadnjih sprememb", + "rcfilters-preference-help": "Povrne preoblikovanje vmesnika leta 2017 in vsa takrat in od takrat dodana orodja.", "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", @@ -1439,6 +1467,7 @@ "uploadbtn": "Naloži datoteko", "reuploaddesc": "Prekliči nalaganje in se vrni na obrazec za nalaganje", "upload-tryagain": "Vnesite spremenjen opis datoteke", + "upload-tryagain-nostash": "Naloži ponovno naloženo datoteko in spremenjen opis", "uploadnologin": "Niste prijavljeni", "uploadnologintext": "Za nalaganje datotek se morate $1.", "upload_directory_missing": "Mapa za nalaganje datotek ($1) manjka in je ni bilo mogoče ustvariti s spletnim strežnikom.", @@ -1482,7 +1511,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]]", @@ -1498,6 +1527,7 @@ "file-deleted-duplicate-notitle": "Datoteka, identična tej datoteki, je bila v preteklosti izbrisana in naslov je bil zatrt.\nPoprosite koga, ki ima možnost ogleda podatkov zatrtih datotek, da preveri položaj, preden nadaljujete s ponovnim nalaganjem.", "uploadwarning": "Opozorilo!", "uploadwarning-text": "Prosimo, spremenite opis datoteke spodaj in poskusite ponovno.", + "uploadwarning-text-nostash": "Prosimo, ponovno naložite datoteko, spodaj spremenite opis in poskusite znova.", "savefile": "Shrani datoteko", "uploaddisabled": "Nalaganje je onemogočeno", "copyuploaddisabled": "Nalaganje preko URL je onemogočeno", @@ -1660,7 +1690,7 @@ "listfiles_size": "Velikost", "listfiles_description": "Opis", "listfiles_count": "Različice", - "listfiles-show-all": "Vključuje stare različice slik", + "listfiles-show-all": "Vključi stare različice datotek", "listfiles-latestversion": "Trenutna različica", "listfiles-latestversion-yes": "Da", "listfiles-latestversion-no": "Ne", @@ -1763,6 +1793,8 @@ "pageswithprop-legend": "Strani z lastnostmi strani", "pageswithprop-text": "Stran navaja vse strani, ki uporabljajo določene lastnosti strani.", "pageswithprop-prop": "Ime lastnosti:", + "pageswithprop-reverse": "Razvrsti v obratnem vrstnem redu", + "pageswithprop-sortbyvalue": "Razvrsti po vrednosti lastnosti", "pageswithprop-submit": "Pojdi", "pageswithprop-prophidden-long": "dolga besedilna vrednost lastnosti je skrita ($1)", "pageswithprop-prophidden-binary": "dvojiška vrednost lastnosti je skrita ($1)", @@ -2064,7 +2096,7 @@ "unwatchthispage": "Prenehaj opazovati stran", "notanarticle": "Ni članek", "notvisiblerev": "Redakcija je bila izbrisana", - "watchlist-details": "Na vašem spisku nadzorov {{PLURAL:$1|je $1 stran|sta $1 strani|so $1 strani|je $1 strani}}; pogovorne strani niso štete posebej.", + "watchlist-details": "Na vašem spisku nadzorov {{PLURAL:$1|je $1 stran|sta $1 strani|so $1 strani|je $1 strani}} (plus pogovorne strani).", "wlheader-enotif": "Obveščanje po elektronski pošti je omogočeno.", "wlheader-showupdated": "Strani, spremenjene od vašega zadnjega ogleda, so prikazane '''krepko'''.", "wlnote": "{{PLURAL:$1|Navedena je zadnja|Navedeni sta zadnji|Navedene so zadnje|Navedenih je zadnjih}} $1 {{PLURAL:$1|sprememba|spremembi|spremembe|sprememb}} v {{PLURAL:$2|zadnji $2 uri|zadnjih $2 urah}}, od $3, $4.", @@ -2099,6 +2131,7 @@ "enotif_lastdiff": "Glej $1 za to spremembo.", "enotif_anon_editor": "brezimni uporabnik $1", "enotif_body": "$WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nUrejevalčev povzetek: $PAGESUMMARY $PAGEMINOREDIT\n\nNavežite stik z urejevalcem:\ne-pošta: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nMedtem ko ste prijavljeni, nadaljnjih obvestil ne boste prejemali. Na spisku nadzorov lahko tudi ponastavite zastavice obveščanj za vse spremljane strani.\n\nVaš opozorilni sistem {{GRAMMAR:rodilnik|{{SITENAME}}}}\n\n--\nZa spremembo nastavitev e-poštnih obvestil obiščite\n{{canonicalurl:{{#special:Preferences}}}}\n\nZa spremembo nastavitev spiska nadzorov obiščite\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nZa odstranitev strani z vašega spiska nadzorov obiščite\n$UNWATCHURL\n\nPovratna sporočila in pomoč:\n$HELPPAGE", + "enotif_minoredit": "To je manjše urejanje", "created": "ustvaril", "changed": "spremenil", "deletepage": "Briši stran", @@ -2127,6 +2160,7 @@ "delete-warning-toobig": "Ta stran ima obsežno zgodovino urejanja, tj. čez $1 {{PLURAL:$1|redakcijo|redakciji|redakcije|redakcij}}.\nNjeno brisanje lahko zmoti obratovanje zbirke podatkov {{GRAMMAR:dative|{{SITENAME}}}};\nnadaljujte s previdnostjo.", "deleteprotected": "Strani ne morete izbrisati, ker jo je nekdo zaščitil.", "deleting-backlinks-warning": "Opozorilo: [[Special:WhatLinksHere/{{FULLPAGENAME}}|Druge strani]] se povezujejo na ali vključujejo stran, ki jo nameravate izbrisati.", + "deleting-subpages-warning": "Opozorilo: Stran, ki jo nameravate izbrisati, ima [[Special:PrefixIndex/{{FULLPAGENAME}}/|{{PLURAL:$1|podstran|$1 podstrani|51=več kot 50 podstrani}}]].", "rollback": "Vrni spremembe", "rollbacklink": "vrni", "rollbacklinkcount": "vrni $1 {{PLURAL:$1|urejanje|urejanji|urejanja|urejanj}}", @@ -2292,6 +2326,7 @@ "sp-contributions-newonly": "Prikaži samo urejanja, ki so ustvarila nove strani", "sp-contributions-hideminor": "Skrij manjša urejanja", "sp-contributions-submit": "Išči", + "sp-contributions-outofrange": "Ne moremo prikazati nobenih rezultatov. Zahtevano IP-območje je večje kot omejitev CIDR /$1.", "whatlinkshere": "Kaj se povezuje sem", "whatlinkshere-title": "Strani, ki se povezujejo na $1", "whatlinkshere-page": "Stran:", @@ -2580,7 +2615,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.", @@ -3345,7 +3380,7 @@ "fileduplicatesearch-noresults": "Datoteke imenovane »$1« ni mogoče najti.", "specialpages": "Posebne strani", "specialpages-note-top": "Legenda", - "specialpages-note": "* Navadne posebne strani.\n* Omejene posebne strani.", + "specialpages-note-restricted": "* Navadne posebne strani.\n* Omejene posebne strani.", "specialpages-group-maintenance": "Vzdrževalna poročila", "specialpages-group-other": "Ostale posebne strani", "specialpages-group-login": "Prijavite se / ustvarite račun", @@ -3464,6 +3499,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 1d0d3e498c..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,23 +1263,22 @@ "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", "rcfilters-filterlist-noresults": "Nuk u gjet ndonjë filtër", "rcfilters-noresults-conflict": "Nuk u gjetën rezultate sepse kriteret e kërkimit janë kundërthënës", - "rcfilters-filtergroup-registration": "Regjistrimi i përdoruesit", - "rcfilters-filter-registered-label": "Regjistruar", - "rcfilters-filter-registered-description": "Redaktorët e kyçur", - "rcfilters-filter-unregistered-label": "Ç'regjistruar", - "rcfilters-filter-unregistered-description": "Redaktorët që nuk janë të kyçur", "rcfilters-filtergroup-authorship": "Autorësia e kontributit", "rcfilters-filter-editsbyself-label": "Ndryshimet nga ti", "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", + "rcfilters-filter-user-experience-level-unregistered-description": "Redaktorët që nuk janë të kyçur", "rcfilters-filter-user-experience-level-newcomer-label": "Të rinjtë", "rcfilters-filter-user-experience-level-newcomer-description": "Më pak se 10 redaktime dhe 4 ditë aktivitet.", "rcfilters-filter-user-experience-level-learner-label": "Nxënës", @@ -1316,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", @@ -1931,7 +1930,7 @@ "notvisiblerev": "Revizioni është grisur", "watchlist-details": "{{PLURAL:$1|$1 faqe|$1 faqe}} nën mbikëqyrje duke mos numëruar faqet e diskutimit.", "wlheader-enotif": "Është aktivizuar njoftimi me email.", - "wlheader-showupdated": "Faqet që kanë ndryshuar nga vizita juaj e fundit do të tregohen të trasha.", + "wlheader-showupdated": "Faqet që kanë ndryshuar nga vizita juaj e fundit do të tregohen të trasha.", "wlnote": "Më poshtë {{PLURAL:$1|është ndryshimi i fundit|janë $1''' ndryshimet e fundit}} në {{PLURAL:$2|orën e fundit|$2''' orët e fundit}}, që nga $3, $4.", "wlshowlast": "Trego $1 orët $2 ditët e fundit", "watchlist-hide": "Fshih", @@ -3160,7 +3159,6 @@ "fileduplicatesearch-noresults": "Nuk u gjet asnjë skedë me emrin \"$1\".", "specialpages": "Faqet speciale", "specialpages-note-top": "Legjenda", - "specialpages-note": "* Faqet speciale normale.\n* Faqet speciale të kufizuara.", "specialpages-group-maintenance": "Përmbledhje mirëmbajtjeje", "specialpages-group-other": "Faqe speciale të tjera", "specialpages-group-login": "Hyrë / hap llogari", @@ -3247,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 8eadb75d15..e81c1ed0f6 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": "Подвлачење веза:", @@ -372,9 +373,9 @@ "actionthrottled": "Радња је успорена", "actionthrottledtext": "У циљу борбе против непожељних порука, ограничене су вам измене у одређеном времену, а управо сте прешли то ограничење. Покушајте поново за неколико минута.", "protectedpagetext": "Ова страница је закључана за измене и друге радње.", - "viewsourcetext": "Можете читати и копирати садржај ове странице.", + "viewsourcetext": "Можете читати и копирати изворник ове странице.", "viewyourtext": "Можете да погледате и копирате изворни текст ваших измена на овој страници.", - "protectedinterface": "Ова страница садржи текст корисничког окружења за софтвер на овом викију и заштићена је ради спречавања злоупотребе.\nДа бисте додали или изменили преводе свих викија, посетите [https://translatewiki.net/ Транслејтвики], пројекат за локализацију Медијавикија.", + "protectedinterface": "Ова страница садржи текст интерфејса за софтвер на овом викију и заштићена је ради спречавања злоупотребе.\nДа бисте додали или изменили преводе било којег викија, посетите [https://translatewiki.net/ translatewiki.net], пројекат за локализацију Медијавикија.", "editinginterface": "Упозорење: уређујете страницу која се користи за приказивање текста корисничког окружења.\nИзмене на овој страници ће утицати на све кориснике овог викија.", "translateinterface": "Да додате или промените преводе за све викије, посетите [https://translatewiki.net/ Транслејтвики], пројекат за локализацију Медијавикија.", "cascadeprotected": "Ова страница је закључана јер садржи {{PLURAL:$1|следећу страницу која је заштићена|следеће странице које су заштићене}} „преносивом“ заштитом:\n$2", @@ -414,6 +415,11 @@ "createacct-yourpasswordagain-ph": "Унесите лозинку још једном", "userlogin-remembermypassword": "Остави ме пријављеног/у", "userlogin-signwithsecure": "Користите сигурну конекцију", + "cannotlogin-title": "Пријава није могућа", + "cannotlogin-text": "Пријава није могућа", + "cannotloginnow-title": "Пријава тренутно није могућа", + "cannotloginnow-text": "Пријава није могућа када се користи $1.", + "cannotcreateaccount-title": "Отварање налога није могуће", "yourdomainname": "Домен:", "password-change-forbidden": "Не можете да промените лозинку на овом викију.", "externaldberror": "Дошло је до грешке при препознавању базе података или немате овлашћења да ажурирате свој спољни налог.", @@ -441,6 +447,8 @@ "createacct-reason-ph": "Зашто правите још један налог?", "createacct-submit": "Отвори налог", "createacct-another-submit": "Отвори налог", + "createacct-continue-submit": "Наставите отварање налога", + "createacct-another-continue-submit": "Наставите отварање налога", "createacct-benefit-heading": "{{SITENAME}} је пројекат који стварају људи попут Вас.", "createacct-benefit-body1": "{{PLURAL:$1|измена}}", "createacct-benefit-body2": "{{PLURAL:$1|страница|странице}}", @@ -516,13 +524,28 @@ "changepassword-throttled": "Превише пута сте покушали да се пријавите.\nМолимо вас да сачекате $1 пре него што покушате поново.", "botpasswords": "Лозинке ботова", "botpasswords-disabled": "Лозинке ботова су онемогућене.", + "botpasswords-existing": "Постојећа лозинка бота", + "botpasswords-createnew": "Направи нову лозинку за бота", + "botpasswords-editexisting": "Измени постојећу лозинку за бота", "botpasswords-label-appid": "Име бота:", "botpasswords-label-create": "Направи", "botpasswords-label-update": "Ажурирај", "botpasswords-label-cancel": "Откажи", "botpasswords-label-delete": "Обриши", + "botpasswords-label-resetpassword": "Ресетуј лозинку", "botpasswords-label-grants-column": "Одобрено", + "botpasswords-bad-appid": "„$1” није валидан назив бота.", + "botpasswords-insert-failed": "Неуспешно додавање бота \"$1\". Да ли је већ додат?", + "botpasswords-update-failed": "Није могуће ажурирати бота \"$1\". Да ли је обрисан?", + "botpasswords-created-title": "Направљена лозинка бота", + "botpasswords-created-body": "Лозинка за бота \"$1\" корисника \"$2\" је направљена.", + "botpasswords-updated-title": "Лозинка бота промењена", + "botpasswords-updated-body": "Лозинка за бота \"$1\" корисника \"$2\" је ажурирана.", + "botpasswords-deleted-title": "Обрисана лозинка бота", + "botpasswords-deleted-body": "Лозинка за бота \"$1\" корисника \"$2\" је обрисана.", + "botpasswords-no-provider": "BotPasswordsSessionProvider није доступан.", "resetpass_forbidden": "Лозинка не може бити промењена", + "resetpass_forbidden-reason": "Лозинке није могуће променити: $1", "resetpass-no-info": "Морате бити пријављени да бисте приступили овој страници.", "resetpass-submit-loggedin": "Промени лозинку", "resetpass-submit-cancel": "Откажи", @@ -548,6 +571,10 @@ "passwordreset-emailelement": "Корисничко име: \n$1\n\nПривремена лозинка: \n$2", "passwordreset-emailsentemail": "Ако је ово имејл адреса повезана са Вашим налогом, подсетник о лозинци ће бити послат на имејл.", "passwordreset-emailsentusername": "Ако сте навели имејл адресу приликом регистрације, биће послат имејл за ресетовање лозинке.", + "passwordreset-nocaller": "Позивалац се мора навести", + "passwordreset-nosuchcaller": "Позивалац не постоји: $1", + "passwordreset-invalidemail": "Неисправна имејл адреса", + "passwordreset-nodata": "Корисничко име и адреса е-поште нису наведени", "changeemail": "Промени или уклони имејл адресу", "changeemail-header": "Попуните овај образац да би сте променили Вашу имејл адресу. Ако жели да ускратите приступ било којој имејл адреси Вашем налогу, оставите празно поље за нову имејл адресу приликом попуњавање обрасца.", "changeemail-no-info": "Морате бити пријављени да бисте приступили овој страници.", @@ -640,7 +667,7 @@ "previewnote": "Не заборавите да је ово само претпреглед.\nВаше измене још нису сачуване!", "continue-editing": "Иди на уређивачки оквир", "previewconflict": "Овај преглед осликава како ће текст у текстуалном оквиру изгледати.", - "session_fail_preview": "Извињавамо се! Нисмо могли да обрадимо Вашу измену због губитка података сесије.\n\nМожда сте одјављени. Проверите да ли сте пријављен и покушајте поново.\nАко и даље не ради, покушајте да се [[Special:UserLogout|одјавите]] и поново пријавите и проверите да ли су на Вашем претраживачу дозвољени колачићи са овог сајта.", + "session_fail_preview": "Извињавамо се! Нисмо могли да обрадимо Вашу измену због губитка података сесије.\n\nМожда сте одјављени. Проверите да ли сте пријављени и покушајте поново.\nАко и даље не ради, покушајте да се [[Special:UserLogout|одјавите]] и поново пријавите, те проверите да ли су на Вашем претраживачу дозвољени колачићи са овог сајта.", "session_fail_preview_html": "Нисмо могли да обрадимо вашу измену због губитка података сесије.\n\nБудући да је на овом викију омогућен унос HTML ознака, преглед је сакривен као мера предострожности против напада преко јаваскрипта.\n\nАко сте покушали да направите праву измену, покушајте поново.\nАко и даље не ради, покушајте да се [[Special:UserLogout|одјавите]] и поново пријавите и проверите да ли Ваш претраживач дозвољава колачиће са овог сајта.", "token_suffix_mismatch": "'''Ваша измена је одбачена јер је ваш прегледач убацио знакове интерпункције у новчић уређивања.\nТо се понекад догађа када се користи неисправан посредник.'''", "edit_form_incomplete": "Неки делови обрасца за уређивање нису стигли до сервера. Проверите да ли су ваше измене непромењене и покушајте поново.", @@ -652,7 +679,6 @@ "explainconflict": "Неко други је у међувремену променио ову страницу.\nГорњи оквир садржи садашњи текст странице.\nВаше измене су приказане у доњем оквиру.\nМораћете да унесете своје промене у садашњи текст странице.\nСамо ће текст у горњем оквиру за уређивање бити сачуван када кликнете на „$1”.", "yourtext": "Ваш текст", "storedversion": "Ускладиштена измена", - "nonunicodebrowser": "'''Упозорење: ваш прегледач не подржава уникод.'''\nПромените га пре него што почнете с уређивањем.", "editingold": "Упозорење: уређујете застарелу измену ове странице.\nАко је сачувате, све новије измене ће бити изгубљене.", "yourdiff": "Разлике", "copyrightwarning": "Имајте на уму да се сви доприноси на овом викију сматрају као објављени под лиценцом $2 (више на $1).\nАко не желите да се ваши текстови мењају и размењују без ограничења, онда их не шаљите овде.
    \nИсто тако обећавате да сте ви аутор текста, или да сте га умножили с извора који је у јавном власништву.\nНе шаљите радове заштићене ауторским правима без дозволе!", @@ -680,7 +706,7 @@ "permissionserrorstext": "Немате овлашћење за ову радњу из {{PLURAL:$1|1=следећег|следећих}} разлога:", "permissionserrorstext-withaction": "Немате дозволу за $2 из {{PLURAL:$1|следећег|следећих}} разлога:", "recreate-moveddeleted-warn": "Упозорење: поново правите страницу која је претходно обрисана.\n\nРазмотрите да ли је прикладно да наставите с уређивањем ове странице.\nОвде је наведена историја брисања и премештања с образложењем:", - "moveddeleted-notice": "Ова страница је обрисана.\nИсторија њеног брисања и премештања налази се испод:", + "moveddeleted-notice": "Ова страница је обрисана.\nИсторија њеног брисања, заштите и премештања налази се испод:", "moveddeleted-notice-recent": "Жао нам је, ова страница је недавно обрисана (у последњих 24 сата).\nОвде је наведена историја брисања и премештања с образложењем.", "log-fulllog": "Погледај целу историју", "edit-hook-aborted": "Измену је прекинула кука.\nНије дато никакво образложење.", @@ -706,6 +732,7 @@ "content-model-css": "CSS", "content-json-empty-object": "Празан објекат", "content-json-empty-array": "Празан низ", + "deprecated-self-close-category": "Странице које користе невалидне самозатварајуће HTML тагове", "duplicate-args-warning": "Упозорење: [[:$1]] позива [[:$2]] са више од једне вредности за параметар „$3“. Само последња наведена вредност ће бити коришћена.", "duplicate-args-category": "Странице с дуплираним аргументима код позива шаблона", "duplicate-args-category-desc": "Страница садржи позиве шаблона који користе двоструке аргументе, као што су {{foo|bar=1|bar=2}} или {{foo|bar|1=baz}}.", @@ -753,7 +780,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 бајта|$1 бајтова}})", @@ -843,6 +870,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 +934,7 @@ "search-interwiki-caption": "Резултати са сестринских пројеката", "search-interwiki-default": "Резултати са $1:", "search-interwiki-more": "(више)", + "search-interwiki-more-results": "још резултата", "search-relatedarticle": "Повезано", "searchrelated": "повезано", "searchall": "све", @@ -909,6 +942,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 +952,7 @@ "search-external": "Спољна претрага", "searchdisabled": "Претрага је онемогућена.\nУ међувремену можете тражити преко Гугла.\nУпамтите да његови пописи овог викија могу бити застарели.", "search-error": "Дошло је до грешке приликом претраге: $1", + "search-warning": "Упозорење приликом претраге: $1", "preferences": "Подешавања", "mypreferences": "Подешавања", "prefs-edits": "Број измена:", @@ -937,7 +972,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": "Друга подешавања", @@ -990,6 +1025,7 @@ "username": "{{GENDER:$1|Корисничко име}}:", "prefs-memberingroups": "{{PLURAL:$1|Група|Групе}}:", "prefs-memberingroups-type": "$1", + "group-membership-link-with-expiry": "$1 (до $2)", "prefs-registration": "Време регистрације:", "prefs-registration-date-time": "$1", "yourrealname": "Право име:", @@ -1029,7 +1065,7 @@ "prefs-help-prefershttps": "Ова подешавања ће ступити на снагу при следећој пријави.", "prefswarning-warning": "Променили сте ваша подешавања али нисте их још сачували.\nАко не притиснете „$1“ ваша подешавања ће бити изгубљена.", "prefs-tabs-navigation-hint": "Савет: можете користити типке са левом и десном стрелицом за кретање кроз картице.", - "userrights": "Управљање корисничким правима", + "userrights": "Корисничка права", "userrights-lookup-user": "Изабери корисника", "userrights-user-editname": "Корисничко име:", "editusergroup": "Учитај корисничке групе", @@ -1050,6 +1086,9 @@ "userrights-expiry-current": "Истиче $1", "userrights-expiry-none": "Не истиче", "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": "Група:", @@ -1077,6 +1116,7 @@ "right-createpage": "прављење страница (изузев страница за разговор)", "right-createtalk": "прављење страница за разговор", "right-createaccount": "отварање нових корисничких налога", + "right-autocreateaccount": "Пријавите се аутоматски са екстерним корисничким налогом", "right-minoredit": "означавање измена мањим", "right-move": "Премештање страница", "right-move-subpages": "премештање страница с њиховим подстраницама", @@ -1148,6 +1188,7 @@ "grant-group-file-interaction": "Уређивање датотека", "grant-group-watchlist-interaction": "Уређивање вашег списка надгледања", "grant-group-email": "Пошаљи имејл", + "grant-group-other": "Разне активности", "grant-blockusers": "Блокирање и деблокирање корисника", "grant-createaccount": "Отварање налога", "grant-createeditmovepage": "Прављење, уређивање и премештање страница", @@ -1160,6 +1201,7 @@ "grant-editprotected": "Уређивање заштићених страница", "grant-highvolume": "Масовно уређивање", "grant-patrol": "Патролирање измена", + "grant-privateinfo": "Приступи приватним информацијама", "grant-protect": "Закључавање и откључавање страница", "grant-rollback": "Враћање измена", "grant-sendemail": "Слање имејлова другим корисницима", @@ -1209,6 +1251,7 @@ "action-userrights-interwiki": "уређивање корисничких права на другим викијима", "action-siteadmin": "закључавање или откључавање базе података", "action-sendemail": "слање имејлова", + "action-editmyoptions": "уређивање ваших подешавања", "action-editmywatchlist": "измену сопственог списак надгледања", "action-viewmywatchlist": "преглед вашег списак надгледања", "action-viewmyprivateinfo": "прегледање ваших личних података", @@ -1217,12 +1260,13 @@ "action-managechangetags": "прављење и (де)активирање ознака", "action-applychangetags": "додавање ознака на ваше измене", "action-changetags": "додавање и уклањање разних ознака на појединачним изменама и уносима у дневницима", + "action-deletechangetags": "Обриши ознаке из базе података", "action-purge": "чишћење привремене меморије ове странице", "nchanges": "$1 {{PLURAL:$1|измена|измене|измена}}", "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|измена од ваше последње посете}}", "enhancedrc-history": "историја", "recentchanges": "Скорашње измене", - "recentchanges-legend": "Поставке скорашњих измена", + "recentchanges-legend": "Опције скорашњих измена", "recentchanges-summary": "Пратите скорашње измене на овој страници.", "recentchanges-noresult": "Нема промена у задатом времену за задате критеријуме.", "recentchanges-feed-description": "Пратите скорашње измене уз помоћ овог довода.", @@ -1234,45 +1278,72 @@ "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-quickfilters": "Брзе везе", + "rcfilters-advancedfilters": "Напредни филтери", + "rcfilters-limit-title": "Приказати измјена", + "rcfilters-limit-shownum": "Прикажи посљедњих $1 измјена", + "rcfilters-days-title": "Претходних неколико дана", + "rcfilters-hours-title": "Претходних неколико сати", + "rcfilters-days-show-days": "$1 {{PLURAL:$1|дан|дана}}", + "rcfilters-days-show-hours": "$1 {{PLURAL:$1|сат|сата}}", + "rcfilters-highlighted-filters-list": "Истакнуто: $1", + "rcfilters-quickfilters": "Сачувани филтери", + "rcfilters-quickfilters-placeholder-title": "Везе још увек нису упамћене", "rcfilters-savedqueries-defaultlabel": "Сачувани филтери", "rcfilters-savedqueries-rename": "Преименуј", "rcfilters-savedqueries-setdefault": "Постави као подразумевано", "rcfilters-savedqueries-unsetdefault": "Уклони као подразумевано", "rcfilters-savedqueries-remove": "Уклони", "rcfilters-savedqueries-new-name-label": "Име", - "rcfilters-savedqueries-apply-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-savedqueries-add-new-title": "Сачувај тренутне поставке филтера", "rcfilters-restore-default-filters": "Враћање подразумеваних филтера", "rcfilters-clear-all-filters": "Уклони све филтере", + "rcfilters-show-new-changes": "Погледајте најновије измене", + "rcfilters-search-placeholder": "Филтер скорашњих измјена (претражите или почните куцати)", + "rcfilters-invalid-filter": "Невалидан филтер", "rcfilters-empty-filter": "Нема активних филтера. Сви доприноси су приказани.", + "rcfilters-filterlist-title": "Филтери", + "rcfilters-filterlist-whatsthis": "Како ово функционише?", + "rcfilters-filterlist-feedbacklink": "Дајте повратне информације о новим (бета) филтерима", + "rcfilters-highlightbutton-title": "Истакни резултате", + "rcfilters-highlightmenu-title": "Одабери боју", + "rcfilters-filterlist-noresults": "Нема пронађених филтера", "rcfilters-noresults-conflict": "Није пронађен ниједан резултат јер су критеријуми претраге сукобљени", "rcfilters-state-message-subset": "Овај филтер нема ефекта јер су његови резултати укључени са онима {{PLURAL:$2|следећег, ширег филтера|следећих, ширих филтера}} (покушајте са означавањем да бисте их распознали): $1", "rcfilters-state-message-fullcoverage": "Одабир свих филтера у групи је исто као и одабир ниједног, тако да овај филтер нема ефекта. Група укључује: $1", - "rcfilters-filtergroup-registration": "Регистрација корисника", - "rcfilters-filter-registered-label": "Регистровани", - "rcfilters-filter-registered-description": "Пријављени уредници.", - "rcfilters-filter-unregistered-label": "Нерегистровани", - "rcfilters-filter-unregistered-description": "Уредници који нису пријављени.", - "rcfilters-filter-unregistered-conflicts-user-experience-level": "Овај филтер је у сукобу са следећим {{PLURAL:$2|филтером|филтерима}} за искуство, који {{PLURAL:$2|проналази|проналазе}} само регистроване кориснике: $1", "rcfilters-filtergroup-authorship": "Ауторство доприноса", "rcfilters-filter-editsbyself-label": "Ваше измене", "rcfilters-filter-editsbyself-description": "Ваши доприноси.", "rcfilters-filter-editsbyother-label": "Измене других", "rcfilters-filter-editsbyother-description": "Све измене осим Ваших.", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Филтери за искуство проналазе само регистроване кориснике, тако да је овај филтер у сукобу са филтером „Unregistered”.", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Филтер „Unregistered” је у сукобу са једним или више филтера за искуство, који проналазе само регистроване кориснике. Сукобљени филтери су означени у подручју Активни филтери, изнад.", + "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-filter-bots-label": "Бот", "rcfilters-filter-humans-label": "Човјек (није бот)", + "rcfilters-filter-patrolled-label": "Патролирано", + "rcfilters-filter-unpatrolled-label": "Непатролирано", + "rcfilters-filtergroup-significance": "Значај", "rcfilters-filter-minor-label": "Мање измјене", + "rcfilters-filter-major-label": "Значајне промене", + "rcfilters-filter-major-description": "Промене означене као значајне.", "rcfilters-filtergroup-watchlist": "Странице на списку надгледања", "rcfilters-filter-watchlist-watched-label": "На списку надгледања", "rcfilters-filter-watchlist-watched-description": "Измене страница на Вашем списку надгледања", @@ -1280,6 +1351,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": "Стварање страница", @@ -1290,9 +1362,16 @@ "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-filter-excluded": "Изостављено", + "rcfilters-tag-prefix-namespace-inverted": ":није $1", + "rcfilters-exclude-button-off": "Изостави означено", + "rcfilters-view-advanced-filters-label": "Напредни филтери", + "rcfilters-view-namespaces-tooltip": "Филтер резултата према именском простору", + "rcfilters-view-tags-tooltip": "Филтер резултата према ознаци измене", + "rcfilters-watchlist-showupdated": "Промјене на страницама које нисте посјетили од када је измјена извршена су подебљане, са испуњеним ознакама.", "rcnotefrom": "Испод {{PLURAL:$5|је измена|су измене}} од $3, $4 (до $1 приказано).", "rclistfromreset": "Ресетуј одабир датума", "rclistfrom": "Прикажи нове измене почев од $2 $3", @@ -1653,6 +1732,8 @@ "pageswithprop-legend": "Стране с особином стране", "pageswithprop-text": "Ова страна излистава стране које имају одређену особину", "pageswithprop-prop": "Име особине:", + "pageswithprop-reverse": "Сортирај у супротном редоследу", + "pageswithprop-sortbyvalue": "Сортирај према својствима", "pageswithprop-submit": "Иди", "doubleredirects": "Двострука преусмерења", "doubleredirectstext": "Ова страница приказује странице које преусмеравају на друга преусмерења.\nСваки ред садржи везе према првом и другом преусмерењу, као и одредишну страницу другог преусмерења која је обично „прави“ чланак на кога прво преусмерење треба да упућује.\nПрецртани уноси су већ решени.", @@ -1682,7 +1763,7 @@ "lonelypagestext": "Следеће странице нису повезане с другим страницама, нити су укључене трансклузијом у друге странице.", "uncategorizedpages": "Некатегорисане странице", "uncategorizedcategories": "Некатегорисане категорије", - "uncategorizedimages": "Датотеке без категорија", + "uncategorizedimages": "Некатегорисане датотеке", "uncategorizedtemplates": "Некатегорисани шаблони", "unusedcategories": "Некоришћене категорије", "unusedimages": "Некоришћене датотеке", @@ -1754,12 +1835,32 @@ "apihelp": "API помоћ", "apihelp-no-such-module": "Модул „$1“ није пронађен.", "apisandbox": "API песак", + "apisandbox-jsonly": "JavaScript је неопходан за коришћење API песка.", "apisandbox-api-disabled": "АПИ је онемогућен на овом сајту.", + "apisandbox-fullscreen": "Прошири панел", + "apisandbox-fullscreen-tooltip": "Прошири панел до величине прозора.", "apisandbox-unfullscreen": "Прикажи страницу", - "apisandbox-submit": "Постави захтев", + "apisandbox-unfullscreen-tooltip": "Смањи панел, како би навигациони линкови били доступни.", + "apisandbox-submit": "Пошаљи захтев", "apisandbox-reset": "Очисти", "apisandbox-retry": "Покушај поново", + "apisandbox-loading": "Учитавање информација за API модул \"$1\"", + "apisandbox-load-error": "Дошло је до грешке приликом учитавања информација за API модул \"$1\": $2", + "apisandbox-no-parameters": "Овај API модул нема параметре.", + "apisandbox-helpurls": "Линкови за помоћ", + "apisandbox-examples": "Примери", + "apisandbox-dynamic-parameters": "Додатни параметри", + "apisandbox-dynamic-parameters-add-label": "Додај параметар:", + "apisandbox-dynamic-parameters-add-placeholder": "Назив параметра", + "apisandbox-dynamic-error-exists": "Параметар под називом \"$1\" већ постоји.", + "apisandbox-deprecated-parameters": "Застарели параметри", + "apisandbox-fetch-token": "Аутоматски попуни токен", + "apisandbox-submit-invalid-fields-title": "Нека поља нису валидна", + "apisandbox-submit-invalid-fields-message": "Молимо Вас поправите означена поља и покушајте поново.", "apisandbox-results": "Резултати", + "apisandbox-sending-request": "Слање API захтева...", + "apisandbox-loading-results": "Пријем API резултата...", + "apisandbox-results-error": "Дошло је до грешке приликом учитавања резултата API упита: $1.", "apisandbox-request-url-label": "Адреса захтева:", "apisandbox-continue": "Настави", "apisandbox-continue-clear": "Очисти", @@ -1881,7 +1982,7 @@ "emailccsubject": "Копија ваше поруке кориснику $1: $2", "emailsent": "Имејл је послат", "emailsenttext": "Ваша имејл порука је послата.", - "emailuserfooter": "Овај имејл је {{GENDER:$1|послао|послала}} $1 {{GENDER:$2|кориснику|корисници}} $2 помоћу „{{int:emailuser}}“ с викија {{SITENAME}}. Ако одговорите на овај имејл, {{GENDER:$2|Ваш}} имејл ће бити непосредно прослеђен ка {{GENDER:$1|првобитном пошиљаоцу}}, чиме ће те {{GENDER:$2|му|јој}} открити {{GENDER:$2|Вашу}} имејл адресу.", + "emailuserfooter": "Овај имејл је {{GENDER:$1|послао|послала}} $1 {{GENDER:$2|кориснику|корисници}} $2 помоћу опције „{{int:emailuser}}“ на викију {{SITENAME}}. Ако одговорите на овај имејл, {{GENDER:$2|Ваш}} имејл ће бити непосредно прослеђен ка {{GENDER:$1|првобитном пошиљаоцу}}, чиме ћете {{GENDER:$2|му|јој}} открити {{GENDER:$2|своју}} имејл адресу.", "usermessage-summary": "Слање системске поруке.", "usermessage-editor": "Уређивач системских порука", "usermessage-template": "MediaWiki:UserMessage", @@ -1903,9 +2004,9 @@ "unwatchthispage": "Прекини надгледање", "notanarticle": "Није страница са садржајем", "notvisiblerev": "Измена је обрисана", - "watchlist-details": "Имате {{PLURAL:$1|$1 страницу|$1 странице|$1 страница}} на свом списку надгледања, не рачунајући засебно странице за разговор.", + "watchlist-details": "На Вашем списку надгледања се налази {{PLURAL:$1|$1 страница|$1 странице|$1 страница}} (плус странице за разговор).", "wlheader-enotif": "Обавештење имејлом је омогућено.", - "wlheader-showupdated": "Странице које су измењене откад сте их последњи пут посетили су '''подебљане'''.", + "wlheader-showupdated": "Странице које су измењене откад сте их последњи пут посетили су подебљане.", "wlnote": "Испод {{PLURAL:$1|је последња измена|су последње $1 измене|је последњих $1 измена}} у {{PLURAL:$2|претходном сату|претходна $2 сата|претходних $2 сати}}, закључно са $3, $4.", "wlshowlast": "Прикажи последњих $1 сати, $2 дана", "watchlist-hide": "Сакриј", @@ -1972,7 +2073,7 @@ "rollbacklinkcount-morethan": "врати више од $1 {{PLURAL:$1|измене|измене|измена}}", "rollbackfailed": "Неуспешно враћање", "cantrollback": "Не могу да вратим измену.\nПоследњи аутор је уједно и једини.", - "alreadyrolled": "Враћање последње измене странице [[:$1]] од стране {{GENDER:$2|корисника|кориснице|корисника}} [[User:$2|$2]] ([[User talk:$2|разговор]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); неко други је већ изменио или вратио страницу.\n\nПоследњу измену је {{GENDER:$3|направио|направила|направио}} [[User:$3|$3]] ([[User talk:$3|разговор]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).", + "alreadyrolled": "Враћање последње измене странице [[:$1]] од стране {{GENDER:$2|корисника|кориснице|корисника}} [[User:$2|$2]] ([[User talk:$2|разговор]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) није успело; неко други је у међувремену изменио или вратио страницу.\n\nПоследњу измену је {{GENDER:$3|направио|направила|направио}} [[User:$3|$3]] ([[User talk:$3|разговор]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).", "editcomment": "Опис измене: $1.", "revertpage": "Враћене измене [[Special:Contribs/$2|$2]] ([[User talk:$2|разговор]]) на последњу измену корисника [[User:$1|$1]]", "revertpage-nouser": "Враћене су измене скривеног корисника на последњу измену {{GENDER:$1|корисника|кориснице}} [[User:$1|$1]]", @@ -2077,6 +2178,7 @@ "undelete-search-title": "Претрага обрисаних страница", "undelete-search-box": "Претражи обрисане странице", "undelete-search-prefix": "Прикажи странице које почињу са:", + "undelete-search-full": "Прикажи наслове који садрже:", "undelete-search-submit": "Претражи", "undelete-no-results": "Одговарајућа страница у дневнику брисања није пронађена.", "undelete-filename-mismatch": "Не могу да вратим измену датотеке од $1: назив датотеке се не поклапа", @@ -2270,8 +2372,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": "Упозорење: премештате страницу категорије. Имајте на уму да ће само страница бити премештена и да све странице у старој категорији неће бити рекатегорисане у нову категорију.", @@ -2472,13 +2574,13 @@ "tooltip-ca-nstab-template": "Погледајте шаблон", "tooltip-ca-nstab-help": "Погледајте страницу за помоћ", "tooltip-ca-nstab-category": "Погледајте страницу категорија", - "tooltip-minoredit": "Означите измену као мању", - "tooltip-save": "Сачувајте измене које сте направили", + "tooltip-minoredit": "Означите ову измену као мању", + "tooltip-save": "Сачувајте своје измене", "tooltip-publish": "Објави своје измене", - "tooltip-preview": "Прегледајте своје измене. Пожељно је да користите ово дугме пре чувања", - "tooltip-diff": "Погледајте све измене које сте направили на тексту", + "tooltip-preview": "Прегледајте своје измене. Користите ово дугме пре чувања.", + "tooltip-diff": "Погледајте које измене сте направили на тексту", "tooltip-compareselectedversions": "Погледаjте разлике између две изабране измене ове странице.", - "tooltip-watch": "Додајте ову страницу на списак надгледања", + "tooltip-watch": "Додајте ову страницу на свој списак надгледања", "tooltip-watchlistedit-normal-submit": "Уклони наслове", "tooltip-watchlistedit-raw-submit": "Ажурирај списак", "tooltip-recreate": "Поново направите страницу иако је обрисана", @@ -2570,13 +2672,13 @@ "markaspatrolledtext": "Означи страницу као патролирану", "markaspatrolledtext-file": "Означи ову верзију датотеке као патролирану", "markedaspatrolled": "Означено као патролирано", - "markedaspatrolledtext": "Изабрана измена на [[:$1]] је означена као патролирана.", + "markedaspatrolledtext": "Изабрана измена странице [[:$1]] означена је као патролирана.", "rcpatroldisabled": "Патролирање скорашњих измена је онемогућено", "rcpatroldisabledtext": "Патролирање скорашњих измена је онемогућено.", "markedaspatrollederror": "Не могу да означим као патролирано", "markedaspatrollederrortext": "Морате изабрати измену да бисте је означили као патролирану.", "markedaspatrollederror-noautopatrol": "Не можете да означите своје измене као патролиране.", - "markedaspatrollednotify": "Ова измена на страници „$1“ је означена као патролирана.", + "markedaspatrollednotify": "Ова измена на страници „$1” означена је као патролирана.", "markedaspatrollederrornotify": "Означавање ове измене патролираном није успело.", "patrol-log-page": "Дневник патролирања", "patrol-log-header": "Ово је дневник патролираних измена.", @@ -3220,6 +3322,7 @@ "timezone-utc": "UTC", "duplicate-defaultsort": "Упозорење: Подразумевани кључ сврставања „$2“ мења ранији подразумевани кључ сврставања „$1“.", "duplicate-displaytitle": "Упозорење: наслов за приказ „$2“ замениће постојећи „$1“.", + "restricted-displaytitle": "Упозорење: Наслов за приказ „$1” је игнорисан пошто није еквивалентан стварном наслову странице.", "version": "Верзија", "version-extensions": "Инсталирана проширења", "version-skins": "Инсталиране теме", @@ -3283,7 +3386,7 @@ "fileduplicatesearch-noresults": "Датотека под називом „$1“ није пронађена.", "specialpages": "Посебне странице", "specialpages-note-top": "Легенда", - "specialpages-note": "* Нормалне посебне странице\n* Ограничене посебне странице", + "specialpages-note-restricted": "* Обичне посебне странице.\n* Посебне странице са ограничењем.", "specialpages-group-maintenance": "Извештаји одржавања", "specialpages-group-other": "Остале посебне странице", "specialpages-group-login": "Пријава / регистрација", @@ -3364,6 +3467,8 @@ "compare-invalid-title": "Наведени наслов је неисправан.", "compare-title-not-exists": "Наведени наслов не постоји.", "compare-revision-not-exists": "Наведена измена не постоји.", + "diff-form": "'''форма'''", + "permanentlink": "Стална веза", "dberr-problems": "Дошло је до техничких проблема.", "dberr-again": "Сачекајте неколико минута и поново учитајте страницу.", "dberr-info": "(Не могу приступити бази података: $1)", @@ -3572,6 +3677,7 @@ "mw-widgets-mediasearch-noresults": "Нема резултата.", "mw-widgets-titleinput-description-new-page": "страница још увек не постоји", "mw-widgets-titleinput-description-redirect": "преусмерава на $1", + "mw-widgets-usersmultiselect-placeholder": "Додај још...", "date-range-from": "Од датума:", "date-range-to": "До датума:", "randomrootpage": "Случајна коренска страница", diff --git a/languages/i18n/sr-el.json b/languages/i18n/sr-el.json index 8de9d646ad..d1473237ff 100644 --- a/languages/i18n/sr-el.json +++ b/languages/i18n/sr-el.json @@ -367,9 +367,9 @@ "actionthrottled": "Radnja je usporena", "actionthrottledtext": "Kao meru protiv zloupotrebe, ograničeno vam je izvođenje ove radnje previše puta u kratkom vremenskom periodu, a vi ste premašili ovo ograničenje.\nMolimo pokušajte ponovo za nekoliko minuta.", "protectedpagetext": "Ova stranica je zaključana za izmene i druge radnje.", - "viewsourcetext": "Možete čitati i kopirati sadržaj ove stranice.", + "viewsourcetext": "Možete čitati i kopirati izvornik ove stranice.", "viewyourtext": "Možete da pogledate i kopirate izvorni tekst vaših izmena na ovoj stranici.", - "protectedinterface": "Ova stranica sadrži tekst korisničkog okruženja za softver na ovom vikiju i zaštićena je radi sprečavanja zloupotrebe.\nDa biste dodali ili izmenili prevode svih vikija, posetite [https://translatewiki.net/ Translejtviki], projekat za lokalizaciju Medijavikija.", + "protectedinterface": "Ova stranica sadrži tekst interfejsa za softver na ovom vikiju i zaštićena je radi sprečavanja zloupotrebe.\nDa biste dodali ili izmenili prevode bilo kojeg vikija, posetite [https://translatewiki.net/ translatewiki.net], projekat za lokalizaciju Medijavikija.", "editinginterface": "Upozorenje: uređujete stranicu koja se koristi za prikazivanje teksta korisničkog okruženja.\nIzmene na ovoj stranici će uticati na sve korisnike ovog vikija.", "translateinterface": "Da dodate ili promenite prevode za sve vikije, posetite [https://translatewiki.net/ Translejtviki], projekat za lokalizaciju Medijavikija.", "cascadeprotected": "Ova stranica je zaključana jer sadrži {{PLURAL:$1|sledeću stranicu koja je zaštićena|sledeće stranice koje su zaštićene}} „prenosivom“ zaštitom:\n$2", @@ -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.", @@ -635,7 +635,6 @@ "explainconflict": "Neko drugi je u međuvremenu promenio ovu stranicu.\nGornji okvir sadrži sadašnji tekst stranice.\nVaše izmene su prikazane u donjem okviru.\nMoraćete da unesete svoje promene u sadašnji tekst stranice.\nSamo će tekst u gornjem okviru za uređivanje biti sačuvan kada kliknete na „$1”.", "yourtext": "Vaš tekst", "storedversion": "Uskladištena izmena", - "nonunicodebrowser": "'''Upozorenje: vaš pregledač ne podržava unikod.'''\nPromenite ga pre nego što počnete s uređivanjem.", "editingold": "Upozorenje: uređujete zastarelu izmenu ove stranice.\nAko je sačuvate, sve novije izmene će biti izgubljene.", "yourdiff": "Razlike", "copyrightwarning": "Imajte na umu da se svi doprinosi na ovom vikiju smatraju kao objavljeni pod licencom $2 (više na $1).\nAko ne želite da se vaši tekstovi menjaju i razmenjuju bez ograničenja, onda ih ne šaljite ovde.
    \nIsto tako obećavate da ste vi autor teksta, ili da ste ga umnožili s izvora koji je u javnom vlasništvu.\n'''Ne šaljite radove zaštićene autorskim pravima bez dozvole!'''", @@ -959,6 +958,7 @@ "username": "{{GENDER:$1|Korisničko ime}}:", "prefs-memberingroups": "{{PLURAL:$1|Grupa|Grupe}}:", "prefs-memberingroups-type": "$1", + "group-membership-link-with-expiry": "$1 (do $2)", "prefs-registration": "Vreme registracije:", "prefs-registration-date-time": "$1", "yourrealname": "Pravo ime:", @@ -1014,6 +1014,8 @@ "userrights-changeable-col": "Grupe koje možete da promenite", "userrights-unchangeable-col": "Grupe koje ne možete da promenite", "userrights-irreversible-marker": "$1*", + "userrights-expiry-existing": "Postojeće vrijeme isteka: $3, $2", + "userrights-expiry-othertime": "Drugo vrijeme:", "userrights-conflict": "Sukob promena korisničkih prava! Molimo proverite vaše izmene.", "group": "Grupa:", "group-user": "Korisnici", @@ -1166,7 +1168,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.", @@ -1178,13 +1180,20 @@ "recentchanges-legend-heading": "Legenda:", "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-filtergroup-registration": "Registracija korisnika", - "rcfilters-filter-registered-label": "Registrovani", - "rcfilters-filter-registered-description": "Prijavljeni urednici.", - "rcfilters-filter-unregistered-label": "Neregistrovani", - "rcfilters-filter-unregistered-description": "Urednici koji nisu prijavljeni.", + "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}}", + "rcfilters-days-show-hours": "$1 {{PLURAL:$1|sat|sata}}", + "rcfilters-search-placeholder": "Filter skorašnjih izmjena (pretražite ili počnite kucati)", "rcfilters-filtergroup-authorship": "Autorstvo doprinosa", + "rcfilters-filter-user-experience-level-registered-label": "Registrovani", + "rcfilters-filter-user-experience-level-registered-description": "Prijavljeni urednici.", + "rcfilters-filter-user-experience-level-unregistered-label": "Neregistrovani", + "rcfilters-filter-user-experience-level-unregistered-description": "Urednici koji nisu prijavljeni.", "rcfilters-filter-user-experience-level-newcomer-label": "Novajlije", "rcfilters-filter-user-experience-level-newcomer-description": "Manje od 10 izmjena i 4 dana aktivnosti.", "rcfilters-filter-user-experience-level-learner-label": "Učenici", @@ -1192,12 +1201,17 @@ "rcfilters-filter-user-experience-level-experienced-label": "Iskusni korisnici", "rcfilters-filter-user-experience-level-experienced-description": "Preko 30 dana aktivnosti i 500 izmjena.", "rcfilters-filter-humans-label": "Čovjek (nije bot)", + "rcfilters-filter-patrolled-label": "Patrolirano", + "rcfilters-filter-unpatrolled-label": "Nepatrolirano", "rcfilters-filter-minor-label": "Manje izmjene", "rcfilters-filter-pageedits-label": "Izmjene stranica", "rcfilters-filter-pageedits-description": "Izmjene viki sadržaja, rasprava, opisa kategorija...", "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", @@ -1574,7 +1588,7 @@ "lonelypagestext": "Sledeće stranice nisu povezane s drugim stranicama, niti su uključene transkluzijom u druge stranice.", "uncategorizedpages": "Nekategorisane stranice", "uncategorizedcategories": "Nekategorisane kategorije", - "uncategorizedimages": "Datoteke bez kategorija", + "uncategorizedimages": "Nekategorisane datoteke", "uncategorizedtemplates": "Nekategorisani šabloni", "unusedcategories": "Nekorišćene kategorije", "unusedimages": "Nekorišćene datoteke", @@ -1768,7 +1782,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", @@ -1859,7 +1873,7 @@ "rollbacklinkcount-morethan": "vrati više od $1 {{PLURAL:$1|izmene|izmene|izmena}}", "rollbackfailed": "Neuspešno vraćanje", "cantrollback": "Ne mogu da vratim izmenu.\nPoslednji autor je ujedno i jedini.", - "alreadyrolled": "Vraćanje poslednje izmene stranice [[:$1]] od strane {{GENDER:$2|korisnika|korisnice|korisnika}} [[User:$2|$2]] ([[User talk:$2|razgovor]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); neko drugi je već izmenio ili vratio stranicu.\n\nPoslednju izmenu je {{GENDER:$3|napravio|napravila|napravio}} [[User:$3|$3]] ([[User talk:$3|razgovor]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).", + "alreadyrolled": "Vraćanje poslednje izmene stranice [[:$1]] od strane {{GENDER:$2|korisnika|korisnice|korisnika}} [[User:$2|$2]] ([[User talk:$2|razgovor]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) nije uspelo; neko drugi je u međuvremenu izmenio ili vratio stranicu.\n\nPoslednju izmenu je {{GENDER:$3|napravio|napravila|napravio}} [[User:$3|$3]] ([[User talk:$3|razgovor]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).", "editcomment": "Opis izmene: $1.", "revertpage": "Vraćene izmene [[Special:Contribs/$2|$2]] ([[User talk:$2|razgovor]]) na poslednju izmenu korisnika [[User:$1|$1]]", "revertpage-nouser": "Vraćene su izmene skrivenog korisnika na poslednju izmenu {{GENDER:$1|korisnika|korisnice}} [[User:$1|$1]]", @@ -2144,8 +2158,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.", @@ -2344,13 +2358,13 @@ "tooltip-ca-nstab-template": "Pogledajte šablon", "tooltip-ca-nstab-help": "Pogledajte stranicu za pomoć", "tooltip-ca-nstab-category": "Pogledajte stranicu kategorija", - "tooltip-minoredit": "Označite izmenu kao manju", - "tooltip-save": "Sačuvajte izmene koje ste napravili", + "tooltip-minoredit": "Označite ovu izmenu kao manju", + "tooltip-save": "Sačuvajte svoje izmene", "tooltip-publish": "Objavi svoje izmene", - "tooltip-preview": "Pregledajte svoje izmene. Poželjno je da koristite ovo dugme pre čuvanja", - "tooltip-diff": "Pogledajte sve izmene koje ste napravili na tekstu", + "tooltip-preview": "Pregledajte svoje izmene. Koristite ovo dugme pre čuvanja.", + "tooltip-diff": "Pogledajte koje izmene ste napravili na tekstu", "tooltip-compareselectedversions": "Pogledajte razlike između dve izabrane izmene ove stranice.", - "tooltip-watch": "Dodajte ovu stranicu na spisak nadgledanja", + "tooltip-watch": "Dodajte ovu stranicu na svoj spisak nadgledanja", "tooltip-watchlistedit-normal-submit": "Ukloni naslove", "tooltip-watchlistedit-raw-submit": "Ažuriraj spisak", "tooltip-recreate": "Ponovo napravite stranicu iako je obrisana", @@ -2440,13 +2454,13 @@ "markaspatrolledtext": "Označi stranicu kao patroliranu", "markaspatrolledtext-file": "Označi ovu verziju datoteke kao patroliranu", "markedaspatrolled": "Označeno kao patrolirano", - "markedaspatrolledtext": "Izabrana izmena na [[:$1]] je označena kao patrolirana.", + "markedaspatrolledtext": "Izabrana izmena stranice [[:$1]] označena je kao patrolirana.", "rcpatroldisabled": "Patroliranje skorašnjih izmena je onemogućeno", "rcpatroldisabledtext": "Patroliranje skorašnjih izmena je onemogućeno.", "markedaspatrollederror": "Ne mogu da označim kao patrolirano", "markedaspatrollederrortext": "Morate izabrati izmenu da biste je označili kao patroliranu.", "markedaspatrollederror-noautopatrol": "Ne možete da označite svoje izmene kao patrolirane.", - "markedaspatrollednotify": "Ova izmena na stranici „$1“ je označena kao patrolirana.", + "markedaspatrollednotify": "Ova izmena na stranici „$1” označena je kao patrolirana.", "markedaspatrollederrornotify": "Označavanje ove izmene patroliranom nije uspelo.", "patrol-log-page": "Dnevnik patroliranja", "patrol-log-header": "Ovo je dnevnik patroliranih izmena.", @@ -3083,6 +3097,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", @@ -3145,7 +3160,7 @@ "fileduplicatesearch-noresults": "Datoteka pod nazivom „$1“ nije pronađena.", "specialpages": "Posebne stranice", "specialpages-note-top": "Legenda", - "specialpages-note": "* Normalne posebne stranice\n* Ograničene posebne stranice", + "specialpages-note-restricted": "* Obične posebne stranice.\n* Posebne stranice sa ograničenjem.", "specialpages-group-maintenance": "Izveštaji održavanja", "specialpages-group-other": "Ostale posebne stranice", "specialpages-group-login": "Prijava / registracija", @@ -3225,6 +3240,8 @@ "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'''", + "permanentlink": "Stalna veza", "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)", @@ -3426,6 +3443,7 @@ "mw-widgets-dateinput-placeholder-month": "GGGG-MM", "mw-widgets-titleinput-description-new-page": "stranica još uvek ne postoji", "mw-widgets-titleinput-description-redirect": "preusmerava na $1", + "mw-widgets-usersmultiselect-placeholder": "Dodaj još...", "randomrootpage": "Slučajna korenska stranica", "log-action-filter-all": "Sve", "log-action-filter-move-move_redir": "Premeštanje sa prepisivanjem preusmerenja", diff --git a/languages/i18n/su.json b/languages/i18n/su.json index 7e2cd2497e..af1f48ea9b 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)", @@ -316,13 +316,13 @@ "internalerror": "Kasalahan internal", "internalerror_info": "Kasalahan internal: $1", "internalerror-fatal-exception": "Mahiwal dina ketikan \"$1\"", - "filecopyerror": "Teu bisa nyalin koropak \"$1\" ka \"$2\".", - "filerenameerror": "Teu bisa ngaganti ngaran koropak \"$1\" jadi \"$2\".", - "filedeleteerror": "Teu bisa ngahapus koropak \"$1\".", + "filecopyerror": "Teu bisa néplak berkas \"$1\" ka \"$2\".", + "filerenameerror": "Teu bisa ngarobah ngaran berkas \"$1\" jadi \"$2\".", + "filedeleteerror": "Teu bisa mupus berkas \"$1\".", "directorycreateerror": "Henteu bisa nyieun diréktori \"$1\".", "directoryreadonlyerror": "Diréktori \"$1\" ukur-baca.", "directorynotreadableerror": "Diréktori \"$1\" henteu bisa dibaca.", - "filenotfound": "Teu bisa manggihan koropak \"$1\".", + "filenotfound": "Teu bisa manggihan berkas \"$1\".", "unexpected": "Peunteun di luar hontalan: \"$1\"=\"$2\".", "formerror": "Kasalahan: teu bisa ngirim formulir", "badarticleerror": "Peta ieu teu bisa dipigawé na kaca ieu.", @@ -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,15 +412,18 @@ "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", + "createacct-reason-help": "Talatah ditémbongkeun dina log panyieunan akun", "createacct-submit": "Jieun akun anjeun", "createacct-another-submit": "Jieun akun", "createacct-continue-submit": "Tuluykeun panyieunan akun", @@ -429,6 +433,7 @@ "createacct-benefit-body2": "{{PLURAL:$1|kaca|kaca}}", "createacct-benefit-body3": "{{PLURAL:$1|kontributor|kontributor}} panungtung", "badretype": "Sandi nu diasupkeun teu cocog.", + "usernameinprogress": "Panyieunan akun pikeun ngaran pamaké ieu keur dijalankeun. Mangga tungguan.", "userexists": "Sandiasma nu diasupkeun geus aya nu maké.\nMangga pilih sandiasma nu séjén.", "loginerror": "Kasalahan asup log", "createacct-error": "Nyieun akun éror", @@ -436,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\".", @@ -447,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", @@ -496,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", @@ -510,9 +518,18 @@ "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.", "botpasswords-updated-title": "Kecap sandi bot dianyarkeun", + "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.", @@ -539,11 +556,14 @@ "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", - "changeemail": "Ganti alamat surélék", - "changeemail-header": "Ganti alamat surélék akun", + "passwordreset-nodata": "Boh ngaran pamaké, boh alamat surélék teu dibéré", + "changeemail": "Ganti atawa pupus alamat surélék", + "changeemail-header": "Lengkepan ieu formulir pikeun ngarobah alamat surélék anjeun. Mun anjeun hayang mupus sakumna alamat surélék nu patalian jeung akun anjeun, kosongkeun alamat surélék nalika ngirim formulir.", "changeemail-no-info": "Anjeun kudu asup log pikeun bisa muka ieu kaca sacara langsung.", "changeemail-oldemail": "Alamat surélék ayeuna:", "changeemail-newemail": "Alamat surélék anyar:", @@ -621,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!'''", @@ -634,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.'''", @@ -646,17 +666,16 @@ "explainconflict": "Aya nu geus ngarobah kaca ieu saprak anjeun mimiti ngédit.\nTéks béh luhur ngandung téks kaca nu aya kiwari, parobahan anjeun ditémbongkeun di béh handap.\nAnjeun kudu ngagabungkeun parobahan anjeun kana téks nu kiwari.\n'''Ngan''' téks nu béh luhur nu bakal disimpen nalika anjeun mencét \"$1\".", "yourtext": "Tulisan anjeun", "storedversion": "Vérsi nu disimpen", - "nonunicodebrowser": "'''AWAS: Panyungsi anjeung teu maké unicode, mangga robah heula méméh ngédit artikel.'''", "editingold": "'''PERHATOSAN: Anjeun ngédit révisi kadaluwarsa kaca ieu. Mun ku anjeun disimpen, sagala parobahan nu dijieun sanggeus révisi ieu bakal leungit.'''", "yourdiff": "Béda", "copyrightwarning": "Perhatikeun yén sadaya kontribusi ka MediaWiki dianggap medal dina panangtayungan lisénsi $2 (tempo $1 pikeun jéntréna). Mun anjeun teu miharep tulisan anjeun dirobah sarta disebarkeun deui, ulah dilebetkeun ka dieu.
    \nAnjeun ogé jangji yén tulisan ieu dijieun ku sorangan, atawa disalin ti ''domain'' umum atawa sumberdaya bébas séjénna. '''ULAH NGASUPKEUN KARYA NU MIBANDA HAK CIPTA TANPA IDIN!'''", "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:", @@ -669,11 +688,11 @@ "nocreate-loggedin": "Anjeun teu diwenangkeun pikeun nyieun kaca anyar.", "sectioneditnotsupported-title": "Teu bisa ngarobah dina sub-judul", "sectioneditnotsupported-text": "Eusi subjudul di ieu kaca teu bisa diédit.", - "permissionserrors": "Kasalahan Hak Aksés", + "permissionserrors": "Kasalahan widi", "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.", @@ -684,10 +703,12 @@ "postedit-confirmation-saved": "Éditan anjeun tos disimpen.", "edit-already-exists": "Teu bisa nyieun kaca anyar.\nArtikelna geus aya.", "defaultmessagetext": "Téks ti dituna", + "content-failed-to-parse": "Gagal ngarecah kontén $2 pikeun modél $1:$3", "invalid-content-data": "Data eusi henteu valid", "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", @@ -706,8 +727,12 @@ "post-expand-template-argument-warning": "'''Awas''': Ieu kaca sahenteuna ngandung hiji argumén citakan anu ukuran ékspansina badag teuing. Éta argumén geus teu dipaliré.", "post-expand-template-argument-category": "Kaca kalawan argumén citakan anu teu dipaliré", "parser-template-loop-warning": "Katangén ayana citakan anu patumpang tindih: [[$1]]", + "template-loop-category": "Kaca kawalan citakan bulak-balik", "parser-template-recursion-depth-warning": "Citakan patumpang tindih ngaleuwihan wates($1)", "language-converter-depth-warning": "Parobah basa ngaleuwihan wates jerona ($1)", + "node-count-exceeded-category": "Kaca di mana itungan-node kalampau", + "node-count-exceeded-category-desc": "Ieu kaca ngaleuwihan node maksimum.", + "node-count-exceeded-warning": "Kaca nu ngaleuwihan jumlah node", "expansion-depth-exceeded-category": "Kaca-kaca anu jero ékspansina leuwih ti wates", "expansion-depth-exceeded-category-desc": "Kacana ngaleuwihan wates jero ékspansina.", "expansion-depth-exceeded-warning": "Kaca ngaleuwihan jero ékspansi", @@ -773,6 +798,7 @@ "revdelete-selected-text": "{{PLURAL:$1|Révisi dipilih}} ti [[:$2]]:", "revdelete-selected-file": "{{PLURAL:$1|Vérsi berkas dipilih}} ti [[:$2]]:", "logdelete-selected": "{{PLURAL:$1|Kajadian log dipilih}}:", + "revdelete-text-file": "Vérsi berkas nu dipupus bakal muncul kénéh di jujutan berkas, ngan bagéan tina konténna bakal moal bisa diaksés pikeun umum.", "revdelete-confirm": "Mangga geura konfirmasi yen Anjeun gaduh maksad pikeun ngalakukeun hal ieu, paham kana konsekwensina, tur nu dilakukeun ieu teh luyu sareng [[{{MediaWiki:Policy-url}}|kawijakanana]]", "revdelete-suppress-text": "Nyumputkeun revisi '''ukur''' bisa digunakeun keur kasus-kasus di handap ieu:\n* Informasi nu boga potensi mitenah\n* Informasi pribadi nu teu pantes\n*: ''alamat imah katut nomer telepon, nomer kartu identitas, jeung lian-liana.''", "revdelete-legend": "Setél réstriksi révisi:", @@ -822,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.", @@ -874,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", @@ -885,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:", @@ -903,15 +937,17 @@ "prefs-user-pages": "Kaca pamaké", "prefs-personal": "Data pamaké", "prefs-rc": "Panémbong robahan anyar jeung tukung", - "prefs-watchlist": "Awaskeuneun", - "prefs-editwatchlist": "Ropéa awaskeuneun", + "prefs-watchlist": "Daptar awaseun", + "prefs-editwatchlist": "Édit daptar awaseun", "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-watchlist-token": "Token daptar awaseun:", "prefs-misc": "Pangaturan rupa-rupa", "prefs-resetpass": "Ganti sandi", "prefs-changeemail": "Ganti atawa pupus alamat surélék", @@ -946,11 +982,12 @@ "timezoneregion-europe": "Éropah", "timezoneregion-indian": "Samudra Indonésia", "timezoneregion-pacific": "Samudra Pasifik", - "allowemail": "Buka koropak pikeun nampa surélék ti nu séjén", + "allowemail": "Buka berkas pikeun nampa surélék ti nu séjén", + "email-blacklist-label": "Larang ieu pamaké ngirim surélék ka kuring:", "prefs-searchoptions": "Paluruh", "prefs-namespaces": "Ngaranspasi", "default": "ti dituna", - "prefs-files": "Koropak", + "prefs-files": "Berkas", "prefs-custom-css": "CSS sakahayang", "prefs-custom-js": "JavaScript sakahayang", "prefs-common-css-js": "CSS/JavaScript dipaké pikeun sakabéh kulit:", @@ -968,12 +1005,12 @@ "prefs-help-signature": "Pamanggih dina kaca sawala/obrolan kudu ditandaan \"~~~~\" nu bakal robah jadi tanda tangan anjeun jeung titimangsana.", "badsig": "Parafna teu valid; pariksa tag HTML-na geura.", "badsiglength": "Tawis leungeun panjang teuing. Kuduna kurang ti $1 {{PLURAL:$1|karaktér|karaktér}}.", - "yourgender": "Jenis kelamin:", - "gender-unknown": "Moal béja-béja", + "yourgender": "Anjeun leuwih resep didéskripsikeunna kumaha?", + "gender-unknown": "Nalika nyebut anjeun, pakakas lemes bakal ngagunakeun kekecapan nu nétral waktu diperlukeun", "gender-male": "Manéhna ngédit kaca wiki", "gender-female": "Manéhna ngédit kaca wiki", "email": "Surélék", - "prefs-help-realname": "* Ngaran asli (pilihan): mun anjeun milih ngeusian, bakal dipaké pikeun nandaan kontribusi anjeun.", + "prefs-help-realname": "Ngaran asli miwatek opsional.\nMun disayagakeun, ieu ngaran bisa dipaké pikeun méré atribusi kana karya anjeun.", "prefs-help-email": "Surélék sipatna pilihan, tapi diperlukeun pikeun nyetél ulang sandi lamun anjeun poho.", "prefs-help-email-others": "Anjeun ogé bisa milih sangkan bisa disuratan ngaliwatan kaca pamaké atawa obrolan tanpa kudu ngedalkeun saha anjeun sabenerna.", "prefs-help-email-required": "Alamat surélék dibutuhkeun.", @@ -993,16 +1030,17 @@ "prefs-displaywatchlist": "Pilihan pidangan", "prefs-tokenwatchlist": "Token", "prefs-diffs": "Béda", - "userrights": "Manajemén hak pamaké", - "userrights-lookup-user": "Atur gorombolan pamaké", + "userrights": "Hak pamaké", + "userrights-lookup-user": "Pilih saurang pamaké", "userrights-user-editname": "Asupkeun sandiasma:", "editusergroup": "Muat gorombolan pamaké", - "editinguser": "Ngarobah hak kontributor '''[[User:$1|$1]]''' $2", - "userrights-editusergroup": "Édit gorombolan pamaké", - "saveusergroups": "Simpen Grup Pamaké", + "editinguser": "Ngarobah hak pamaké pikeun {{GENDER:$1|pamaké}} [[User:$1|$1]] $2", + "userrights-editusergroup": "Édit gorombolan {{GENDER:$1|pamaké}}", + "userrights-viewusergroup": "Témbong gorombolan {{GENDER:$1|pamaké}}", + "saveusergroups": "Simpen gorombolan {{GENDER:$1|pamaké}}", "userrights-groupsmember": "Anggota ti:", "userrights-groupsmember-auto": "Anggota implisit ti:", - "userrights-groups-help": "Anjeun bisa ngarobah jumplukan pamaké ieu:\n* Kotak jeung tanda cék mangrupa jumplukan pamaké anu dimaksud\n* Kotak tanpa tanda cék hartosna pamaké ieu lain anggota jumplukan kasebut\n* Tanda * nandakeun yén Anjeun henteu bisa ngabolaykeun jumplukan kasebut lamun Anjeun geus nambahanana, atawa sabalikna.", + "userrights-groups-help": "Anjeun bisa ngarobah jumplukan pamaké ieu:\n* Kotak jeung tanda cék mangrupa jumplukan pamaké anu dimaksud\n* Kotak tanpa tanda cék hartosna pamaké ieu lain anggota jumplukan kasebut\n* Tanda * nandakeun yén Anjeun henteu bisa ngabolaykeun jumplukan kasebut lamun Anjeun geus nambahanana, atawa sabalikna.\n* Tanda # nandakeun yén anjeun ngan ukur bisa malikkeun waktu kadaluwarsa kaanggotaan ini gorombolan, tapi anjeun teu bisa majukeun waktu kadaluwarsana.", "userrights-reason": "Alesan:", "userrights-no-interwiki": "Anjeung teu diwenangkeun ngarobah hak pamaké dina wiki séjén.", "userrights-nodatabase": "Pangkalan data $1 euweuh atawa henteu lokal.", @@ -1011,7 +1049,10 @@ "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:", + "userrights-invalid-expiry": "Waktu kadaluwarsa pikeun gorombolan \"$1\" teu sah.", + "userrights-expiry-in-past": "Waktu kadaluwarsa pikeun gorombolan \"$1\" geus kaliwat berlalu.", "group": "Gorombolan:", "group-user": "Pamaké", "group-autoconfirmed": "Pamaké anu otomatis dikonfirmasi", @@ -1037,6 +1078,7 @@ "right-createpage": "Nyieun kaca anyar (nu lain kaca obrolan)", "right-createtalk": "Nyieun kaca obrolan", "right-createaccount": "Nyieun akun anyar", + "right-autocreateaccount": "Otomatis asup log ku akun pamaké luar", "right-minoredit": "Nandaan éditan minor", "right-move": "Mindahkeun kaca", "right-move-subpages": "Pindahkeun kaca katut sakabéh subkacana", @@ -1045,17 +1087,18 @@ "right-movefile": "Mindahkeun berkas", "right-suppressredirect": "Henteu nyieun hiji alihan ti ngaran lila sabot mindahkeun kaca", "right-upload": "Unjal berkas", - "right-reupload": "Nimpah koropak nu geus aya", + "right-reupload": "Ngalandih berkas nu geus aya", "right-reupload-own": "Nimpah koropak nu geus aya nu dimuat ku sorangan", "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", @@ -1071,34 +1114,52 @@ "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-editsemiprotected": "Édit kaca nu ditantayungan minangka \"{{int:protect-level-autoconfirmed}}\"", + "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-viewmywatchlist": "Tempo awaskeuneun anjeun", + "right-editmyusercss": "Édit berkas CSS pamaké anjeun", + "right-editmyuserjs": "Édit berkas JavaScript pamaké anjeun", + "right-viewmywatchlist": "Tempo daptar awaseun anjeun", + "right-editmywatchlist": "Édit daptar awaskeuneun anjeung. Masih aya cara nambahkeun kaca tanpa kudu mibanda ieu hak.", "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-rollback": "Geuwat malikkeun éditan-éditan pamaké panungtung nu ngédit kaca tinangtu", + "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", @@ -1116,15 +1177,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", @@ -1133,21 +1196,24 @@ "action-move-categorypages": "pindahkeun kaca kategori", "action-movefile": "mindahkeun ieu berkas", "action-upload": "ngamuat ieu berkas", - "action-reupload": "nimpah berkas nu geus aya ieu", + "action-reupload": "ngalandih berkas nu geus aya", "action-reupload-shared": "nimpah ier berkas dina gudang sadaya", "action-upload_by_url": "ngamuat ieu berkas ti URL", "action-writeapi": "maké API", "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", @@ -1156,11 +1222,19 @@ "action-userrights-interwiki": "ngarobah hak pamaké di wiki lianna", "action-siteadmin": "ngonci atawa muka konci databés", "action-sendemail": "ngirim surélék", - "action-editmywatchlist": "robah awaskeuneun anjeun", + "action-editmyoptions": "édit préférénsi anjeun", + "action-editmywatchlist": "édit daptar awaseun 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-changetags": "nambahan jeung mupus tag sakahanyar dina révisi individu jeung éntri log", + "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", @@ -1175,36 +1249,64 @@ "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-quickfilters-placeholder-description": "Pikeun nyimpen pangaturan saringan jeung makéna deui, klik ikon ciciri kaca di aréa Panyaringan Aktif, di handap.", + "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éjaan kami kedalan anjeun ngeunaan ieu alat panyaringan (anyar)", "rcfilters-highlightbutton-title": "Hasil sorotan", "rcfilters-highlightmenu-title": "Pilih warna", "rcfilters-highlightmenu-help": "Pilih warna pikeun nyorot ieu properti", "rcfilters-filterlist-noresults": "Taya saringan nu kapanggih", - "rcfilters-filtergroup-registration": "Padaptaran pamaké", - "rcfilters-filter-registered-label": "Kadaptar", - "rcfilters-filter-registered-description": "Éditor asup log", - "rcfilters-filter-unregistered-label": "Teu kadaptar", - "rcfilters-filter-unregistered-description": "Éditor nu teu asup log.", + "rcfilters-noresults-conflict": "Hasil teu kapanggih lantaran kritéria pamaluruhanna pajiin-jiin", "rcfilters-filtergroup-authorship": "Kontribusi kapangarangan", "rcfilters-filter-editsbyself-label": "Éditan meunang anjeun", "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-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.", @@ -1214,20 +1316,51 @@ "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-categorization-description": "Rékaman kaca nu geus ditambahkeun atawa dipupus tina kategori.", "rcfilters-filter-logactions-label": "Tarékah kacatet", - "rcfilters-filtergroup-lastRevision": "Révisi kiwari", - "rcfilters-filter-lastrevision-label": "Révisi kiwari", - "rcnotefrom": "Di handap ieu {{PLURAL:$5|parobahan|parobahan}} ti $3, $4 (nepi ka $1 ditémbongkeun).", + "rcfilters-filtergroup-lastRevision": "Révisi panganyarna", + "rcfilters-filter-lastrevision-label": "Révisi panganyarna", + "rcfilters-filter-lastrevision-description": "Ngan parobahan panganyarna di ieu kaca.", + "rcfilters-filter-previousrevision-label": "Lain révisi panganyarna", + "rcfilters-filter-previousrevision-description": "Sakabéh parobahan nu lain mangrupa \"révisi panganyarna\".", + "rcfilters-filter-excluded": "Diiwalkeun", + "rcfilters-tag-prefix-namespace-inverted": ":lain $1", + "rcfilters-exclude-button-off": "Iwalkeun nu dipilih", + "rcfilters-exclude-button-on": "Teu kaasup nu dipilih", + "rcfilters-view-advanced-filters-label": "Panyaringan leuwih jero", + "rcfilters-view-tags": "Éditan ditandaan", + "rcfilters-view-namespaces-tooltip": "Saring hasil dumasar ngarangspasi", + "rcfilters-view-tags-tooltip": "Saring hasil maké tag éditan", + "rcfilters-view-return-to-default-tooltip": "Balik ka menu panyaringan utama", + "rcfilters-liveupdates-button": "Parobahan langsung", + "rcfilters-liveupdates-button-title-on": "Pareuman parobahan langsung", + "rcfilters-liveupdates-button-title-off": "Témbongkeun parobahan anyar nalika éta parobahan prung", + "rcfilters-watchlist-markseen-button": "Tandaan sakumna parobahan minangka katémbong", + "rcfilters-watchlist-edit-watchlist-button": "Édit daptar kaca awaskeuneun anjeun", + "rcfilters-preference-label": "Samunikeun vérsi Anyar Robah nu geus diropéa", + "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", @@ -1287,12 +1420,12 @@ "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", + "uploadlogpagetext": "Di handap téh daptar unjalan berkas panganyarna. \nTémbong [[Special:NewFiles|galéri berkas anyar]] pikeun pidangan visual.", + "filename": "Ngaran berkas", "filedesc": "Ringkesna", "fileuploadsummary": "Ringkesan:", "filereuploadsummary": "Parobahan berkas:", @@ -1300,8 +1433,8 @@ "filesource": "Sumber:", "ignorewarning": "Ulah diwaro, simpen baé koropakna.", "ignorewarnings": "Tong diwaro panginget naon baé", - "minlength1": "Ngaran koropak sahanteuna kudu diwangun ku hiji aksara.", - "illegalfilename": "Ngaran koropak \"$1\" ngandung aksara nu teu diwenangkeun pikeun judul kaca. Mangga gentos ngaranna tur cobi muatkeun deui.", + "minlength1": "Ngaran koropak sahenteuna ngandung sahurup.", + "illegalfilename": "Ngaran berkas \"$1\" ngandung aksara nu teu diwenangkeun pikeun judul kaca. Mangga ganti ngaranna tur coba unjal deui.", "filename-toolong": "Ngaran berkas teu meunang leuwih ti 240 bit.", "badfilename": "Ngaran gambar geus dirobah jadi \"$1\".", "filetype-mime-mismatch": "Éksténsi berkas \".$1\" teu luyu jeung tipeu MIME anu kadetéksi ti berkas ($2).", @@ -1313,15 +1446,17 @@ "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.", - "large-file": "Hadéna mah koropak nu dimuat téh teu leuwih ti $1 bit; ieu koropak gedéna $2 bit.", - "largefileserver": "Ieu koropak badag teuing, ngaleuwihan wates nu diwenangkeun ku server.", - "emptyfile": "Koropak nu dimuatkeun ku anjeun jigana kosong. Hal ieu bisa jadi alatan sarupaning ''typo'' na ngaran koropakna. Mangga parios deui yén anjeun leres-leres hoyong ngamuat koropak éta.", + "large-file": "Alusna mah ukuran berkas téh teu leuwih ti $1;\nari ieu berkas $2.", + "largefileserver": "Ieu berkas leuwih badag tina nu diwenangkeun ku sérver.", + "emptyfile": "Berkas nu diunjal ku anjeun jigana mah kosong. Ieu perkara meureun alatan salah ketik dina ngaran berkasna. Pék pastikeun yén anjeun téh bener-bener hayang ngunjal éta berkas.", "windows-nonascii-filename": "Ieu wiki teu ngarojong ngaran berkas anu maké aksara husus.", "fileexists": "Berkas nu ngaranna kieu geus aya, mangga parios [[:$1]] mun {{GENDER:|anjeun}} teu yakin rék ngaganti.\n[[$1|thumb]]", "fileexists-extension": "Geus aya berkas anu ngaranna sarupa: [[$2|thumb]]\n* Ngaran berkas nu dimuat: [[:$1]]\n* Ngaran berkas nu geus aya: [[:$2]]\nPilih ngaran séjén.", @@ -1331,26 +1466,31 @@ "file-deleted-duplicate": "Berkas anu sarua jeung [[:$1]] geus kungsi dihapus.\nPariksa heula jujutan hapusanana saméméh neruskeun ngamuat deui éta berkas.", "uploadwarning": "Pépéling ngamuat", "uploadwarning-text": "Ropéa pedaran berkas di handap terus cobaan deui.", - "savefile": "Simpen koropak", + "savefile": "Simpen berkas", "uploaddisabled": "Punten, ngamuat ayeuna ditumpurkeun.", "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'').", + "uploaddisabledtext": "Fungsi ngunjal berkas ditumpurkeun.", + "uploadscripted": "Ieu berkas ngandung kodeu HTML atawa skrip nu bisa dibaca ngaco ku panyungsi ramat.", + "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", - "sourcefilename": "Ngaran koropak sumber:", + "upload-source": "Berkas sumber", + "sourcefilename": "Ngaran berkas sumber:", "sourceurl": "URL sumber:", - "destfilename": "Ngaran koropak tujuan:", - "upload-maxfilesize": "Ukuran koropak panggedéna: $1", - "upload-description": "Pedaran koropak", + "destfilename": "Ngaran berkas tujuan:", + "upload-maxfilesize": "Ukuran maksimum berkas: $1", + "upload-description": "Pedaran berkas", "upload-options": "Pilihan muat", "watchthisupload": "Awaskeun ieu kaca", - "filewasdeleted": "Ngaran koropak ieu geus di hapus. Anjeun kudu ningali ka $1 sa acan muatkeun koropak deui", + "filewasdeleted": "Berkas nu ngaranna kieu pernah diunjal sarta tuluy dipupus. Pék riksa heula $1 saméméh ngunjal éta berkas téh.", "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-disabled": "Unjal berkas maké ieu dialog dipareuman di ieu wiki.", "upload-dialog-title": "Unjal berkas", "upload-dialog-button-cancel": "Bolay", "upload-dialog-button-back": "Balik deui", @@ -1359,15 +1499,18 @@ "upload-dialog-button-upload": "Unjal", "upload-form-label-infoform-title": "Wincikan", "upload-form-label-infoform-name": "Ngaran", + "upload-form-label-infoform-name-tooltip": "Judul déskriptif anu unik pikeun berkas, anu bakal miboga fungsi minangka ngaran berkas. Anjeun bisa maké basa basajan kalawan spasi. Ulah ngawuwuhkeun éksténsi berkas", "upload-form-label-infoform-description": "Pedaran", "upload-form-label-usage-title": "Pamakéan", "upload-form-label-usage-filename": "Ngaran berkas", "upload-form-label-own-work": "Ieu mah karya kuring sorangan", "upload-form-label-infoform-categories": "Kategori", "upload-form-label-infoform-date": "Ping", + "upload-form-label-not-own-work-local-generic-local": "Sugan anjeun hayang nyoba [[Special:Upload|kaca unjalan baku]].", "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.", @@ -1382,13 +1525,21 @@ "backend-fail-read": "Teu bisa maca berkas $1.", "backend-fail-create": "Teu bisa nulis berkas \"$1\".", "backend-fail-maxsize": "Teu bisa nulis berkas \"$1\" kusabab leuwih ti {{PLURAL:$2|hiji bit|$2 bit}}.", + "backend-fail-synced": "Berkas \"$1\" mah aya dina kaayaan teu konsistén di panyimpenan internal", + "backend-fail-connect": "Teu bisa nyambungkeun kana panyimpenan backend \"$1\".", + "backend-fail-internal": "Aya kasalahan nu teu dipikawanoh di backend panyimpenan \"$1\".", "backend-fail-contenttype": "Teu bisa nangtukeun tipeu eusi berkas anu badé disimpen di \"$1\".", + "filejournal-fail-dbconnect": "Teu bisa nyambung ka basisdata jurnal pikeun panyimpenan ''backend'' \"$1\".", + "filejournal-fail-dbquery": "Teu bisa nganyarkeun basisdata jurnal pikeun panyimpenan ''backend'' \"$1\".", "lockmanager-notlocked": "Teu bisa muka konci \"$1\" kusabab teu dikonci.", "lockmanager-fail-closelock": "Teu bisa nutup berkas konci pikeun \"$1\".", "lockmanager-fail-deletelock": "Teu bisa ngahapus berkas konci pikeun \"$1\".", + "lockmanager-fail-acquirelock": "Teu bisa meunang pangoncian pikeun \"$1\"", "lockmanager-fail-openlock": "Teu bisa muka berkas konci pikeun \"$1\".", "lockmanager-fail-releaselock": "Teu bisa ngaleupaskeun konci pikeun \"$1\".", + "lockmanager-fail-db-bucket": "Teu bisa ngagero konci basis data nu cukup dina karanjang $1.", "lockmanager-fail-db-release": "Teu bisa ngaleupaskeun konci dina databés $1.", + "lockmanager-fail-svr-acquire": "Gagal nyokot konci di servér $1.", "lockmanager-fail-svr-release": "Teu bisa ngaleupaskeun konci dina server $1.", "zip-wrong-format": "Berkas anu dipilih lain berkas ZIP.", "uploadstash": "Unjal engkeunan", @@ -1397,12 +1548,18 @@ "uploadstash-errclear": "Mersihan berkas nu garagal.", "uploadstash-refresh": "Nyegerken deui daptar berkas", "uploadstash-thumbnail": "tempo miniatur", + "uploadstash-exception": "Teu bisa nyimpen unjalan di panyimpenan ($1): \"$2\".", + "invalid-chunk-offset": "Opsét potongan teu valid", "img-auth-accessdenied": "Aksés ditolak", + "img-auth-badtitle": "Teu bisa nyieun judul nu valid tina \"$1\".", + "img-auth-nologinnWL": "Anjeun teu asup log sarta \"$1\" teu dina daptar bodas.", "img-auth-nofile": "Berkas \"$1\" henteu aya.", + "img-auth-isdir": "Anjeun nyoba ngaksés diréktori \"$1\".\nNgan aksés berkas wungkul nu diwenangkeun.", "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-request-error": "Pundutan HTTP gagal alatan kasalahan nu teu dipikanyaho.", "http-read-error": "Kasalahan maca HTTP.", "http-timed-out": "Pamundutan HTTP béakeun waktu.", "http-curl-error": "Kasalahan keur nyokot URL: $1", @@ -1413,8 +1570,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:", @@ -1428,6 +1585,7 @@ "listfiles_size": "Badagna", "listfiles_description": "Pedaran", "listfiles_count": "Vérsi", + "listfiles-show-all": "Kaasup vérsi heubeul gambar", "listfiles-latestversion": "Vérsi ayeuna", "listfiles-latestversion-yes": "Enya", "listfiles-latestversion-no": "Henteu", @@ -1444,16 +1602,19 @@ "filehist-nothumb": "Taya miniatur", "filehist-user": "Kontributor", "filehist-dimensions": "Ukuran", - "filehist-filesize": "Ukuran koropak", + "filehist-filesize": "Ukuran berkas", "filehist-comment": "Kamandang", "imagelinks": "Pamakéan berkas", "linkstoimage": "Kaca ieu {{PLURAL:$1|numbu|$1 numbu}} ka gambar ieu :", "nolinkstoimage": "Teu aya kaca anu nutumbu ka ieu berkas.", - "sharedupload": "Ieu koropak téh ti $1 nu bisa jadi dipaké ku proyék-proyék lianna.", + "linkstoimage-redirect": "$1 (pangalihan berkas) $2", + "sharedupload": "Ieu berkas téh ti $1 jeung meureun dipaké ku proyék-proyék séjén.", "sharedupload-desc-here": "Ieu berkas asalna ti $1 anu bisa jadi dipaké ku proyék séjén. \nPedaran ti [$2 kaca pedaranana] dipidangkeun di handap.", "filepage-nofile": "Taya berkas nu ngaranna kieu.", + "filepage-nofile-link": "Taya berkan nu ngaranna kieu, tapi anjeun bisa [$1 ngunjalkeunna].", "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", @@ -1463,6 +1624,7 @@ "filerevert-submit": "Balikkeun", "filerevert-success": "'''[[Media:$1|$1]]''' geus dipulangkeun ka [vérsi $4, $3, $2].", "filerevert-badversion": "Euweuh vérsi lokal tiheula ti koropak ieu kalawan cap waktu anu dimaksud.", + "filerevert-identical": "Vérsi berkas ayeuna geus idéntik jeung berkas nu dipilih.", "filedelete": "Ngahapus $1", "filedelete-legend": "Ngahapus gambar", "filedelete-intro": "Anjeun rék ngahapus koropak '''[[Media:$1|$1]]''' katut sagala jujutanana.", @@ -1481,15 +1643,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", @@ -1510,12 +1676,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:", @@ -1548,21 +1720,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", @@ -1602,33 +1779,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", @@ -1637,6 +1832,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", @@ -1653,6 +1850,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", @@ -1665,7 +1864,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:", @@ -1674,12 +1873,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", @@ -1692,6 +1894,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", @@ -1699,6 +1904,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", @@ -1728,17 +1934,18 @@ "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", + "watchlist": "Daptar awaseun", + "mywatchlist": "Daptar awaseun", "watchlistfor2": "Pikeun $1 $2", - "nowatchlist": "Anjeun teu boga awaskeuneun.", + "nowatchlist": "Anjeun teu boga kaca na daptar awaseun.", "watchlistanontext": "Mangga asup log pikeun nempo atawa ngarobah béréndélan awaskeuneun anjeun.", "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.", - "removewatch": "Piceun tina béréndélan awaskeuneun", + "addedwatchtext-short": "Kaca \"$1\" geus ditambahkeun kana daptar aawaseun anjeun.", + "removewatch": "Piceun tina daptar awaseun", "removedwatchtext": "Kaca \"[[:$1]]\" geus dikaluarkeun tina [[Special:Watchlist|daptar awaskeuneun]] anjeun.", "removedwatchtext-short": "Kaca \"$1\" geus dipiceun tina béréndélan awaskeuneun.", "watch": "awaskeun", @@ -1748,10 +1955,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:", @@ -1762,22 +1969,28 @@ "wlshowhidepatr": "éditan karoris", "wlshowhidemine": "éditan kuring", "wlshowhidecategorization": "kategorisasi kaca", - "watchlist-options": "Pilihan awaskeuneun", + "watchlist-options": "Opsi daptar awaseun", "watching": "Ngawaskeun...", "unwatching": "Eureun ngawaskeun...", + "watcherrortext": "Aya kasalahan mangsa ngarobah préférénsi daptar awaskeuneun anjeun pikeun \" $1 \".", "enotif_reset": "Tandaan sadaya kaca nu geus dilongok", "enotif_impersonal_salutation": "Pamaké {{SITENAME}}", "enotif_subject_deleted": "Kaca {{SITENAME}} $1 geus {{GENDER:$2|dihapus}} ku $2", + "enotif_subject_created": "Kaca {{SITENAME}} $1 geus {{GENDER:$2|dijieun}} ku $2", + "enotif_subject_moved": "Kaca {{SITENAME}} $1 geus {{GENDER:$2|dialihkeun}} ku $2", + "enotif_subject_restored": "Kaca {{SITENAME}} $1 geus {{GENDER:$2|dibalikkeun}} ku $2", + "enotif_subject_changed": "Kaca {{SITENAME}} $1 geus {{GENDER:$2|dirobah}} ku $2", "enotif_lastvisited": "Pikeun sakumna parobahan ti saprak jebulan panungtung, tempo $1", "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", @@ -1798,10 +2011,13 @@ "delete-edit-reasonlist": "Alesan ngahapus éditan", "delete-toobig": "Jujutan édit ieu kaca panjang pisan, leuwih ti {{PLURAL:$1|révisi|révisi}}.\nHal ieu teu diwenangkeun pikeun nyegah karuksakan {{SITENAME}} nu teu dihaja.", "delete-warning-toobig": "Jujutan ieu kaca panjang pisan, leuwih ti{{PLURAL:$1|révisi|révisi}}. Dihapusna ieu kaca bisa ngaruksak jalanna pangkalan data {{SITENAME}}; sing ati-ati.", + "deleteprotected": "Anjeun teu bisa mupus ieu kaca lantaran geus ditangtayungan.", "rollback": "Balikkeun éditan", "rollbacklink": "balikkeun", "rollbacklinkcount": "balikkeun $1 {{PLURAL:$1|éditan}}", + "rollbacklinkcount-morethan": "balikkeun leuwih ti $1 {{PLURAL:$1|saéditan|éditan}}", "rollbackfailed": "Gagal malikkeun", + "rollback-missingparam": "Paraméter diperlukeun nalika dupundut teu sayaga.", "rollback-missingrevision": "Teu bisa muatkeun révisi data.", "cantrollback": "Éditan teu bisa dibalikkeun; kontribusi panungtung ngarupakeun hiji-hijina panulis kaca ieu.", "alreadyrolled": "Teu bisa mulangkeun édit ahir [[$1]] ku [[User:$2|$2]] ([[User talk:$2|Obrolan]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); geus aya nu ngédit atawa mulangkeun kacana.\n\nÉdit ahir ku [[User:$3|$3]] ([[User talk:$3|Obrolan]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).", @@ -1810,13 +2026,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", @@ -1825,15 +2045,21 @@ "protectedarticle": "ngonci $1", "modifiedarticleprotection": "hambalan koncian \"[[$1]]\" geus dirobah", "unprotectedarticle": "muka konci tina \"[[$1]]\"", + "movedarticleprotection": "ngalihkeun pangaturan protéksi ti \"[[$2]]\" ka \"[[$1]]\"", "protectedarticle-comment": "{{GENDER:$2|Nangtayungan}} \"[[$1]]\"", + "modifiedarticleprotection-comment": "{{GENDER:$2|Ngarobah tingkat panangtayungan}} pikeun \"[[$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-badnamespace-text": "Kaca dina ieu ngaranspasi teu bisa diprotéksi.", "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:", @@ -1841,7 +2067,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", @@ -1891,6 +2117,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.", @@ -1919,12 +2146,14 @@ "year": "Ti taun (jeung saméméhna):", "sp-contributions-newbies": "Témbongkeun kontribusi ti akun anyar wungkul", "sp-contributions-newbies-sub": "Pikeun akun anyar", + "sp-contributions-newbies-title": "Kontribusi pamaké pikeun akun anyar", "sp-contributions-blocklog": "log peungpeuk", - "sp-contributions-deleted": "kontribusi nu dihapus", + "sp-contributions-suppresslog": "kontribusi {{GENDER:$1|pamaké}} nu disamunikeun", + "sp-contributions-deleted": "kontribusi {{GENDER:$1|pamaké}} nu dipupus", "sp-contributions-uploads": "unggahan", "sp-contributions-logs": "log", "sp-contributions-talk": "obrolan", - "sp-contributions-userrights": "ngatur hak pamaké", + "sp-contributions-userrights": "Ménéjemén hak aksés {{GENDER:$1|pamaké}}", "sp-contributions-blocked-notice": "Ieu pamaké keur dipeungpeuk.\nPikeun rujukan, éntri log panungtung dipidangkeun di handap:", "sp-contributions-blocked-notice-anon": "Ieu alamat IP keur dipeungpeuk.\nPikeun rujukan, éntri log panungtung dipidangkeun di handap:", "sp-contributions-search": "Paluruh kontribusi", @@ -1969,31 +2198,40 @@ "ipboptions": "2 jam:2 hours,sapoé:1 day,3 poé:3 days,saminggu:1 week,2 minggu:2 weeks,sabulan:1 month,3 bulan:3 months,6 bulan:6 months,sataun:1 year,tanpa wates:infinite", "ipbhidename": "Sumputkeun ngaran pamaké tina éditan jeung daptar pamaké", "ipbwatchuser": "Awaskeun kaca pamaké jeung kaca obrolan pamaké ieu", + "ipb-disableusertalk": "Cegah ieu pamaké pikeun ngédit kaca obrolan manéhns sorangan nalika dipeunpeuk", + "ipb-change-block": "Peungpeuk deui pamaké kalawan sét konfigurasi ieu", "ipb-confirm": "Konfirmasi peungpeuk", "badipaddress": "Alamat IP teu sah", "blockipsuccesssub": "Meungpeuk geus hasil", - "blockipsuccesstext": "\"$1\" dipeungpeuk.\n
    Tempo [[Special:BlockList|daptar peungpeuk IP]] pikeun nempoan deui peungpeuk.", + "blockipsuccesstext": "[[Special:Contributions/$1|$1]] geus dipeungpeuk.
    \nTempo [[Special:BlockList|daptar peungpeukan]] pikeun niténan deui pameungpeukan.", + "ipb-blockingself": "Anjeun rék meungpeuk manéh! Yakin yeuh rék ngalakukeun kitu?", "ipb-edit-dropdown": "Édit alesan meungpeuk", "ipb-unblock-addr": "Buka peungpeuk $1", "ipb-unblock": "Nyabut peungpeuk pamaké atawa alamat IP", "ipb-blocklist": "Tempo peungpeuk nu diteurapkeun", - "ipb-blocklist-contribs": "Ilubiung $1", + "ipb-blocklist-contribs": "Kontribusi pikeun {{GENDER:$1|$1}}", "ipb-blocklist-duration-left": "Nyésa $1", "unblockip": "Buka peungpeuk pamaké", "unblockiptext": "Paké formulir di handap pikeun mulangkeun aksés nulis ka alamat IP atawa ngaran pamaké nu saméméhna dipeungpeuk.", - "ipusubmit": "Buka peungpeuk pikeun pamaké ieu", + "ipusubmit": "Pupus ieu peungpeukan", "unblocked": "peungpeuk ka [[User:$1|$1]] geus dicabut", "unblocked-range": "$1 geus teu dipeungpeuk", "unblocked-id": "peungpeuk $1 geus dicabut", + "unblocked-ip": "Pameungpeukan [[Special:Contributions/$1|$1]] geus dicabut.", "blocklist": "Kontributor nu dipeungpeuk", "autoblocklist": "Otomatis peungpeuk", "autoblocklist-submit": "Paluruh", "autoblocklist-legend": "Daptar otomatis peungpeuk", "autoblocklist-localblocks": "{{PLURAL:$1|Otomatis peungpeuk}} lokal", + "autoblocklist-total-autoblocks": "Total peungeukan otomatis: $1", + "autoblocklist-empty": "Daptar peungpeukan otomatis kosong.", + "autoblocklist-otherblocks": "{{PLURAL:$1|Sapeungpeukan otomatis|Peungpeukan otomatis}} lianna", "ipblocklist": "Pamaké nu dipeungpeuk", "ipblocklist-legend": "Téang pamaké nu dipeungpeuk", "blocklist-userblocks": "Sumputkeun peungpeukan akun", "blocklist-tempblocks": "Sumputkeun peungpeukan saheulaanan", + "blocklist-addressblocks": "Sumputkeun pameungpeukan IP tunggal", + "blocklist-rangeblocks": "Nyumputkeun hontalan peungpeuk", "blocklist-timestamp": "Cap titimangsa", "blocklist-target": "Udagan", "blocklist-expiry": "Kadaluwarsa", @@ -2017,31 +2255,37 @@ "change-blocklink": "Robah status blokir", "contribslink": "kontribusi", "emaillink": "kirim surélék", - "autoblocker": "Otomatis dipeungpeuk kusabab alamat IP anjeun dipaké ku \"[[User:$1|$1]]\".\nAlesan: \"$2\"", + "autoblocker": "Otomatis dipeungpeuk kusabab alamat IP anjeun dipaké ku \"[[User:$1|$1]]\".\nAlesan nu dibikeun pikeun pameungpeukan nyaéta: \"$2\"", "blocklogpage": "Log_peungpeuk", "blocklog-showlog": "Ieu pamaké saméméhna geus kungsi dipeungpeuk.\nPikeun rujukan, logna dipidangkeun di handap ieu:", "blocklogentry": "meungpeuk [[$1]] nepi ka $2 $3", - "blocklogtext": "Ieu mangrupa log peta meungpeuk jeung muka peungpeuk pamaké, teu kaasup alamat IP nu dipeungpeukna otomatis. Tempo [[Special:BlockList|daptar peungpeuk IP]] pikeun daptar cegahan jeung peungpeuk.", + "reblock-logentry": "ngarobah peungpeukan [[$1]] kalawan waktu kadaluwarsa $2 $3", + "blocklogtext": "Ieu mangrupa log peta meungpeuk jeung muka peungpeuk pamaké, teu kaasup alamat IP nu dipeungpeukna otomatis. Tempo [[Special:BlockList|daptar peungpeuk]] pikeun daptar cegahan jeung peungpeuk.", "unblocklogentry": "peungpeuk dibuka \"$1\"", "block-log-flags-anononly": "pamaké anonim wungkul", "block-log-flags-nocreate": "teu bisa nyieun akun", "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_expiry_temp": "Pameungpeukan sandiasma nu samunikeun kudu permanén.", "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é.", @@ -2057,6 +2301,7 @@ "unlockdbsuccesstext": "pangkalan data geus teu dikonci.", "databaselocked": "Basis data geus kakonci.", "databasenotlocked": "Gudang data teu kakonci.", + "lockedbyandtime": "(ku $1 dina $2 $3)", "move-page": "Pindahkeun $1", "move-page-legend": "Pindahkeun kaca", "movepagetext": "Migunakeun formulir di handap bakal ngaganti ngaran hiji kaca, mindahkeun sadaya jujutanana ka ngaran anyar.\nJudul nu heubeul bakal jadi kaca alihan ka judul nu anyar.\nAnjeun bisa menerkeun alihan nu nujul ka judul asli sacara otomatis.\nMun henteu, pariksa bisi aya [[Special:DoubleRedirects|alihan ganda]] atawa [[Special:BrokenRedirects|buntu]]\nAnjeun tanggel waler pikeun mastikeun yén tumbu-tumbu tetep nujul ka tempat nu sakuduna dituju.\n\nCatet yén kacana '''moal''' pindah mun judul nu anyar geus aya eusian, kajaba mangrupa alihan sarta teu mibanda jujutan.\nIeu ngandung harti yén anjeun bisa ngaganti ngaran hiji kaca balik deui ka nu cikénéh diganti ngaranna mun anjeun nyieun kasalahan, sarta anjeun teu bisa nimpah kaca nu geus aya.\n\n'''AWAS!'''\nIeu parobahan bisa gedé pangaruhna mun dilarapkeun kana kaca anu payu;\nanjeun kudu bener-bener ngarti kana hal ieu.", @@ -2064,12 +2309,19 @@ "movenologintext": "Anjeun kudu jadi pamaké nu kadaptar tur [[Special:UserLogin|asup log]] pikeun mindahkeun kaca.", "movenotallowed": "Anjeung teu boga kawenangan mindahkeun kaca.", "movenotallowedfile": "Anjeung teu boga kawenangan mindahkeun kaca.", + "cant-move-user-page": "Anjeun teu miboga hak aksés pikeun ngalihkeun kaca pamaké (misah ti subkaca).", + "cant-move-to-user-page": "Anjeun teu miboga hak aksés pikeun ngalihkeun kaca ka hiji kaca pamaké (iwal ka subkaca pamaké).", + "cant-move-category-page": "Anjeun teu miboga hak aksés pikeun ngalihkeun kaca kategori.", + "cant-move-to-category-page": "Anjeun teu miboga hak aksés pikeun ngalihkeun kaca ka kaca kategori.", + "cant-move-subpages": "Anjeun teu miboga hak aksés pikeun ngalihkeun subkaca.", + "namespace-nosubpages": "Ngaranspasi \"$1\" teu ngidinan subkaca.", "newtitle": "Judul anyar:", - "move-watch": "Awaskeuneun kaca ieu", + "move-watch": "Aawas kaca sumber jeung kaca targét", "movepagebtn": "Pindahkeun kaca", "pagemovedsub": "Mindahkeun geus hasil!", "movepage-moved": "'''\"$1\" geus dipindahkeun ka \"$2\"'''", "movepage-moved-redirect": "Alihan geus dijieunkeun.", + "movepage-moved-noredirect": "Panyieunan alihan geus diteken.", "articleexists": "Kaca nu ngaranna kitu geus aya, atawa ngaran nu dipilih ku anjeun teu sah. Mangga pilih ngaran séjén.", "cantmove-titleprotected": "Anjeun teu bisa mindahkeun kaca ka dieu, sabab éta judul dikonci", "movetalk": "Mun bisa, kaca \"obrolan\" ogé pindahkeun.", @@ -2086,14 +2338,17 @@ "movenosubpage": "Ieu kaca teu boga subkaca.", "movereason": "Alesan:", "revertmove": "balikkeun", - "delete_and_move_text": "==Merlukeun hapusan==\n\nArtikel nu dituju \"[[:$1]]\" geus aya. Badé dihapus baé sangkan bisa mindahkeun?", + "delete_and_move_text": "Kaca nu ditojo \"[[:$1]]\", geus eusian.\nAnjeun rék mupusna pikeun méré lolongkran keur pangalihan?", "delete_and_move_confirm": "Enya, hapus kaca éta", - "delete_and_move_reason": "Hapus sangkan bisa mindahkeun", + "delete_and_move_reason": "Dipupus pikeun ngantisipasi pangalihan kaca ti \"[[$1]]\"", "selfmove": "Judul sumber jeung tujuanana sarua, lain gé mindahkeun atuh!", + "immobile-source-namespace": "Teu bisa ngalihkeun kaca dina ngaranspasi \"$1\".", + "immobile-target-namespace": "Teu bisa ngalihkeun kaca ka ngaranspasi \"$1\".", "immobile-target-namespace-iw": "Tutumbu interwiki teu bisa dipaké salaku tujul pamindahan.", "immobile-source-page": "Ieu kaca teu bisa dipindahkeun.", "immobile-target-page": "Teu bisa mindahkeun ka judul nu ditujul.", "imagenocrossnamespace": "Teu bisa mindahkeun gambar ka rohangan ngaran nu lain gambar", + "nonfile-cannot-move-to-file": "Teu bisa ngalihkeun non-berkas ka ngaranspasi", "imagetypemismatch": "Éksténsi berkas anyar teu cocog jeung tipena", "imageinvalidfilename": "Ngaran berkas tujuan teu sah", "fix-double-redirects": "Hadéan sakabéh alihan ganda nu mungkin kajadian", @@ -2108,9 +2363,11 @@ "export-submit": "Ékspor", "export-addcattext": "Tambahkeun kaca tina kategori:", "export-addcat": "Tambahkeun", + "export-addnstext": "Tambahkeun kaca ti ngaranspasi:", "export-addns": "Tambahkeun", "export-download": "Simpen salaku berkas", "export-templates": "Kaasup citakan", + "export-pagelinks": "Sartakeun kaca patali nepi ka kajeroan:", "export-manual": "Tambahkeun kaca manual:", "allmessages": "Talatah sistim", "allmessagesname": "Ngaran", @@ -2119,6 +2376,7 @@ "allmessagestext": "Ieu mangrupa daptar talatah sistim nu aya na spasi ngaran MediaWiki:.", "allmessagesnotsupportedDB": "Kaca ieu teu dirojong sabab '''$wgUseDatabaseMessages''' pareum.", "allmessages-filter-legend": "Ayakan", + "allmessages-filter": "Saring ku kaayaan kustomisasi:", "allmessages-filter-unmodified": "Teu diropéa", "allmessages-filter-all": "Kabéh", "allmessages-filter-modified": "Diropéa", @@ -2129,49 +2387,58 @@ "thumbnail-more": "Gedéan", "filemissing": "Berkas leungit", "thumbnail_error": "Kasalahan sawaktu nyieun gambar leutik (thumbnail): $1", + "thumbnail_error_remote": "Talatah kasalahan ti $1:\n$2", "djvu_page_error": "Kaca DjVu teu kawadahan", "djvu_no_xml": "Hanteu bisa nyokot XML pikeun berkas DjVu", + "thumbnail-temp-create": "Teu bisa nyieun berkas leutik témporer", + "thumbnail-dest-create": "Teu bisa nyimpen berkas leutik ka tujuan", "thumbnail_invalid_params": "Kasalahan paraméter miniatur", + "thumbnail_toobigimagearea": "Berkas kalawan diménsi leuwih badag batan $1", "thumbnail_dest_directory": "Diréktori nu dituju teu bisa dijieun", - "thumbnail_image-type": "Jenis gambar teu dirojong", + "thumbnail_image-type": "Jinis gambar teu dirojong", "thumbnail_image-missing": "Berkas anu sigana leungit: $1", "import": "Impor kaca", - "importinterwiki": "Impor transwiki", + "importinterwiki": "Impor tina wiki lianna", "import-interwiki-text": "Pilih wiki jeung judul kaca nu rék diimpor.\nTanggal révisi katut ngaran nu ngédit bakal dipertahankeun.\nSadaya aktivitas impor transwiki baris kacatet dina [[Special:Log/import|log impor]].", "import-interwiki-sourcewiki": "Wiki sumber:", "import-interwiki-sourcepage": "Kaca sumber:", "import-interwiki-history": "Téplak sakabéh vérsi jujutan pikeun ieu kaca", "import-interwiki-templates": "Kaasup sakabéh citakan", "import-interwiki-submit": "Impor", + "import-mapping-default": "Impor ka lokasi standar", + "import-mapping-namespace": "Impor ka ngaranspasi:", + "import-mapping-subpage": "Impor minangka subkaca ti kaca di handap:", "import-upload-filename": "Ngaran berkas:", "import-comment": "Ringkesan:", - "importtext": "Mangga ékspor koropakna ti sumber nu dipaké ku wiki migunakeun fungsi Special:Export, simpen na piringan anjeun, teras muatkeun di dieu.", + "importtext": "Mangga ékspor koropakna ti sumber nu dipaké ku wiki ngagunakeun [[Special:Export|fungsi ékspor]], simpen na piringan anjeun, teras muatkeun di dieu.", "importstart": "Ngimpor kaca...", "import-revision-count": "$1 {{PLURAL:$1|vérsi heubeul}}", "importnopages": "henteu aya kaca keur diimpor.", + "imported-log-entries": "Geus diimpor $1 {{PLURAL:$1|saéntri log|éntri log}}.", "importfailed": "Ngimpor gagal: $1", "importunknownsource": "Tipeu sumber impor teu dipikawanoh", - "importcantopen": "Teu bisa muka koropak impor", + "importcantopen": "Teu bisa muka berkas impor", "importbadinterwiki": "Tutumbu antarwiki awon", "importsuccess": "Ngimpor geus hasil!", - "importnosources": "Teu aya sumber impor transwiki nu geus dijieun tur ngamuat jujutan sacara langsung geus dinon-aktifkeun.", - "importnofile": "Euweuh koropak impor nu dimuat.", - "importuploaderrorsize": "Koropak impor gagal dimuat. Ukuranana ngaleuwihan wates nu diwenangkeun.", - "importuploaderrorpartial": "Koropak impor gagal dimuat sagemblengna.", - "importuploaderrortemp": "Koropak impor gagal dimuat. Folder samentarana leungit.", + "importnosources": "Taya wiki ti nu diimpor nu geus dijieun sarta pamuatan jujuta sacara langsung geus di non-aktifkeun.", + "importnofile": "Euweuh berkas impor nu diunjal.", + "importuploaderrorsize": "Unjalan berkas impor gagal. Ukuranna ngaleuwihan wates nu diwenangkeun.", + "importuploaderrorpartial": "Unjalan berkas impor gagal.\nNgan sawaréh berkas nu ngahasil diunjal.", + "importuploaderrortemp": "Unjalan berkas impor gagal. Folder témporérna leungit.", "import-parse-failure": "Prosés impor XML teu hasil", "import-noarticle": "Euweuh kaca imporeun!", - "import-nonewrevisions": "Sakabéh révisi geus kungsi diimpor saméméhna.", + "import-nonewrevisions": "Euweuh révisi nu diimpor (sakum révisi geus aya atawa diliwatan lantaran kasalahan).", "xml-error-string": "$1 dina baris $2, kolom $3 (bit $4): $5", "import-upload": "Ngamuat data XML", "import-invalid-interwiki": "Teu bisa ngimpor ti wiki nu dipilih.", "import-rootpage-invalid": "Kaca turunan nu dibikeun judulna salah.", "importlogpage": "Log impor", "importlogpagetext": "Impor administratif kaca-kaca ti wiki séjén katut jujutanana.", - "import-logentry-upload-detail": "$1 {{PLURAL:$1|vérsi heubeul}}", - "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|vérsi heubel}} ti $2", + "import-logentry-upload-detail": "$1 {{PLURAL:$1|sarévisi|révisi}} diimpor", + "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|sarévisi|révisi}} diimpor ti $2", "javascripttest": "Nguji JavaScript", "javascripttest-pagetext-unknownaction": "Tarékah \"$1\" teu dipikanyaho.", + "javascripttest-qunit-intro": "Tempo [$1 dokuméntasi pangujian] di mediawiki.org.", "tooltip-pt-userpage": "Kaca {{GENDER:|pamaké anjeun}}", "tooltip-pt-anonuserpage": "Kaca pamaké pikeun IP nu ku anjeun keur diédit", "tooltip-pt-mytalk": "Kaca obrolan {{GENDER:|anjeun}}", @@ -2179,6 +2446,7 @@ "tooltip-pt-preferences": "Préferénsi {{GENDER:|anjeun}}", "tooltip-pt-watchlist": "Daptar kaca nu diawaskeun ku anjeun parobahanana.", "tooltip-pt-mycontris": "Béréndélan kontribusi {{GENDER:|anjeun}}", + "tooltip-pt-anoncontribs": "Daptar éditan nu dijieun ti ieu alamat IP", "tooltip-pt-login": "Leuwih hadé asup log, sok sanajan teu wajib", "tooltip-pt-login-private": "Anjeun perlu asup log pikeun migunakeun ieu wiki", "tooltip-pt-logout": "Kaluar log", @@ -2212,6 +2480,7 @@ "tooltip-feed-atom": "Asupan atom pikeun kaca ieu", "tooltip-t-contributions": "Béréndélan kontribusi ti {{GENDER:$1|ieu pamaké}}", "tooltip-t-emailuser": "Kirim surélék ka {{GENDER:$1|ieu kontributor}}", + "tooltip-t-info": "Informasi leuwih jero ngeunaan ieu kaca", "tooltip-t-upload": "Unjal berkas", "tooltip-t-specialpages": "Daptar sadaya kaca husus", "tooltip-t-print": "Vérsi citakeun ieu kaca", @@ -2235,6 +2504,7 @@ "tooltip-watch": "Tambahkeun kaca ieu kana awaskeuneun kuring", "tooltip-watchlistedit-normal-submit": "Pupus judul", "tooltip-watchlistedit-raw-submit": "Anyarkeun aawaseun", + "tooltip-recreate": "Jieun deui kaca sanajan sabenerna mah geus dipupus", "tooltip-upload": "Prung unjalkeun", "tooltip-rollback": "Mulangkeun éditan ka panulis panungtung dina sakali klik", "tooltip-undo": "\"Bolay\" malikkeun ieu éditan sarta muka kotak édit dina modeu pramidang.\nCara kieu bisa nambahkeun alesan dina ringkesanana.", @@ -2248,18 +2518,26 @@ "lastmodifiedatby": "Kaca ieu panungtungan diédit $2, $1 ku $3.", "othercontribs": "Dumasar karya $1.", "others": "Séjénna", - "siteusers": "{{PLURAL:$2|Pamaké|Pamaké-pamaké}} {{SITENAME}} $1", + "siteusers": "{{PLURAL:$2|pamaké|para pamaké}} {{SITENAME}} $1", + "anonusers": "{{PLURAL:$2|pamaké|para pamaké}} anonim {{SITENAME}} $1", "creditspage": "Pangajén kaca", "nocredits": "Teu aya émbaran pangajén pikeun kaca ieu.", "spamprotectiontitle": "Saringan spam", "spamprotectiontext": "Kaca anu rék disimpen dipeungpeuk ku saringan spam.\nSigana mah ieu téh alatan tutumbu ka loka luar anu dibléklis.", + "spamprotectionmatch": "Teks di handap ieu mancing saringan spam kami: $1", + "spambot_username": "Pamersihan spam MediaWiki", + "spam_reverting": "Ngabolaykeun ka vérsi panungtung nu teu mibanda tutumbu ka $1", + "spam_blanking": "Sakum révisi nu mibanda tutumbu ka $1, kosong", + "spam_deleting": "Sakum révisi nu mibanda tutumbu ka $1, pamupusan", "simpleantispam-label": "Pamariksaan anti-spam.\nAnu ieu ulah dieusian!", "pageinfo-title": "Émbaran pikeun \"$1\"", + "pageinfo-not-current": "Hampura, teu mumkin méré ieu informasi ka révisi heubeul.", "pageinfo-header-basic": "Émbaran dasar", "pageinfo-header-edits": "Jujutan édit", "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", @@ -2270,18 +2548,30 @@ "pageinfo-robot-index": "Digaékeun", "pageinfo-robot-noindex": "Dicaram", "pageinfo-watchers": "Jumlah paroris kaca", + "pageinfo-visiting-watchers": "Jumlah pamariksa kaca nu nyorang éditan kiwari", "pageinfo-few-watchers": "Kurang ti $1 {{PLURAL:$1|pangawas}}", + "pageinfo-few-visiting-watchers": "Rék aya atawa henteuna pamariksa kaca nu nyorang éditan kiwari", "pageinfo-redirects-name": "Jumlah pindahan ka ieu kaca", + "pageinfo-subpages-name": "Nomor subkaca ieu kaca", "pageinfo-firstuser": "Panyieun kaca", + "pageinfo-firsttime": "Tanggal panyieunan kaca", "pageinfo-lastuser": "Pangédit panungtung", + "pageinfo-lasttime": "Tanggal éditan panungtung", "pageinfo-edits": "Jumlah éditan", "pageinfo-authors": "Jumlah kontributor nu béda", + "pageinfo-recent-edits": "Jumlah éditan kiwari (dina $1 panungtung)", + "pageinfo-recent-authors": "Jumlah panulis béda kiwari", + "pageinfo-magic-words": "{{PLURAL:$1|Sakecap|Kecap}} ajaib ($1)", + "pageinfo-hidden-categories": "{{PLURAL:$1|Sakategori|Kategori}} nyamuni ($1)", + "pageinfo-templates": "{{PLURAL:$1|Sacitakan|citakan}} nu ditransklusi ($1)", "pageinfo-toolboxlink": "Émbaran kaca", "pageinfo-redirectsto": "Alihkeun ka", "pageinfo-redirectsto-info": "info", - "pageinfo-contentpage": "Diitung salaku kaca eusi", + "pageinfo-contentpage": "Diitung minangka kaca eusi", "pageinfo-contentpage-yes": "Enya", + "pageinfo-protect-cascading": "Panangtayungan ngaruntuy ti dieu", "pageinfo-protect-cascading-yes": "Enya", + "pageinfo-protect-cascading-from": "Panangtayungan mapay ti", "pageinfo-category-info": "Info kategori", "pageinfo-category-total": "Jumlah anggahota", "pageinfo-category-pages": "Jumlah kaca", @@ -2290,6 +2580,7 @@ "pageinfo-user-id": "ID pamaké", "markaspatrolleddiff": "Tandaan salaku geus diriksa", "markaspatrolledtext": "Tandaan artikel ieu salaku geus diriksa", + "markaspatrolledtext-file": "Tandaan vérsi berkas minangka kaawas", "markedaspatrolled": "Tandaan salaku geus diriksa", "markedaspatrolledtext": "Révisi [[:$1]] nu dipilih geus ditandaan salaku geus diroris.", "rcpatroldisabled": "Ronda Nu Anyar Robah ditumpurkeun", @@ -2297,11 +2588,14 @@ "markedaspatrollederror": "Teu bisa nandaan geus dipatroli", "markedaspatrollederrortext": "Anjeun kudu milih révisi anu rék ditandaan geus diroris.", "markedaspatrollederror-noautopatrol": "Anjeung teu diwenangkeun nandaan pangriksa ka éditan sorangan.", + "markedaspatrollednotify": "Ieu parobahan pikeun $1 geus ditandaan kaawas.", + "markedaspatrollederrornotify": "Nandaan minangka kaawas gagal.", "patrol-log-page": "Log patroli", "patrol-log-header": "Ieu minangka log pikeun révisi nu geus diroris.", "log-show-hide-patrol": "$1 log rorisan", "log-show-hide-tag": "log tag $1", "confirm-markpatrolled-button": "Heug", + "confirm-markpatrolled-top": "Tandaan révisi $3 ti $2 minangka kaawas?", "deletedrevision": "Révisi heubeul nu dihapus $1", "filedeleteerror-short": "Éror nalika ngahapus koropak $1", "filedeleteerror-long": "Aya kasalahan sawaktu ngahapus koropak:\n\n$1", @@ -2310,7 +2604,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", @@ -2322,6 +2616,7 @@ "svg-long-error": "Berkas SVG teu sah: $1", "show-big-image": "Berkas asli", "show-big-image-preview": "Ukuran ieu pramidang: $1.", + "show-big-image-preview-differ": "Ukuran ieu pramidang $3 ti ieu berkas $2: $1", "show-big-image-other": "{{PLURAL:$2|Resolusi}} lianna: $1.", "show-big-image-size": "$1 × $2 pixel", "file-info-gif-looped": "nguriling", @@ -2335,6 +2630,10 @@ "newimages-legend": "Saringan", "newimages-label": "Ngaran berkas (atawa sawaréh tina ngaranna):", "newimages-user": "Alamat IP atawa sandiasma", + "newimages-newbies": "Témbongkeun kontribusi ti akun anyar wungkul", + "newimages-showbots": "Témbongkeun unjalan ku bot", + "newimages-hidepatrolled": "Sumputkeun unjalan nu geus diriksa", + "newimages-mediatype": "Tipeu média:", "noimages": "Taya nanaon.", "gallery-slideshow-toggle": "''Toggle'' miniatur", "ilsubmit": "Paluruh", @@ -2362,7 +2661,7 @@ "yesterday-at": "Kamari jam $1", "bad_image_list": "Formatna kieu:\n\nNgan daptar butiran (baris anu dimimitian ku tanda *) anu diitung. \nTutumbu kahiji dina hiji baris dianggap numbu ka berkas anu goréng. \nTutumbu sanggeusna dina baris anu sarua dianggap bener, nyaéta artikel anu midangkeun éta berkas.", "metadata": "Métadata", - "metadata-help": "Ieu koropak ngandung émbaran tambahan, nu sigana asalna tina kaméra digital atawa paminday nu dipaké pikeun ngadigitalkeunana. Mun ieu koropak geus dirobah tina bentuk aslina, datana bisa jadi teu bener.", + "metadata-help": "Ieu berkas ngandung informasi panambah, mumkin ditambahkeun tina kaméra digital atawa pamindéy nu dipaké pikeun nyieun atawa ngadigitalkeun ieu berkas.\nMun ieu berkas geus diropéa tina wangun aslina, sawatara wincikan meureun baé teu sagemblengna ngarépléksikeun informasi ti ieu berkas nu diropéa téh.", "metadata-expand": "Témbongkeun wincikan panambah", "metadata-collapse": "Sumputkeun wincikan panambah", "metadata-fields": "Widang métadata gambar nu dibéréndélkeun di handap bakal dipidangkeun dina kaca gambar mun tabél métadata disumputkeun.\nNu séjénna bakal disumputkeun sakumaha asalna.\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", @@ -2374,12 +2673,18 @@ "exif-orientation": "Oriéntasi", "exif-samplesperpixel": "Jumlah komponén", "exif-planarconfiguration": "Susunan data", + "exif-ycbcrsubsampling": "Rasio subsampling Y ka C", "exif-ycbcrpositioning": "Perenah Y jeung C", "exif-xresolution": "Résolusi horizontal", "exif-yresolution": "Résolusi tangtung", "exif-stripoffsets": "Perenah data gambar", + "exif-rowsperstrip": "Jumlah baris per strip", + "exif-stripbytecounts": "Bita per strip komprési", "exif-jpeginterchangeformat": "Ofset ka JPEG SOI", "exif-jpeginterchangeformatlength": "Bit data JPEG", + "exif-whitepoint": "Kromatisitas titik bodas", + "exif-primarychromaticities": "Kromatisitas warna primér", + "exif-ycbcrcoefficients": "Koéfisién matriks transformasi rohang warna", "exif-referenceblackwhite": "Pasangan ajen rujukan hideung jeung bodas", "exif-datetime": "Wanci jeung titimangsa parobahan koropak", "exif-imagedescription": "Judul gambar", @@ -2389,14 +2694,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", @@ -2428,22 +2738,46 @@ "exif-whitebalance": "Kasaimbangan bodas", "exif-digitalzoomratio": "Rasio zum digital", "exif-focallengthin35mmfilm": "Panjang fokus dina film 35 mm", + "exif-scenecapturetype": "Tipeu panéwakan", + "exif-gaincontrol": "Kontrol layar", "exif-contrast": "Kontras", "exif-saturation": "Saturasi", "exif-sharpness": "Seukeutna", + "exif-devicesettingdescription": "Déskripsi pangaturan alat", + "exif-subjectdistancerange": "Lolongkrang jarak subyék", "exif-imageuniqueid": "ID unik gambar", "exif-gpsversionid": "Vérsi tag GPS", "exif-gpslatituderef": "Gurat Kalér atawa Kidul", "exif-gpslatitude": "Gurat Lintang", "exif-gpslongituderef": "Gurat Wétan atawa Kulon", "exif-gpslongitude": "Gurat Bujur", + "exif-gpsaltituderef": "Référénsi jangkung", + "exif-gpsaltitude": "Jangkung", "exif-gpstimestamp": "Wanci GPS (jam atomik)", + "exif-gpssatellites": "Satelit pikeun pangukuran", "exif-gpsstatus": "Status panampa", + "exif-gpsmeasuremode": "Modeu pangukuran", + "exif-gpsdop": "Katepatan pangukuran", "exif-gpsspeedref": "Unit kecepatan", + "exif-gpsspeed": "Gancangna panarima GPS", + "exif-gpstrackref": "Référénsi arah obahan", + "exif-gpstrack": "Arah obahan", + "exif-gpsimgdirectionref": "Référénsi arah gambar", + "exif-gpsimgdirection": "Arah gambar", + "exif-gpsmapdatum": "Data survéi géodési", + "exif-gpsdestlatituderef": "Référénsi lintang ti tujuan", + "exif-gpsdestlatitude": "Lintang tujuan", + "exif-gpsdestlongituderef": "Référénsi bujur ti tujuan", + "exif-gpsdestlongitude": "Bujur tujuan", + "exif-gpsdestbearingref": "Référénsi bearing tujuan", + "exif-gpsdestbearing": "Bearing tujuan", + "exif-gpsdestdistanceref": "Référénsi jarak ti tujuan", + "exif-gpsdestdistance": "Jarak ti tujuan", "exif-gpsprocessingmethod": "Ngaran métodeu olah GPS", "exif-gpsareainformation": "Ngaran wewengkon GPS", "exif-gpsdatestamp": "Titimangsa GPS", "exif-gpsdifferential": "Koréksi diferensial GPS", + "exif-jpegfilecomment": "Koméntar berkas JPEG", "exif-keywords": "Kecap konci", "exif-worldregioncreated": "Wewengkon dunya tempat moto", "exif-countrycreated": "Nagara tempat moto", @@ -2459,11 +2793,16 @@ "exif-sublocationdest": "Sublokasi kota nu ditémbongkeun", "exif-objectname": "Judul pondok", "exif-specialinstructions": "Paréntah husus", + "exif-headline": "Lulugu", + "exif-credit": "Krédit/Panyadia", "exif-source": "Sumber", "exif-editstatus": "Status éditorial gambar", "exif-urgency": "Urgensi", + "exif-fixtureidentifier": "Ngaran fikstur", "exif-locationdest": "Lokasi nu digambarkeun", "exif-locationdestcode": "Kodeu lokasi nu digambarkeun", + "exif-objectcycle": "Sésa waktu éta média dimaksudkeun pikeun", + "exif-contact": "Informasi kontak", "exif-writer": "Nu nulis", "exif-languagecode": "Basa", "exif-iimversion": "Vérsi IIM", @@ -2494,7 +2833,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", @@ -2503,8 +2842,12 @@ "exif-originalimageheight": "Jangkung gambar saméméh diteukteuk", "exif-originalimagewidth": "Lébar gambar saméméh diteukteuk", "exif-compression-1": "Teu kakompres", + "exif-compression-2": "CCITT Group 3 1-Dimensional Modified Huffman RLE", + "exif-compression-3": "CCITT Group 3 fax encoding", + "exif-compression-4": "CCITT Group 4 fax encoding", "exif-copyrighted-true": "Mihak cipta", - "exif-copyrighted-false": "Domain publik", + "exif-copyrighted-false": "Status hak cipta can diatur", + "exif-photometricinterpretation-1": "Hideung jeung bodas (Hideung mah 0)", "exif-unknowndate": "Titimangsa teu kanyahoan", "exif-orientation-1": "Normal", "exif-orientation-2": "Dibalikkeun horizontal", @@ -2513,16 +2856,24 @@ "exif-orientation-5": "Diputer 90° CCW jeung dibalikkeun vértikal", "exif-orientation-6": "Diputer 90° CCW", "exif-orientation-7": "Diputer 90° CW jeung dibalikkeun vértikal", - "exif-orientation-8": "Diputer 90° CCW", + "exif-orientation-8": "Diputer 90° CW", + "exif-planarconfiguration-1": "format chunky", "exif-planarconfiguration-2": "format datar", + "exif-colorspace-65535": "Teu dikalibrasi", "exif-componentsconfiguration-0": "euweuh", + "exif-exposureprogram-0": "Teu kadéfinisi", "exif-exposureprogram-1": "Manual", "exif-exposureprogram-2": "Program normal", + "exif-exposureprogram-3": "Prioritas bukaan", + "exif-exposureprogram-4": "Prioritas panutup", + "exif-exposureprogram-5": "Program kréatif (condong ka jejeroan ruang)", + "exif-exposureprogram-6": "Program aksi (condong ka gagancangna rana)", "exif-exposureprogram-7": "Modeu potrét (pikeun poto deukeut nu tukangna di luar fokus)", "exif-exposureprogram-8": "Modeu Lanskap (pikeun poto lanskap nu tukangna asup fokus)", "exif-subjectdistance-value": "$1 méter", "exif-meteringmode-0": "Duka", "exif-meteringmode-1": "Rata-rata", + "exif-meteringmode-2": "Rarata tengah bobot", "exif-meteringmode-3": "Spot", "exif-meteringmode-4": "MultiSpot", "exif-meteringmode-5": "Pola", @@ -2545,15 +2896,31 @@ "exif-lightsource-19": "Cahya baku C", "exif-lightsource-24": "Tungsten studio ISO", "exif-lightsource-255": "Sumber cahya séjén", + "exif-flash-fired-0": "Lampu kilat teu hurung", "exif-flash-fired-1": "Buricak hurung", + "exif-flash-return-0": "taya fungsi padétéksian strobo balik", + "exif-flash-return-2": "lampu strobo balik teu kadétéksi", + "exif-flash-return-3": "lampu strobo balik kadétéksi", + "exif-flash-mode-1": "lampu kilat diperlukeun", + "exif-flash-mode-2": "lampu kilat dipareuman", "exif-flash-mode-3": "modeu otomatis", + "exif-flash-function-1": "Taya fungsi lampu kilat", + "exif-flash-redeye-1": "mode réduksi pantulan panon-beureum", "exif-focalplaneresolutionunit-2": "inci", "exif-sensingmethod-1": "Teu kadéfinisi", + "exif-sensingmethod-2": "Sénsor aréa warna sasiki", + "exif-sensingmethod-3": "Sénsor aréa warna dua siki", + "exif-sensingmethod-4": "Sénsor aréa warna tilu siki", + "exif-sensingmethod-5": "Sénsor aréa warna mapay", + "exif-sensingmethod-7": "Sénsor trilinéar", + "exif-sensingmethod-8": "Sénsor linéar warna mapay", + "exif-filesource-3": "Kaméra digital cicing", "exif-scenetype-1": "Gambar poto langsung", "exif-customrendered-0": "Prosés normal", "exif-customrendered-1": "Prosés biasa", "exif-exposuremode-0": "Pajanan otomatis", "exif-exposuremode-1": "Pajanan manual", + "exif-exposuremode-2": "Brakét otomatis", "exif-whitebalance-0": "Kasaimbangan bodas otomatis", "exif-whitebalance-1": "Kasaimbangan bodas manual", "exif-scenecapturetype-0": "Baku", @@ -2561,6 +2928,10 @@ "exif-scenecapturetype-2": "Nangtung (portrait)", "exif-scenecapturetype-3": "Tetempoan peuting", "exif-gaincontrol-0": "Kosong", + "exif-gaincontrol-1": "Naikkeun fokus landeuh", + "exif-gaincontrol-2": "Naikkeun fokus luhur", + "exif-gaincontrol-3": "Turunkeun fokus landeuh", + "exif-gaincontrol-4": "Turunkeun fokus luhur", "exif-contrast-0": "Normal", "exif-contrast-1": "Leuleus", "exif-contrast-2": "Heuras", @@ -2581,6 +2952,7 @@ "exif-gpsaltitude-above-sealevel": "$1 {{PLURAL:$1|méter|méter}} luhureun beungeut laut", "exif-gpsaltitude-below-sealevel": "$1 {{PLURAL:$1|méter|méter}} handapeun beungeut laut", "exif-gpsstatus-a": "Keur ngukur", + "exif-gpsstatus-v": "Interoperabilitas pangukuran", "exif-gpsmeasuremode-2": "Ukuran 2-diménsi", "exif-gpsmeasuremode-3": "Ukuran 3-diménsi", "exif-gpsspeed-k": "Kilométer per jam", @@ -2600,21 +2972,25 @@ "exif-gpsdirection-t": "Arah sajati", "exif-gpsdirection-m": "Arah magnétik", "exif-ycbcrpositioning-1": "Nengah", + "exif-ycbcrpositioning-2": "Atas (co-sited)", "exif-dc-contributor": "Kontributor", + "exif-dc-coverage": "Lingkup témporal atawa spasial média", "exif-dc-date": "Titimangsa", "exif-dc-publisher": "Pamedal", "exif-dc-relation": "Média anu tumali", "exif-dc-rights": "Hak", "exif-dc-source": "Média sumber", - "exif-dc-type": "Jenis média", + "exif-dc-type": "Jinis média", "exif-rating-rejected": "Ditolak", "exif-isospeedratings-overflow": "Leuwih ti 65535", "exif-iimcategory-ace": "Seni, budaya, jeung hiburan", "exif-iimcategory-clj": "Hukum jeung kajahatan", "exif-iimcategory-dis": "Bencana jeung kacilakaan", + "exif-iimcategory-fin": "Ékonomi jeung bisnis", "exif-iimcategory-edu": "Atikan", "exif-iimcategory-evn": "Lingkungan", "exif-iimcategory-hth": "Kawaluyaan", + "exif-iimcategory-hum": "Minat jalma", "exif-iimcategory-lab": "Katanagakerjaan", "exif-iimcategory-lif": "Gaya hirup jeung rékréasi", "exif-iimcategory-pol": "Politik", @@ -2622,10 +2998,12 @@ "exif-iimcategory-sci": "Sayen jeung téknologi", "exif-iimcategory-soi": "Isu sosial", "exif-iimcategory-spo": "Olahraga", + "exif-iimcategory-war": "Perang, konflik, jeung karesahan", "exif-iimcategory-wea": "Cuaca", "exif-urgency-normal": "Normal ($1)", "exif-urgency-low": "Landeuh ($1)", "exif-urgency-high": "Luhur ($1)", + "exif-urgency-other": "Prioritas robahluyuan ($1)", "namespacesall": "kabéh", "monthsall": "kabéh", "confirmemail": "Konfirmasi alamat surélék", @@ -2644,8 +3022,13 @@ "confirmemail_body": "Aya, sigana mah anjeun, ti alamat IP $1,\ngeus ngadaptarkeun akun \"$2\" maké alamat surélék ieu di {{SITENAME}}.\n\nPikeun mastikeun yén ieu akun mémang kagungan, sarta ngaktipkeun fitur surélék di {{SITENAME}}, buka tutumbu di handap ieu dina panyungsi (''browser'') anjeun:\n\n$3\n\nLamun anjeun teu ngadaptarkeun ieu akun, turutkeun ieu tutumbu pikeun ngabolaykeun konfirmasi alamat surélék:\n\n$5\n\nSandi konfirmasi ieu bakal kadaluwarsa dina $4.", "confirmemail_invalidated": "Konfirmasi alamat surélék dibolaykeun", "invalidateemail": "Bolaykeun konfirmasi surélék", + "notificationemail_subject_changed": "Alamat surélék kadaptar {{SITENAME}} geus diganti", + "notificationemail_subject_removed": "Alamat surélék kadaptar {{SITENAME}} geus dipupus", + "notificationemail_body_changed": "Hiji jalma, meureun ajeun, ti alamat IP $1,\ngeus ngaganti alamat surélék akun \"$2\" jadi \"$3\" di {{SITENAME}}", + "notificationemail_body_removed": "Hiji jalma, meureun anjeun, ti alamat IP $1,\ngeus mupus alamat surélék akun \"$2\" di {{SITENAME}}.\n\nMun ieu lain anjeun, geuwat nepungan administrator situs.", "scarytranscludedisabled": "[Transklusi interwiki ditumpurkeun]", "scarytranscludefailed": "[Gagal nyokot citakan $1]", + "scarytranscludefailed-httpstatus": "[Nyokot citakan $1 gagal: HTTP $2]", "scarytranscludetoolong": "[URLna panjang teuing]", "deletedwhileediting": "'''Awas''': ieu kaca geus dihapus nalika anjeun mitembeyan ngédit!", "confirmrecreate": "Pamaké [[User:$1|$1]] ([[User talk:$1|ngobrol]]) geus ngahapus artikel ieu nalika anjeun ngédit kalawan alesan:\n: ''$2''\nmangga pastikeun yén anjeun rék nyieun deui artikel ieu.", @@ -2653,16 +3036,20 @@ "confirm-purge-title": "Hapus sindangan ieu", "confirm_purge_button": "Heug", "confirm-purge-top": "Hapus sindangan kaca ieu?", + "confirm-purge-bottom": "Mersihkeun kaca bakal sakaligus mupus sindangan jeung midangkeun vérsi kaca kiwari.", "confirm-watch-button": "Heug", + "confirm-watch-top": "Tambahkeun ieu kaca kana awaskeuneun anjeun?", "confirm-unwatch-button": "Heug", "confirm-unwatch-top": "Pupus ieu kaca tina aawaseun anjeun?", "confirm-rollback-button": "Heug", + "confirm-rollback-top": "Balikkeun éditan ka ieu kaca?", "quotation-marks": "\"$1\"", "imgmultipageprev": "← kaca saacana", "imgmultipagenext": "kaca salajengna →", "imgmultigo": "Téang!", "imgmultigoto": "Jung ka kaca $1", "img-lang-default": "(basa default)", + "img-lang-info": "Jadikeun ieu gambar dina $1. $2", "img-lang-go": "Jung", "ascending_abbrev": "naék", "descending_abbrev": "turun", @@ -2688,31 +3075,42 @@ "watchlistedit-raw-title": "Édit daptar atah awaskeuneun", "watchlistedit-raw-legend": "Édit daptar atah awaskeuneun", "watchlistedit-raw-titles": "Judul:", - "watchlistedit-raw-submit": "Ropéa Awaskeuneun", + "watchlistedit-raw-submit": "Anyarkeun daptar awaseun", "watchlistedit-raw-done": "Daptar awaskeuneun geus diropéa.", "watchlistedit-raw-added": "{{PLURAL:$1|1 judul geus|$1 judul geus}} ditambahkeun:", "watchlistedit-raw-removed": "{{PLURAL:$1|1 judul geus|$1 judul geus}} dikaluarkeun:", "watchlistedit-clear-title": "Bersihan aawaseun", "watchlistedit-clear-legend": "Bersihan aawaseun", + "watchlistedit-clear-explain": "Sakum judul bakal dipupus tina daptar awaskeuneun anjeun", "watchlistedit-clear-titles": "Judul:", + "watchlistedit-clear-submit": "Bersihkeun daptar awaskeuneun (Ieu mah permanén!)", + "watchlistedit-clear-done": "Daptar awaskeuneun geus bersihkeun.", + "watchlistedit-clear-removed": "{{PLURAL:$1|1 judul geus|$1 judul geus}} dipupus:", + "watchlistedit-too-many": "Loba teuing kaca nu dipidangkeun di dieu.", + "watchlisttools-clear": "Bersihan daptar awaskeuneun", "watchlisttools-view": "Témbongkeun parobahan nu patali", "watchlisttools-edit": "Témbongkeun sarta édit béréndélan awaskeuneun", "watchlisttools-raw": "Robah béréndélan awaskeuneun", "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|obrolan]])", "timezone-local": "Lokal", "duplicate-defaultsort": "'''Awas''': Konci runtuyan asal \"$2\" ngalindih konci runtuyan asal \"$1\" anu saméméhna.", + "duplicate-displaytitle": "Mangkahadé: Midangkeun judul \"$2\" ngalandih judul pidangan \"$1\" saméméhna.", "version": "Vérsi", "version-extensions": "Éksténsi nu diinstal", "version-skins": "Kalakop nu diinstal", "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", @@ -2722,12 +3120,18 @@ "version-ext-colheader-description": "Pedaran", "version-ext-colheader-credits": "Pangarang", "version-license-title": "Lisénsi pikeun $1", + "version-license-not-found": "Taya detil informasi lisénsi pikeun ieu éksténsi.", "version-credits-title": "Krédit pikeun $1", + "version-credits-not-found": "Taya detil informasi krédit pikeun ieu éksténsi.", + "version-poweredby-credits": "Ieu wiki dirojong ku '''[https://www.mediawiki.org/ MédiaWiki]''', hak cipta © 2001-$1 $2.", "version-poweredby-others": "séjénna", "version-poweredby-translators": "darmamurcaya translatewiki.net", + "version-credits-summary": "Kami baris ngangken jalma-jalma di handap kalawan kontribusina ka [[Special:Version|MédiaWiki]].", "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", @@ -2735,6 +3139,7 @@ "version-libraries-license": "Lisénsi", "version-libraries-description": "Pedaran", "version-libraries-authors": "Pangarang", + "redirect": "Alihan dumasar ID berkas, pamaké, kaca, révisi, atawa log", "redirect-summary": "Ieu kaca husus mindahkeun ka berkas (kalawan ngaran berkasna), kaca (kalawan ID répisi atawa ID kaca), kaca pamaké (kalawan ID pamaké nomerik), atawa éntri log (kalawan ID logna). Pamakéan: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]], atawa [[{{#Special:Redirect}}/logid/186]].", "redirect-submit": "Jung", "redirect-lookup": "Ilikan:", @@ -2746,14 +3151,16 @@ "redirect-logid": "ID log", "redirect-not-exists": "Ajén teu kapanggih", "fileduplicatesearch": "Paluruh gambar duplikat", - "fileduplicatesearch-filename": "Ngaran koropak:", + "fileduplicatesearch-summary": "Pamaluruhan duplikat berkas dumasar niléy hash-na.", + "fileduplicatesearch-filename": "Ngaran berkas:", "fileduplicatesearch-submit": "Paluruh", "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-note-restricted": "* 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", @@ -2770,60 +3177,109 @@ "blankpage": "Kaca kosong", "intentionallyblankpage": "Ieu kaca ngahaja dikosongkeun.", "external_image_whitelist": " #Antepkeun ieu baris sakumaha ayana

    \n#Paké fragmén éxprési régulér (ukur bagian anu aya di antara //) di handap\n#Ieu fragmén bakal dicocogkeun jeung URL gambar-gambar éksternal\n#Fragmén anu cocog bakal dipidangkeun minangka gambar, lamun henteu nu katémbong ukur tutumbuna #Baris nu dimimitian ku # bakal dianggap koméntar\n#Ieu teu ngabédakeun gedé leutikna aksara\n#Teundeun sakabéh fragmén éxprési régulér luhureun ieu baris. Antepkeun ieu baris sakumaha ayana
    ", + "tags": "Tag parobahan valid", "tag-filter": "Saringan [[Special:Tags|tag]]:", "tag-filter-submit": "Saring", "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Tag}}]]: $2)", + "tag-mw-contentmodelchange": "parobahan modél kontén", "tags-title": "Tag", + "tags-intro": "Ieu kaca ngandung daptar tag nu bisa ditandaan ku pakakas lemes kana hiji éditan di handap hartina.", "tags-tag": "Ngaran tag", + "tags-display-header": "Pidangan di daptar parobahan", + "tags-description-header": "Déskripsi lengkep atawa harti", "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-manual": "Dipaké sacara manual ku pamaké jeung bot", + "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}}", + "tags-manage-no-permission": "Anjeun teu mibanda kawenangan pikeun ngatur parobahan tag.", "tags-create-heading": "Nyieun tag anyar", "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-explanation-initial": "Anjeun bakal mupus tag \"$1\" ti basisdata.", "tags-delete-reason": "Alesan:", + "tags-delete-submit": "Pupus ieu tag ogé", + "tags-delete-not-allowed": "Tag nu dibikeun ku éksténsi teu bisa dipupus iwal éta éksténsi ngidinan.", + "tags-delete-not-found": "Tag \"$1\" euweuh.", + "tags-delete-too-many-uses": "Tag \"$1\" dilarapkeun ka $2 atawa leuwih {{PLURAL:$2|sarévisi|révisi}} nu hartina éta téh teu bisa dipupus.", + "tags-delete-warnings-after-delete": "Tag \"$1\" dipupus, ngan bijil {{PLURAL:$2|saparingetan|paringetan}} di handap:", + "tags-delete-no-permission": "Anjeun teu mibanda kawenangan pikeun mupus parobahan tag.", "tags-activate-title": "Hurungkeun tag", + "tags-activate-question": "Anjeun bakal ngaktifkeun tag \"$1\".", "tags-activate-reason": "Alesan:", + "tags-activate-not-allowed": "Ieu tag \"$1\" teu mumkin bisa diaktifkeun.", + "tags-activate-not-found": "Tag \"$1\" euweuh.", "tags-activate-submit": "Hurungkeun", "tags-deactivate-title": "Pareuman tag", + "tags-deactivate-question": "Anjeun bakal nganonktifkeun tag \"$1\".", "tags-deactivate-reason": "Alesan:", + "tags-deactivate-not-allowed": "Ieu tag \"$1\" tidak mumkin bisa dinonaktifkeun.", "tags-deactivate-submit": "Pareuman", + "tags-apply-no-permission": "Anjeun teu boga idin pikeun ngalarapkeun parobahan tag babarengan jeung parobahan anjeun.", + "tags-apply-blocked": "Anjeun teu bisa ngalarapkeun tag jeung parobahan anjeun nalika {{GENDER:$1|anjeun}} keur dipeungpeuk.", "tags-edit-title": "Édit tag", + "tags-edit-manage-link": "Kokola 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}}", + "tags-edit-success": "Parobahan dilarapkeun.", + "tags-edit-failure": "Perobahan di handap bisa dilarapkeun:\n$1", + "tags-edit-nooldid-title": "Udagan révisi teu sah", "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.", "htmlform-int-toolow": "Niléy anu diasupkeun kurang ti $1 anu pangleutikna", "htmlform-int-toohigh": "Niléy anu diasupkeun leuwih ti $1 anu panggedéna", + "htmlform-required": "Ieu niléy diperlukeun", "htmlform-submit": "Kirim", "htmlform-reset": "Bolaykeun parobahan", "htmlform-selectorother-other": "Lianna", "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", + "htmlform-title-not-creatable": "\"$1\" lain mangrupa judul kaca nu bisa dijieun", "htmlform-title-not-exists": "$1 euweuh.", "htmlform-user-not-exists": "$1 taya.", "logentry-delete-delete": "$1 {{GENDER:$2|ngahapus}} kaca $3", @@ -2848,10 +3304,17 @@ "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)", + "rightslogentry-temporary-group": "$1 (samentara, nika $2)", + "feedback-adding": "Nambahkeun eupan balik kana kaca...", "feedback-back": "Balik deui", + "feedback-bugcheck": "Hadé! Ngan ngariksa yén éta téh lain hiji di antara [$1 bug nu geus dipiwanoh].", + "feedback-bugnew": "Kuring geus mariksa. Laporkeun bug anyar", "feedback-cancel": "Bolay", "feedback-close": "Anggeus", + "feedback-external-bug-report-button": "Kirim pancén téhnis", + "feedback-dialog-title": "Kirim saran jeung tanggepan", "feedback-error2": "Kasalahan: Édit gagal", "feedback-message": "Surat:", "feedback-subject": "Ngeunaan:", @@ -2860,6 +3323,12 @@ "feedback-useragent": "Agén pamaké:", "searchsuggest-search": "Paluruh {{SITENAME}}", "searchsuggest-containing": "ngandung...", + "api-error-badtoken": "Kasalahan internal: Token goréng.", + "api-error-emptypage": "Panyieunan kaca anyar nu kosong teu diidinan.", + "api-error-publishfailed": "Kasalahan internal: sérver gagal medal berkas saheulaanan.", + "api-error-stashfailed": "Kasalahan internal: sérver gagal nyimpen berkas saheulaanan.", + "api-error-unknown-warning": "Paringetan teu dipiwawuh: $1", + "api-error-unknownerror": "Kasalahan teu dipiwawuh: \"$1\"", "duration-seconds": "$1 {{PLURAL:$1|detik|detik}}", "duration-minutes": "$1 {{PLURAL:$1|menit|menit}}", "duration-hours": "$1 {{PLURAL:$1|jam|jam}}", @@ -2869,20 +3338,42 @@ "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}}", + "rotate-comment": "Gambar diputerkeun $1 {{PLURAL:$1|darajat}} saarah jarum jam", + "limitreport-title": "Parser profil data:", + "limitreport-cputime": "Waktu pamakéan CPU", + "limitreport-cputime-value": "$1 {{PLURAL:$1|sadetik|detik}}", + "limitreport-walltime": "Pamakéan waktu nyaan", + "limitreport-walltime-value": "$1 {{PLURAL:$1|sadetik|detik}}", + "limitreport-ppvisitednodes": "Préprosésor nyorang itungan node", + "limitreport-ppgeneratednodes": "Préprosésor ngasilkeun itungan node", + "limitreport-postexpandincludesize": "Pasca ngalegakeun kaasup ukuran", + "limitreport-postexpandincludesize-value": "$1/$2 {{PLURAL:$2|sabita|bita}}", + "limitreport-templateargumentsize": "Ukuran argumén citakan", + "limitreport-templateargumentsize-value": "$1/$2 {{PLURAL:$2|sabita|bita}}", "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", @@ -2891,25 +3382,154 @@ "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", + "authmanager-provider-temporarypassword": "Kecap sandi samentara", + "authprovider-confirmlink-success-line": "$1: Numbukeun ngahasil.", + "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", + "changecredentials-invalidsubpage": "$1 téh jinis krédensial nu teu sah.", + "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", + "rawhtml-notallowed": "Tag <html> teu bisa dipaké di luar kaca normal.", "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 0945600310..8dcde37a62 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", @@ -735,7 +736,6 @@ "explainconflict": "Någon har ändrat den här sidan efter att du började att redigera den.\nDen översta textrutan innehåller den nuvarande sparade versionen av texten.\nDin ändrade version visas i den nedre rutan.\nOm du vill spara dina ändringar så måste du infoga dem i den övre texten.\nEndast texten i den översta textrutan kommer att sparas när du trycker på \"$1\".", "yourtext": "Din text", "storedversion": "Den sparade versionen", - "nonunicodebrowser": "'''VARNING: Din webbläsare saknar stöd för unicode. För att du ska kunna redigera sidor utan problem, så visas icke-ASCII-tecken som hexadecimala koder i redigeringsrutan.'''", "editingold": "'''VARNING: Du redigerar en gammal version av denna sida. Om du sparar den kommer alla ändringar som har gjorts sedan denna version att skrivas över.'''", "yourdiff": "Skillnader", "copyrightwarning": "Observera att alla bidrag till {{SITENAME}} är att betrakta som utgivna under $2 (se $1 för detaljer). Om du inte vill att din text ska redigeras eller kopieras efter andras gottfinnande skall du inte skriva något här.
    \nDu lovar oss också att du skrev texten själv, eller kopierade från kulturellt allmängods som inte skyddas av upphovsrätt, eller liknande källor. '''LÄGG INTE UT UPPHOVSRÄTTSSKYDDAT MATERIAL HÄR UTAN TILLÅTELSE!'''", @@ -763,8 +763,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.", @@ -803,6 +803,7 @@ "parser-template-loop-warning": "Mall-loop upptäckt: [[$1]]", "template-loop-category": "Sidor med loopade mallar", "template-loop-category-desc": "Sidan innehåller en loopad mall, d.v.s. en mall som anropar sig själv rekursivt.", + "template-loop-warning": "Varning: Denna sida anropar [[:$1]] som orsakar en malloop (ett oändlig rekursivt anrop).", "parser-template-recursion-depth-warning": "Gräns för mallrekursionsdjup överskriden ($1)", "language-converter-depth-warning": "Gräns för språkkonverteringsdjup överskriden ($1)", "node-count-exceeded-category": "Sidor där antalet noder har överskridits", @@ -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", @@ -1073,6 +1074,7 @@ "timezoneregion-indian": "Indiska oceanen", "timezoneregion-pacific": "Stilla havet", "allowemail": "Tillåt e-post från andra användare", + "email-blacklist-label": "Förhindra dessa användarna från att skicka e-post till mig:", "prefs-searchoptions": "Sök", "prefs-namespaces": "Namnrymder", "default": "ursprungsinställning", @@ -1349,9 +1351,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-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 {{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.", @@ -1363,43 +1376,41 @@ "rcfilters-savedqueries-new-name-label": "Namn", "rcfilters-savedqueries-new-name-placeholder": "Beskriv syftet med filtret", "rcfilters-savedqueries-apply-label": "Skapa filter", + "rcfilters-savedqueries-apply-and-setdefault-label": "Skapa standardfilter", "rcfilters-savedqueries-cancel-label": "Avbryt", "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 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.", "rcfilters-filterlist-title": "Filter", - "rcfilters-filterlist-whatsthis": "Vad är detta?", - "rcfilters-filterlist-feedbacklink": "Ge återkoppling på nya (beta)filter", + "rcfilters-filterlist-whatsthis": "Hur fungerar desse?", + "rcfilters-filterlist-feedbacklink": "Berätta vad du tycker om dessa (nya) filtreringsverktyg", "rcfilters-highlightbutton-title": "Markera resultat", "rcfilters-highlightmenu-title": "Välj en färg", "rcfilters-highlightmenu-help": "Välj en färg att markera denna egenskap", "rcfilters-filterlist-noresults": "Inga filter hittades", "rcfilters-noresults-conflict": "Inga resultat hittades eftersom sökkriterierna är i konflikt", "rcfilters-state-message-subset": "Detta filter har ingen effekt, eftersom resultaten inkluderar följande, bredare {{PLURAL:$2|filter}} (försök att markera för att särskilja det): $1", - "rcfilters-state-message-fullcoverage": "Att markera alla filter i en grupp är detsamma som att markera inget alls, så detta filter har igen effekt. Grupper som inkluderas: $1", - "rcfilters-filtergroup-registration": "Användarregistrering", - "rcfilters-filter-registered-label": "Registrerade", - "rcfilters-filter-registered-description": "Inloggade redigerare.", - "rcfilters-filter-unregistered-label": "Oregistrerade", - "rcfilters-filter-unregistered-description": "Redigerare som inte är inloggade.", - "rcfilters-filter-unregistered-conflicts-user-experience-level": "Detta filter är i konflikt med följande {{PLURAL:$2|upplevelsefilter}}, som endast {{PLURAL:$2|hittar}} registrerade användare: $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.", "rcfilters-filter-editsbyother-label": "Ändringar av andra", "rcfilters-filter-editsbyother-description": "Alla ändringar förutom dina egna.", - "rcfilters-filtergroup-userExpLevel": "Erfarenhetsnivå (endast för registrerade användare)", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Upplevelsefilter hittar endast registrerade användare, så detta filter är i konflikt med filtret \"Oregistrerade\".", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Filtret \"Oregistrerade\" är i konflikt med en eller flera upplevelsefilter, som endast hittar registrerade användare. Filtren som är i konflikt är markerade i området med aktiva filter ovan.", + "rcfilters-filtergroup-userExpLevel": "Användarregistrering och -erfarenhet", + "rcfilters-filter-user-experience-level-registered-label": "Registrerade", + "rcfilters-filter-user-experience-level-registered-description": "Inloggade redigerare.", + "rcfilters-filter-user-experience-level-unregistered-label": "Oregistrerade", + "rcfilters-filter-user-experience-level-unregistered-description": "Redigerare som inte är inloggade.", "rcfilters-filter-user-experience-level-newcomer-label": "Nykomlingar", - "rcfilters-filter-user-experience-level-newcomer-description": "Färre än 10 redigeringar och 4 dagars aktivitet.", + "rcfilters-filter-user-experience-level-newcomer-description": "Registrerade redigerare med färre än 10 redigeringar och 4 dagars aktivitet.", "rcfilters-filter-user-experience-level-learner-label": "Nybörjare", - "rcfilters-filter-user-experience-level-learner-description": "Mer erfarenhet än \"Nybörjare\" men mindre än \"Erfarna användare\".", + "rcfilters-filter-user-experience-level-learner-description": "Registrerade redigerare vars erfarenhet hamnar mellan \"Nybörjare\" och \"Erfarna användare\".", "rcfilters-filter-user-experience-level-experienced-label": "Erfarna användare", - "rcfilters-filter-user-experience-level-experienced-description": "Fler än 30 dagars aktivitet och 500 redigeringar.", + "rcfilters-filter-user-experience-level-experienced-description": "Registrerade redigerare med fler än 500 redigeringar och 30 dagars aktivitet.", "rcfilters-filtergroup-automated": "Automatiserade bidrag", "rcfilters-filter-bots-label": "Bot", "rcfilters-filter-bots-description": "Redigeringar gjorda av automatiserade verktyg.", @@ -1422,6 +1433,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…", @@ -1434,18 +1450,28 @@ "rcfilters-hideminor-conflicts-typeofchange-global": "Filtret \"Mindre redigering\" är i konflikt med en eller flera ändringstypfilter, eftersom vissa ändringstyper inte kan betecknas som \"mindre\". Filtren som är i konflikt är markerade i området med aktiva filter ovan.", "rcfilters-hideminor-conflicts-typeofchange": "Vissa ändringstyper kan inte betecknas som \"mindre\", så detta filter är i konflikt med följande ändringstypfilter: $1", "rcfilters-typeofchange-conflicts-hideminor": "Detta ändringstypfilter är i konflikt med filtret \"Mindre ändringar\". Vissa ändringstyper kan inte betecknas som \"mindre\".", - "rcfilters-filtergroup-lastRevision": "Senaste version", + "rcfilters-filtergroup-lastRevision": "Senaste versioner", "rcfilters-filter-lastrevision-label": "Senaste version", - "rcfilters-filter-lastrevision-description": "Den senaste ändringen av en sida.", - "rcfilters-filter-previousrevision-label": "Tidigare versioner", - "rcfilters-filter-previousrevision-description": "Alla ändringar som inte är den senaste ändringen av en sida.", + "rcfilters-filter-lastrevision-description": "Endast senaste ändringen av en sida.", + "rcfilters-filter-previousrevision-label": "Inte den senaste versionen", + "rcfilters-filter-previousrevision-description": "Alla ändringar som inte är den \"senaste versionen\".", "rcfilters-filter-excluded": "Exkluderad", "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", + "rcfilters-watchlist-edit-watchlist-button": "Redigera din lista över bevakade sidor", + "rcfilters-watchlist-showupdated": "Sidor som har ändrats sedan ditt senaste besök visas i fetstil med färgmarkering.", + "rcfilters-preference-label": "Dölj den förbättrade versionen av Senaste ändrinar", + "rcfilters-preference-help": "Stänger det nydesignade gränssnittet från 2017 och alla verktyg som lades till från och med då.", "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", @@ -1502,6 +1528,7 @@ "uploadbtn": "Ladda upp fil", "reuploaddesc": "Avbryt uppladdningen och gå tillbaka till uppladdningsformuläret.", "upload-tryagain": "Skicka modifierad filbeskrivning", + "upload-tryagain-nostash": "Skicka in återuppladdad fil och ändrad beskrivning", "uploadnologin": "Inte inloggad", "uploadnologintext": "Du måste $1 för att ladda upp filer.", "upload_directory_missing": "Uppladdningskatalogen ($1) saknas och kunde inte skapas av webbservern.", @@ -1561,6 +1588,7 @@ "file-deleted-duplicate-notitle": "En identisk fil till den här filen har tidigare raderats och titeln har undanhållits.\nDu borde be någon som kan se undanhållen fildata att granska situationen innan du försöker ladda upp den på nytt.", "uploadwarning": "Uppladdningsvarning", "uploadwarning-text": "Var god och ändra filbeskrivningen nedanför och försök igen.", + "uploadwarning-text-nostash": "Återuppladda filen, ändra beskrivningen nedan och försök igen.", "savefile": "Spara fil", "uploaddisabled": "Uppladdningsfunktionen är avstängd", "copyuploaddisabled": "Uppladdning med URL avstängt.", @@ -1723,7 +1751,7 @@ "listfiles_size": "Storlek (byte)", "listfiles_description": "Beskrivning", "listfiles_count": "Versioner", - "listfiles-show-all": "Visa även äldre versioner av bilder", + "listfiles-show-all": "Inkludera äldre versioner av filer", "listfiles-latestversion": "Nuvarande version", "listfiles-latestversion-yes": "Ja", "listfiles-latestversion-no": "Nej", @@ -1827,6 +1855,8 @@ "pageswithprop-legend": "Sidor med en sidegenskap", "pageswithprop-text": "Denna sida listar sidor som använder en speciell sidegenskap.", "pageswithprop-prop": "Egenskapsnamn:", + "pageswithprop-reverse": "Sortera i omvänd ordningsföljd", + "pageswithprop-sortbyvalue": "Sortera efter egenskapsvärde", "pageswithprop-submit": "Gå", "pageswithprop-prophidden-long": "dold långt textegenskapsvärde ($1)", "pageswithprop-prophidden-binary": "dold binärt egenskapsvärde ($1)", @@ -2128,7 +2158,7 @@ "unwatchthispage": "Sluta bevaka", "notanarticle": "Inte en artikel", "notvisiblerev": "Sidversionen har raderats", - "watchlist-details": "Du har {{PLURAL:$1|en sida|$1 sidor}} på din bevakningslista (diskussionssidor är inte separat medräknade).", + "watchlist-details": "{{PLURAL:$1|$1 sida|$1 sidor}} är på din bevakningslista (inklusive diskussionssidor).", "wlheader-enotif": "E-postmeddelanden är aktiverade.", "wlheader-showupdated": "Sidor som har ändrats sedan ditt senaste besök visas i '''fetstil.'''", "wlnote": "Nedan finns {{PLURAL:$1|den senaste ändringen|de senaste $1 ändringarna}} under {{PLURAL:$2|den senaste timmen|de senaste $2 timmarna}} från den $3 kl. $4.", @@ -2163,6 +2193,7 @@ "enotif_lastdiff": "För att se denna ändring, se $1", "enotif_anon_editor": "anonym användare $1", "enotif_body": "Hej $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nAngiven sammanfattning av redigeringen: $PAGESUMMARY $PAGEMINOREDIT\n\nKontakta användaren:\ne-post: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nSåvida du inte besöker sidan, kommer du inte att få flera meddelanden om aktivitet på sidan när du är inloggad. Du kan också ta bort flaggan för meddelanden om ändringar på alla sidor i din bevakningslista.\n\nHälsningar från {{SITENAME}}s meddelandesystem\n\n--\nFör att ändra inställningarna för dina uppdateringar via e-post, besök\n{{canonicalurl:{{#special:Preferences}}}}\n\nFör att ändra inställningarna i din bevakningslista, besök\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nFör att radera sidan från din bevakningslista, besök\n$UNWATCHURL\n\nFeedback och ytterligare hjälp:\n$HELPPAGE", + "enotif_minoredit": "Detta är en mindre redigering", "created": "skapad", "changed": "ändrad", "deletepage": "Radera sida", @@ -2191,6 +2222,7 @@ "delete-warning-toobig": "Denna sida har en lång redigeringshistorik med mer än $1 {{PLURAL:$1|sidversion|sidversioner}}. Att radera sidan kan skapa problem med hanteringen av databasen på {{SITENAME}}; var försiktig.", "deleteprotected": "Du kan inte radera denna sida eftersom den är skyddad.", "deleting-backlinks-warning": "Varning:\n[[Special:WhatLinksHere/{{FULLPAGENAME}}|Andra sidor]] länkar till eller inkluderar sidan som du är på väg att radera.", + "deleting-subpages-warning": "Varning: Sidan du håller på att radera har [[Special:PrefixIndex/{{FULLPAGENAME}}/|{{PLURAL:$1|en undersida|$1 undersidor|51=över 50 undersidor}}]].", "rollback": "Rulla tillbaka ändringar", "rollbacklink": "rulla tillbaka", "rollbacklinkcount": "rulla tillbaka $1 {{PLURAL:$1|redigering|redigeringar}}", @@ -2231,7 +2263,7 @@ "modifiedarticleprotection": "ändrade skyddsnivån för \"[[$1]]\"", "unprotectedarticle": "tog bort skrivskydd från \"[[$1]]\"", "movedarticleprotection": "flyttade skrivskyddsinställningar från \"[[$2]]\" till \"[[$1]]\"", - "protectedarticle-comment": "{{GENDER:$2|Skyddad}} \"[[$1]]\"", + "protectedarticle-comment": "{{GENDER:$2|Skyddade}} \"[[$1]]\"", "modifiedarticleprotection-comment": "{{GENDER:$2|Ändrade skyddsnivå}} för \"[[$1]]\"", "unprotectedarticle-comment": "{{GENDER:$2|Tog bort skydd}} från \"[[$1]]\"", "protect-title": "Ändra skrivskyddsnivå för \"$1\"", @@ -2309,6 +2341,7 @@ "undelete-search-title": "Sök efter raderade sidor", "undelete-search-box": "Sök efter raderade sidor", "undelete-search-prefix": "Sidor som börjar med:", + "undelete-search-full": "Visa sidtitlar som innehåller:", "undelete-search-submit": "Sök", "undelete-no-results": "Inga sidor med sådan titel hittades i arkivet över raderade sidor.", "undelete-filename-mismatch": "Filversionen med tidsstämpeln $1 kan inte återställas: Filnamnet stämmer inte.", @@ -2355,6 +2388,7 @@ "sp-contributions-newonly": "Visa endast redigeringar där sidor skapas", "sp-contributions-hideminor": "Dölj mindre redigeringar", "sp-contributions-submit": "Sök", + "sp-contributions-outofrange": "Kunde inte visa några resultat. Det begärda IP-intervallet är större än CIDR-gränsen på /$1.", "whatlinkshere": "Vad som länkar hit", "whatlinkshere-title": "Sidor som länkar till \"$1\"", "whatlinkshere-page": "Sida:", @@ -2643,7 +2677,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.", @@ -3417,7 +3451,7 @@ "fileduplicatesearch-noresults": "Ingen fil med namnet \"$1\" hittades.", "specialpages": "Specialsidor", "specialpages-note-top": "Teckenförklaring", - "specialpages-note": "* Normala specialsidor.\n* Specialsidor med begränsad åtkomst.", + "specialpages-note-restricted": "* Normala specialsidor.\n* Specialsidor med begränsad åtkomst.", "specialpages-group-maintenance": "Underhållsrapporter", "specialpages-group-other": "Övriga specialsidor", "specialpages-group-login": "Logga in / skapa konto", @@ -3536,6 +3570,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..e3f338c9ef --- /dev/null +++ b/languages/i18n/tay.json @@ -0,0 +1,1658 @@ +{ + "@metadata": { + "authors": [ + "Akamycoco", + "Corainn", + "Hitaypayan", + "Temu19900728", + "Translatealcd" + ] + }, + "tog-numberheadings": "Smi’ nanak sa banggo’ na spzyang kkayal", + "underline-never": "Iyat pptzyuwaw krayryax", + "editfont-monospace": "Mtnaq kwara’ kintwahiq zyuwaw na inrkyasan na biru’", + "editfont-sansserif": "Ungat pintrang sa inrkyasan na biru’", + "editfont-serif": "Pintrang sa inrkyasan na biru’", + "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 }}", + "hidden-category-category": "Lnqing na pintbuci’", + "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": "luhing", + "about": "Nanu’ quw", + "article": "Kya kay’ qsahuy na zngazyan", + "newwindow": "(gyahiy na giqas na kktan)", + "cancel": "laxan", + "moredotdotdot": "Pzyux na’...", + "mypage": "Zzngayan", + "mytalk": "mpkal", + "anontalk": "mpkal", + "navigation": "Pglaing pzyangay", + "and": " squw ", + "faq": "FAQ", + "actions": "Mtzyuwaw", + "namespaces": "Kungcyen na sslalu’", + "variants": "Qbuci’ pinsbahan", + "navigation-heading": "Biru’ na bzyagan pglaing pzyangay", + "errorpagetitle": "Min’uqu’", + "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", + "print": "Re’in", + "view": "Psbaybzih minblaq mita’", + "view-foreign": "Psbzih mita’ squ$1", + "edit": "Smr’zyut miru’smr’zyut miru’", + "edit-local": "Sr’zyut miru’ sa sinbbaq kmayal sa rhzyal sqaniy", + "create": "Ps’rux", + "create-local": "Tnwang sa kay’ na rhzyal qasa", + "delete": "’muyut", + "protect": "mlahang", + "protect_change": "smbah", + "unprotect": "Sbah kinlahang", + "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’", + "pool-errorunknown": "Ini’ bqbaqiy ginlaylwan pin’qwan", + "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", + "badaccess": "Min’uqu’ pcingan sinpngan na kiri’", + "ok": "Wal balay", + "retrievedfrom": "’Nagal sa \"$1\"", + "editsection": "smr’zyut miru’", + "editold": "Smr’zyut miru’", + "viewsourceold": "Kta quw llpgan aring sa cin’ringan", + "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", + "collapsible-expand": "cankay", + "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)", + "sort-descending": "Pkkrawn mkuw tay bbawiq", + "nstab-main": "Zzngayan", + "nstab-user": "Pkt’aniy", + "nstab-media": "Zngazyan na meti’", + "nstab-special": "Mnanak na bbrwan", + "nstab-project": "Zngyan na Cwan’an", + "nstab-image": "biru’ na zayzyuwaw", + "nstab-mediawiki": "pintkaykay’", + "nstab-template": "Mopan", + "nstab-help": "Minblaq pinqzyu’ sa zngazyan", + "nstab-category": "Ps’anak sa mkgluw", + "mainpage-nstab": "T’ringan na zzngayan", + "error": "Min’uqu’", + "databaseerror": "Min’uqu’ quw cryawku’", + "databaseerror-query": "Hmkangi’: $1", + "databaseerror-function": "Pptzyuwaw:$1", + "readonly": "Nyux niya’ sngusun quw sslyan biru’ qaniy", + "missingarticle-diff": "(Kin’ini’ ptnaq:$1, $2)", + "internalerror": "pin’qwan tay qsahuy", + "internalerror_info": "Pin’qwan tay qsahuy: $1", + "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", + "actionthrottled": "Wal shtuy quw ppzyuwi’an", + "exception-nologin": "Ini’ su’ kzyup na’", + "cannotlogoutnow-title": "Ini’ baqiy mshriq misuw qaniy", + "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’", + "createacct-yourpassword-ph": "Brwaniy quw isu’ nanak musa’ baq na banggo’", + "createacct-yourpasswordagain": "Wal srhgun smhuzyay quw Mima’", + "createacct-yourpasswordagain-ph": "Brwaniy lawziy quw mima’", + "userlogin-remembermypassword": "Laxiy zngiy kinzyup maku’", + "userlogin-signwithsecure": "Ptzyawganiy quw iyat qqzyaqih na ’ubuy", + "cannotlogin-title": "Ini’ baqiy mzyup", + "cannotlogin-text": "Ini’ baqiy mzyup.", + "cannotloginnow-title": "Ini’ baqiy mzyup misuw qaniy", + "cannotcreateaccount-title": "Ini’ baqiy ps’rux Canghaw", + "yourdomainname": "Wangyu’ su’:", + "login": "mzyup", + "nav-login-createaccount": "Mzyup / ps’rux canghaw", + "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-submit": "Ps’rux lalu’ na Canghaw su’", + "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’}}", + "loginerror": "Mtkari’ kinzyup", + "createacct-error": "Min’uqu’ quw pins’rux su’ Canghaw", + "createaccounterror": "Ini’ baqiy ps’rux Canghaw:$1", + "loginsuccesstitle": "Wal mzyup", + "mailmypassword": "T’aring lawziy smi’ mima’", + "accountcreated": "Wal ps’rux canghaw", + "loginlanguagelabel": "Kay’:$1", + "pt-login": "Mzyup", + "pt-login-button": "mzyup", + "pt-login-continue-button": "Siy luhing mzyup", + "pt-createaccount": "Ps’rux canghaw", + "pt-userlogout": "mshriq", + "changepassword": "Sbah mima’", + "oldpassword": "Mima’ sraral:", + "newpassword": "Giqas na saxa’ nanak musa’ baq na banggo’:", + "botpasswords": "Mima’ na squliq na kikay", + "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’", + "botpasswords-label-grants-column": "Wal sbiq hiya’ kinri’ la", + "resetpass_forbidden": "Ini’ baqiy snbah mima’", + "resetpass_forbidden-reason": "Ini’ baqiy snbah mima’: $1", + "resetpass-submit-loggedin": "Sbah mima’", + "resetpass-submit-cancel": "laxan", + "resetpass-temp-password": "Pinbaybah smi’ na mima’:", + "passwordreset": "T’aring lawziy smi’ mima’", + "passwordreset-username": "Lalu’ na pptzyuwaw:", + "passwordreset-domain": "Lalu’ na wangyu’:", + "passwordreset-email": "Zyusyo na e-meyo’:", + "changeemail-none": "(ungat)", + "resettokens": "T’ringun kbalay lawziy niwan sawsu’", + "resettokens-tokens": "Niwan sawsu’:", + "resettokens-done": "Wal t’aring kbalay lawziy niwan sawsu’ na mima’.", + "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", + "savechanges": "Cucun squw sinbah", + "publishpage": "Aniy gmazyang quw zngazyan", + "publishchanges": "Aniy gmazyang quw sinbah", + "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’.", + "subject-preview": "Pnaynama’ mita’ sa spzyang na ptzyuwaw:", + "blockednoreason": "ini’ niya’ kaylaniy quw nanu’ quw ‘ringan", + "nosuchsectiontitle": "Ini’ ‘luwiy quw binkgan gnaygay na binrwan", + "loginreqtitle": "Siy ga mzyup", + "loginreqlink": "mzyup", + "accmailtitle": "Wayal ssatu’ mima", + "newarticle": "(Giqas)", + "noarticletext-nopermission": "Ungat ana cikuy knayal sa zyuwaw na qsahuy na lalu’ na kay’ squw nyux ktan sa zngayan qaniy.\nAna su’ s’usa’ sa zngayan tay bzinah \n[[Special:Search/{{PAGENAME}}|hmkangi’ sa puqing lalu’ na zngayan qaniy]], ini’ ga [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} hmkangi’ sa m’ubuy sa zyuwaw na bbrwan qutux qutux ryax],ga ungat kinri’ su’ ms’rux sa zngayan qaniy.", + "updated": "(Sinbahan)", + "note": " pinkita’ niya’ sa pinzga’ :", + "continue-editing": "Usa’ squw hhalan smr’zyut miru’", + "editing": "Nyuw smr’zyut miru’ $1", + "editingsection": "smr’zyut miru’ $1 (gnaygay binrwan)", + "yourtext": "Bniru’ su’", + "storedversion": "Wal cucun quw sinbah", + "yourdiff": "Kin’ini’ ptnaq", + "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’:", + "permissionserrors": "Min’uqu’ pcingan sinpngan na kiri’", + "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’.", + "edit-conflict": "Ini’ ptnaq imi’ qsahuy na sinr’zyut miru’.", + "postedit-confirmation-created": "Wal ps’rux zngazyan.", + "postedit-confirmation-restored": "Wal pbaynahun sazngayan sraral", + "defaultmessagetext": "Pinnama’ smi’ pintkaykay’ na biru’", + "invalid-content-data": "Ungat zyuwaw nquw sinbbaq kay’ na qsahuy niya’", + "content-model-wikitext": "Wikitext", + "content-model-text": "biru’ mlmlux", + "content-json-empty-object": "Ungat ana nanu’ quw nnanu’ niya’", + "content-json-empty-array": "Ungat ana nanu’ sni’ binrwan naha’", + "viewpagelogs": "Inblaq mita’ quw bniru’ sa zngazyan qaniy", + "currentrev": "Spzyang giqas na sinnbah", + "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", + "next": "tay suruw", + "last": "tay glaing", + "page_first": "t’ringan balay na llpgan", + "page_last": "pucing balay llpgan", + "history-fieldset-title": "Hkangi’ sinbah", + "histfirst": "spzyang smural", + "histlast": "giqas balay", + "historysize": "({{PLURAL:$1|$1 bzyaqan kkayal na llpgan}})", + "historyempty": "(ungat ana nanu’)", + "history-feed-title": "Sbah pincyagan sraral", + "rev-delundel": "Smbah sa musa’ slwan mita’", + "rev-showdeleted": "Pkaykita’", + "revdelete-show-file-submit": "Aw’", + "revdelete-legend": "Syaniy qutux sa snqays sa spkaykita’", + "revdelete-hide-text": "Sinbah biru’", + "revdelete-hide-comment": "Sr’zyut miru’ gnaygay lalu’", + "revdelete-radio-same": "(laxiy sbahiy)", + "revdelete-radio-set": "Lqing", + "revdelete-radio-unset": "Pkaykita’", + "revdelete-log": "’ringan:", + "revdel-restore": "sbah quw musa’ baqun mita’", + "pagehist": "Pinhknyan sraral na zngazyan", + "deletedhist": "Wal pzyutan lquw pincyuwagan sraral", + "revdelete-reasonotherlist": "Ringan na bzinah", + "revdelete-edit-reasonlist": "Sr’zyut miru’ sa ’ringan na pinzyutan", + "revdelete-offender": "Smnbah sa binrwan na squliq:", + "mergehistory-from": "Inkhulan na zngazyan:", + "mergehistory-into": "Sngusan zngazyan:", + "mergehistory-fail-bad-timestamp": "Min’uqu’ bniru’ su’ zikang", + "mergehistory-reason": "’ringan:", + "mergelog": "Psqun miru’", + "revertmerge": "Laxan pinsqunan", + "history-title": "Tay \"$1\" na sinbah bniru’ sraral", + "difference-title": "Kin ini’ ptnaq sinbahan squw \"$1\"", + "lineno": "Tuqiy binkgan binrwan$1:", + "editundo": "Psbzinah", + "diff-empty": "(ungat ini’ ptnaq)", + "diff-multi-sameuser": "({{PLURAL:ini’ kta quw sinbahan tay kska’ nquw sinbahan tay $1}})", + "searchresults": "Babaw na hinkangi", + "searchresults-title": "$1 na babaw hinkangi", + "titlematches": "Mtnaq quw lalu’ kkayal sa zngazyan", + "textmatches": "Mtnaq balay binrwan qsahuy na zngazyan", + "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-interwiki-more-results": "pzyux na’ pcingan na hinkangi’", + "search-relatedarticle": "Ubuy na", + "searchrelated": "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-legend": "Mkkura’ kinqbaqan na hhkangi’", + "powersearch-togglelabel": "Wazyaw:", + "powersearch-toggleall": "Kwara’", + "powersearch-togglenone": "Ungat", + "search-external": "Hhkangi’ taylnglingay", + "preferences": "Smi’ sa musa’ nryaxun mita’", + "mypreferences": "Sni’ maku’", + "prefs-edits": "Kinpira’ na sinr’zyut:", + "prefs-skin": "Ktan na rawziq", + "skin-preview": "Pnaynama’ mita’", + "datedefault": "Pinnama’ smi’ na biru’", + "prefs-labs": "Tthuzyay na tmrang psiking", + "prefs-user-pages": "Zngazyan na pptzyuwaw", + "prefs-rc": "Sbahun misuw qaniy", + "prefs-watchlist": "Binkgan sa kktan na kkita’", + "prefs-editwatchlist": "Sr’zyut miru’ sa kkita’ binkgan sa kktan", + "prefs-misc": "Mzinah", + "prefs-email": "bbzagan sa e-meyo’", + "prefs-rendering": "Ktan na rawziq", + "saveprefs": "Cucun", + "prefs-editing": "Smr’zyut miru’", + "searchresultshead": "Hhkangi’", + "stub-threshold-sample-link": "galan ppslungan", + "stub-threshold-disabled": "Ini’ ptzawganiy", + "timezonelegend": "Zikang na ini’ ptanaq rhzyal", + "localtime": "Zikang na rhzyal sqasa:", + "servertime": "Zikang na pklahang sa Wangcan:", + "timezoneregion-africa": "Xweco", + "timezoneregion-america": "Meco", + "timezoneregion-antarctica": "Nancicow", + "timezoneregion-arctic": "Peci’", + "timezoneregion-asia": "Aziya’", + "timezoneregion-australia": "Ostoraliya", + "timezoneregion-europe": "Oco", + "timezoneregion-indian": "Itoyo", + "timezoneregion-pacific": "Tayheyo", + "prefs-searchoptions": "Hhkangi’", + "prefs-namespaces": "Kungcyen na sslalu’", + "default": "pinnama’ smi’", + "prefs-files": "biru’ na zayzyuwaw", + "prefs-custom-css": "Sinpung nanak CSS", + "youremail": "e-meyo’:", + "username": "{{GENDER:$1|Lalu’ na pptzyuwaw}}:", + "prefs-registration": "Pbiru’ zikang:", + "yourrealname": "Spzyang balay lalu’:", + "yourlanguage": "Kay’:", + "yournick": "Giqas na bniru’ lalu’:", + "email": "e-meyo’", + "prefs-info": "Puqing balay na ggalan kinbbaq", + "prefs-i18n": "Koksayka", + "prefs-signature": "Miru’ lalu’", + "prefs-dateformat": "Ksu’ na ryax", + "prefs-timeoffset": "Kinini’ ptnaq na zikang", + "prefs-advancedediting": "Kwara’ hya’ g a syensyang", + "prefs-editor": "Qayqaya’ na ssr’zyut miru’", + "prefs-preview": "Pnaynama’ mita’", + "prefs-advancedrc": "Mkkura’ kinqbaqan na bbzyagan", + "prefs-advancedsearchoptions": "Mkkura’ kinqbaqan na bbzyagan", + "prefs-displayrc": "Pkt’aniy bbzyagan", + "prefs-tokenwatchlist": "Niwan sawsu’", + "prefs-diffs": "Kin’ini’ ptnaq", + "userrights": "Pcingan sinpngan na pptzyuwaw", + "userrights-lookup-user": "Wazyaw quw pptzyuwaw", + "userrights-groupsmember": "Ubuy gluw na chyuncu:", + "userrights-reason": "’ringan:", + "userrights-expiry-current": "Sinpngan ryax $1", + "userrights-expiry-none": "Ungat sinpngan ryax", + "userrights-expiry": "Sinpngan ryax:", + "userrights-expiry-othertime": "Zikang tay bzinah:", + "group": "Pinglgan:", + "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}}", + "group-bureaucrat-member": "{{GENDER:$1|gyose’ning}}", + "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-read": "Lpgun zngazyan", + "right-edit": "Smr’zyut miru’ sa zngazyan", + "right-createtalk": "Ps’rux na zngazyan na ppkyalan", + "right-move": "Hzyaniy quw zngazyan", + "right-move-categorypages": "Shzyaniy quw pintbuci’ na zngazyan", + "right-movefile": "Hzyaniy quw Tang’an", + "right-upload": "Pawsa’ quw Ta’an", + "right-writeapi": "Sptzyuwaw squw API", + "right-delete": "Pzyuciy zngazyan", + "right-undelete": "Laxiy quw aki’ llaxan na zngazyan", + "right-unblockself": "Laxiy quw qnhut isu’ nanak", + "right-mergehistory": "Psqunun zngazyan pincyuwagan sraral", + "grant-group-page-interaction": "Usa’ mpkayal squw zngazyan", + "grant-group-file-interaction": "Usa’ mpkayal squw meti’", + "grant-group-email": "Stwaniy e-meyo’", + "grant-group-high-volume": "Pzyux iytal wayal sptzyuwaw", + "grant-group-administration": "Ptzyuwaw squw pptzyuwaw sa kklahang", + "grant-group-other": "Hotung na bzinah", + "grant-createaccount": "Ps’rux canghaw", + "grant-highvolume": "Pzyux iyal quw sinr’zyut miru’", + "grant-privateinfo": "Agal ruw ssi’ sa lnqing na sinbbaq na cryaw", + "grant-uploadfile": "Pawsa’ sa kktan quw giqas Tang’an qaniy", + "grant-basic": "Puqing balay na pcingan na kinri’", + "newuserlogpage": "Ps’rux sa bbiru’ krayryax na pbing nasquliq", + "action-read": "lpuw zngazyan qaniy", + "action-edit": "sr’zyut squw zzngayan tay sqaniy", + "action-createpage": "Ps’rux quw zngazyan qaniy", + "action-move": "hz’aniy quw zngazyan qaniy", + "action-move-categorypages": "shzyaniy quw pintbuci’ na zngazyan", + "action-movefile": "hz’aniy quw Tang’an qaniy", + "action-delete": "’zyuciy quw zngazyan qaniy", + "action-deleterevision": "pzyuciy sinbah", + "action-deletelogentry": "pzyuciy quw bniru’ sa binkgan lmlamu’", + "action-sendemail": "Stwaniy e-meyo’", + "action-purge": "kwagiy quw zngazyan qaniy", + "nchanges": "min$1 {{PLURAL:$1|smbah}}", + "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-tag-remove": "Laxan '$1'", + "rcfilters-days-show-days": "tay $1{{PLURAL:$1|ryax}}", + "rcfilters-quickfilters": "Cucun squw kkay na pt’iruw", + "rcfilters-savedqueries-defaultlabel": "Cucun squw kkay na pt’iruw", + "rcfilters-savedqueries-rename": "T’aring lawziy smlalu’", + "rcfilters-savedqueries-setdefault": "Syun maha pinnama’ smi’", + "rcfilters-savedqueries-new-name-label": "Lalu’ qinlah lalu’", + "rcfilters-savedqueries-cancel-label": "Laxan", + "rcfilters-filterlist-title": "Hhkangi’", + "rcfilters-highlightbutton-title": "Baqun balay pcingan balay smbbaq nquw bniru’ niya’", + "rcfilters-highlightmenu-title": "Wazyaw biru’ knita’ rawziq", + "rcfilters-filterlist-noresults": "Ktan ga ungat ana qutux cin’rgan na sinpngan sa musa’ tthuzyay", + "rcfilters-filtergroup-authorship": "Mintzyuwaw sa wal miq sa pincyuwagan", + "rcfilters-filter-editsbyself-label": "Sinr’zyut su’ miru’", + "rcfilters-filter-editsbyself-description": "Pincyuwagan su’.", + "rcfilters-filter-editsbyother-label": "Sinbah na squliq tay bzinah", + "rcfilters-filter-user-experience-level-registered-label": "Pinbiru’", + "rcfilters-filter-user-experience-level-unregistered-label": "Iyat pinbiru’ na’", + "rcfilters-filter-user-experience-level-newcomer-label": "Misan mqbaq", + "rcfilters-filter-user-experience-level-learner-label": "Misan mqbaq", + "rcfilters-filtergroup-automated": "Mutuw niya’ sr’tun miru’ nanak", + "rcfilters-filter-bots-label": "squliq na kikay", + "rcfilters-filtergroup-reviewstatus": "’nblaq mita’ inrkyasan niya’ sa misuw qaniy", + "rcfilters-filter-patrolled-label": "Wayal gawzyagan mita’", + "rcfilters-filter-unpatrolled-label": "Iyat gnawzyagan mita’ na’", + "rcfilters-filtergroup-significance": "Spzyang krhun na zyuwaw", + "rcfilters-filter-minor-label": "Msnzik sa spzyang balay sinr’zyut miru’", + "rcfilters-filter-major-label": "Iyat mszik sa spzyang sr’tun miru’", + "rcfilters-filter-watchlist-watched-label": "Kta quw babaw na p’insat", + "rcfilters-filtergroup-changetype": "Sbah gluw na mmntnaq", + "rcfilters-filter-pageedits-label": "Ssr’zyut miru’ zngazyan", + "rcfilters-filter-newpages-label": "Ps’rux zngazyan", + "rcfilters-filter-categorization-label": "Pintbcyan na sinbahan", + "rcfilters-filter-logactions-label": "Miru’ sa bbiru’", + "rcfilters-filtergroup-lastRevision": "Spzyang giqas na sinnbah", + "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": "$1 pintbcyan na zngazyan", + "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_categories_any": "Ana nanu’ binzyagan na", + "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’", + "uploaderror": "Wal min’uqu’ quw pinpawsa’", + "uploadlogpage": "Bniru’ sa kwara’ wal pawsun sa kktan", + "filename": "Lalu’ na tang’an", + "filedesc": "Lalu’ na spzyang bbiru’ su’", + "fileuploadsummary": "Lalu’ na spzyang bbiru’ su’:", + "filereuploadsummary": "Sbah quw Tang’an", + "filestatus": "Pancyuen cwangtay:", + "filesource": "Tkhulan:", + "ignorewarnings": "Siy laxiy kya kwara’ quw sinngungu’ niya’", + "uploadwarning": "Pinsbaq niya’ sa misa’ ta’ pinbaqun", + "savefile": "Cucun Tang’an", + "uploaddisabled": "Wal phngagun quw pptzyuwaw na ppawsa.", + "upload-source": "Inkhulan Ta’an", + "upload-description": "Pinqzyuwan Tang’an", + "upload-options": "Bbzyagan sa ppawsan", + "watchthisupload": "Kta quw Tang’an qaniy", + "upload-file-error": "pin’qwan tay qsahuy", + "upload-dialog-button-cancel": "Laxan", + "upload-dialog-button-back": "’bzinah", + "upload-dialog-button-done": "Tmasuq", + "upload-dialog-button-save": "Cucun", + "upload-dialog-button-upload": "Pawsa’ sa kktan", + "upload-form-label-infoform-name": "Lalu’ qinlah lalu’", + "upload-form-label-infoform-description": "Miblaq pnqzyu’ sa zyuwaw", + "upload-form-label-usage-title": "Pptzyuwaw", + "upload-form-label-usage-filename": "Lalu’ na Tang’an", + "upload-form-label-own-work": "Qaniy ga kinbalay maku’", + "upload-form-label-infoform-categories": "Ps’anak sa mkgluw", + "upload-form-label-infoform-date": "Ryax", + "uploadstash": "Pawsa’ sa kktan quw llqingan", + "uploadstash-refresh": "Psqgiqas smbah quw binzyagan sa kktan na Tang’an", + "uploadstash-thumbnail": "inblaq mita’ swotu’", + "invalid-chunk-offset": "Ungat zyuwaw na Chyak offset", + "img-auth-accessdenied": "Ini’ swal magal ru skung", + "upload-curl-error28": "Wal hmzinas zikang na pinpawsa’ la", + "license": "Biru’ na gaga’ nqu snwayal hmriq sa kinri’:", + "license-header": "Biru’ na gaga’ nqu snwayal hmriq sa kinri’", + "nolicense": "Ini’ wazyaw na’", + "license-nopreview": "(Ini’ aniy pnaynama’ pkita’)", + "listfiles-delete": "’muyut", + "imgfile": "biru’ na zayzyuwaw", + "listfiles": "Binkgan sa kktan na Tang’an", + "listfiles_thumb": "Pinkcikuy zuga’ zngayan", + "listfiles_date": "Ryax", + "listfiles_name": "Lalu’ qinlah lalu’", + "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": "Ubuy gluw na misuw qaniy", + "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-deleteall": "muyut kwara’", + "filehist-deleteone": "’muyut", + "filehist-revert": "psbzih", + "filehist-current": "misuw qaniy", + "filehist-datetime": "ryax/zikang", + "filehist-thumb": "Swotu’", + "filehist-thumbtext": "Pinkcikuy kbalay na syasing squ kinblayan $1", + "filehist-nothumb": "Ungat pinkcikuy na zga’", + "filehist-user": "kwara’ ka cyux mbing ka qutux qutux ngasal.", + "filehist-dimensions": "Sspngan kinkrahu’", + "filehist-filesize": "Kinkrahu’ na Tang’an", + "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.", + "shared-repo-from": "minkahul sa $1", + "shared-repo": "pglgan mita’ ruw pglgan mtzyuwaw na ssliyan Tang’an", + "upload-disallowed-here": "Iyat su’ bauqn ’mumuk quw biru’ na zayzyuwaw qaniy.", + "filerevert": "Psbzih $1", + "filerevert-legend": "Psbzinah qu Tang’an", + "filerevert-comment": "’ringan:", + "filerevert-submit": "Psbzih", + "filedelete": "’zyuciy $1", + "filedelete-legend": "Pzyuciy Ta’an", + "filedelete-comment": "’ringan:", + "filedelete-submit": "’muyut", + "filedelete-reason-otherlist": "Ringan na bzinah", + "filedelete-edit-reasonlist": "Sr’zyut miru’ sa ’ringan na pinzyutan", + "filedelete-maintenance-title": "Ini’ baqiy ’muzyut Taang’an", + "mimesearch": "MIME hhkangi’", + "download": "syacay", + "unwatchedpages": "Ini’ klhangiy mita’ na zngazyan", + "listredirects": "T’ringun pglaing lawziy binzyagan sa kktan", + "listduplicatedfiles": "T’ringiy lawziy Tang’an na ktan binkgan", + "unusedtemplates": "Iyat pintzyuwaw na’ na mopan", + "randompage": "Random page", + "randomincategory-submit": "Musa’", + "statistics": "Sinqunan plpuw", + "statistics-header-pages": "Sinqunan plpuw sa zngazyan", + "statistics-header-edits": "Sr’zyut miru’ sinqunan plpuw", + "statistics-header-hooks": "Sinqunan plpuw na bzinah", + "statistics-articles": "Zngayan na biru’ qaniy", + "statistics-pages": "Zzngayan", + "statistics-files": "Wal pawsun sa kktan quw Tang’an", + "statistics-users-active": "Ini’ hngaw mtzyuwaw na pptyuwaw", + "pageswithprop-prop": "Lalu’ na ubuy mkgluw:", + "pageswithprop-submit": "Musa’", + "brokenredirects-edit": "Smr’zyut miru’", + "brokenredirects-delete": "’muyut", + "withoutinterwiki-legend": "T’ringan na biru’", + "withoutinterwiki-submit": "Pkaykita’", + "nbytes": "$1 {{PLURAL:$1|qutux llpgan na bzyaqan kkayal}}", + "ncategories": "$1 {{PLURAL:$1|pintbcyan}}", + "nlinks": "$1{{PLURAL:$1|’ubuy}}", + "nmembers": "$1 {{PLURAL:$1|pinglgan}}", + "nrevisions": "min$1 {{PLURAL:$1|smbah}}", + "nimagelinks": "Tay $1{{PLURAL:$1|llpgan}}", + "lonelypages": "Mtbuci’ na zngayan", + "uncategorizedpages": "Zngazyan na iyat pintbuci’", + "uncategorizedcategories": "Iyat pintbuci’ na pptbcyun", + "uncategorizedimages": "Tang’an na iyat pintbuci’", + "uncategorizedtemplates": "Musa’ ptbcyun sa kkbalay nn nanu’", + "unusedcategories": "Ini’ ptzyawganiy na’na pintbuci’", + "unusedimages": "Ini’ aniy mtzyuwaw na’ na Tang’an", + "wantedcategories": "Musa’ sawyan magal ka ptbuci’", + "wantedpages": "Musa’ sawyan magal ka zngazyan", + "wantedfiles": "Musa’ sawyan magal ka Tang’an", + "wantedtemplates": "Musa’ sawyan magal ka mopan", + "prefixindex-submit": "Pkaykita’", + "shortpages": "R’tung iyal na zngazyan", + "longpages": "Hmzinas iyal na zngazyan", + "protectedpages": "Klhangan na zngazyan", + "protectedpages-timestamp": "Ryax zikang", + "protectedpages-page": "Zzngayan", + "protectedpages-expiry": "Sinpngan ryax", + "protectedpages-performer": "Klhangiy quw pptzyuwaw", + "protectedpages-params": "Kklahang sa biru’ na chasu’", + "protectedpages-reason": "’ringan", + "protectedpages-submit": "Pkt’aniy", + "protectedpages-unknown-timestamp": "Ini’ bqbaqiy ginlaylwan", + "protectedpages-unknown-performer": "Ini’ bqbaqiy ginlaylwan na pptzyuwaw", + "protectedtitles": "Klhangan na lalu’ na kkayal", + "protectedtitles-submit": "Pkt’aniy lalu’ na kkayal", + "listusers": "Binkgan sa zzngazyan na pptzyuwaw", + "listusers-desc": "Aring tay krahu’ mkuw ruw mucing cikuy", + "usereditcount": "$1 {{PLURAL:$1|smr’zyut miru’}}", + "newpages": "Giqas na zzngzyan", + "newpages-submit": "Pkaykita’", + "newpages-username": "Lalu’ na pptzyuwaw:", + "ancientpages": "Spzyang smural na zngazyan", + "move": "Smhzi’", + "movethispage": "Hz’aniy quw zngazyan qaniy", + "notargettitle": "Ungat sinngusan niya’", + "pager-older-n": "{{PLURAL:$1|smural hazi’ quw $1}}", + "suppress": "Shtuy", + "apihelp": "minblaq kmal na API", + "apisandbox": "saho API", + "apisandbox-fullscreen": "Ptgyah sa kinglabang na ppcyuwagan", + "apisandbox-unfullscreen": "Pkt’aniy", + "apisandbox-submit": "Taygalu’ pawsa’", + "apisandbox-reset": "Pzyutan", + "apisandbox-retry": "Talam lawziy", + "apisandbox-helpurls": "Minblaq kmayal sa ’ubuy", + "apisandbox-examples": "Pinkaykita’ naha’ sa ppslungan", + "apisandbox-dynamic-parameters": "Chansu’na bzinah", + "apisandbox-dynamic-parameters-add-label": "Twangiy sa chansu’:", + "apisandbox-dynamic-parameters-add-placeholder": "Lalu’ na chansu’", + "apisandbox-deprecated-parameters": "Wal phngagun na chansu’", + "apisandbox-fetch-token": "Mutuw siy biru’ nanak banggo’ na mima’", + "apisandbox-submit-invalid-fields-title": "Ungat zyuwaw bbrwan sa kruma’", + "apisandbox-results": "Pcingan balay", + "apisandbox-continue": "Siy lhingiy", + "apisandbox-continue-clear": "Pzyutan", + "booksources": "Brbiru’ na inkhulan na pila’", + "booksources-search-legend": "Hkangi’ tkhulan pila’ na brbiru’", + "booksources-search": "Hkangi’", + "specialloguserlabel": "Pptzyuwaw:", + "log": "Pinhknyan sraral", + "logeventslist-submit": "Pkaykita’", + "all-logs-page": "Kwara’ ka wal niya’ skayal kwara’ squliq ka bnrwan", + "checkbox-all": "Kwara’", + "checkbox-none": "Ungat", + "checkbox-invert": "Pssyuk mwazyaw", + "allpages": "Kwara’ biru’ na zngyan", + "nextpage": "Llpgan tay suruw ($1)", + "prevpage": "Llpgan tay glaing ($1)", + "allarticles": "Kwara’ biru’ na zngyan", + "allpagessubmit": "Mtzyuwaw", + "categories": "Pintbcyan", + "categories-submit": "Pkaykita’", + "sp-deletedcontributions-contribs": "wal miq sa pincyuwagan", + "linksearch": "Hhkangi’’ubuy taylnglingay", + "linksearch-pat": "Hhkangi’:", + "linksearch-ns": "Kungcyen na sslalu’:", + "linksearch-ok": "Hhkangi’", + "listusers-submit": "Pkaykita’", + "listusers-noresult": "Ktan ga ungat qutux pptzyuwaw.", + "listusers-blocked": "(wal sqhut)", + "activeusers-noresult": "Ktan ga ungat qutux pptzyuwaw", + "listgrouprights-group": "Pinglgan", + "listgrouprights-rights": "Pcingan na sinpngan", + "listgrouprights-members": "(binzyagan sa kktan gluw na qutux pinglgan)", + "listgrouprights-addgroup-all": "Tawnganiy kwara’ quw cyucu’", + "listgrouprights-removegroup-all": "Laxan kwara’ cyuncu’", + "listgrouprights-removegroup-self-all": "Laxan kwara’ cyuncu’", + "listgrouprights-namespaceprotection-header": "Klhangan sa iyat niya’ kkhmut na sslalu’ sa kung cyen:", + "listgrants": "Binkgan biru’ na snwayal miq sa kinri’", + "listgrants-rights": "Pcingan na sinpngan", + "trackingcategories": "Sksa’ sa pintbcyan", + "trackingcategories-msg": "Sksa’ sa pintbcyan", + "trackingcategories-name": "Lalu’ na sinbbaq", + "trackingcategories-desc": "Galan pspngan na snli’ sa snli’ niya’kwara’ ka pintbuci’", + "trackingcategories-disabled": "Wal phngagun quw pintbcyan", + "mailnologin": "Ungat sstwan lalu’ na rhzyal", + "emailusername": "Lalu’ na pptzyuwaw:", + "emailusernamesubmit": "Pawsun", + "emailfrom": "Squliq smnatu’:", + "emailto": "Sginbang a:", + "emailsubject": "Spzyang na ptzyuwaw:", + "emailmessage": "Pintkaykay’:", + "usermessage-editor": "Sni’ nanak sinbbaq zyuwaw na situng", + "watchlist": "Cyes’ cingtan", + "mywatchlist": "Kta quw binkgan biru’", + "watchnologin": "Ini’ su’ kzyup na’", + "watch": "Kita’", + "watchthispage": "Kta quw zngazyan qaniy", + "unwatch": "Laxiy kaygaliy", + "unwatchthispage": "Hngaw kmyagal", + "notanarticle": "Zngazyan na iyat kay’ balay na binrwan", + "watchlist-hide": "Lqing", + "watchlist-submit": "Pkaykita’", + "wlshowhideminor": "msnzik sa spzyang balay sinr’zyut miru’", + "wlshowhidebots": "squliq na kikay", + "wlshowhideliu": "wal pbiru’quwpptzyuwaw", + "wlshowhideanons": "inqing lalu’ nqu squliq cyux mbing", + "wlshowhidepatr": "wal ktan bniru’ na sinr’zyut", + "wlshowhidemine": "smr’zyut maku’ miru’", + "wlshowhidecategorization": "Pintbcyan na zngazyan", + "watchlist-options": "Wwazyaw sa’ kkita’ sa binkgan sa kktan", + "enotif_impersonal_salutation": "{{SITENAME}} kwara’ ka cyux mbing ka qutux qutux ngasal", + "enotif_anon_editor": "inqing lalu’ nqu squliq cyux mbing $1", + "enotif_minoredit": "Qaniy hya’ ga mszik na musa’ sr’tun miru’", + "deletepage": "Pzyuciy zngazyan", + "confirm": "Wal balay srhgun", + "delete-confirm": "’muyut \"$1\"", + "delete-legend": "’muyut", + "historyaction-submit": "Pkaykita’", + "actioncomplete": "Tmasuq mtzyuwaw", + "actionfailed": "Wal yaqih pintzyuwaw", + "dellogpage": "Wayal pzyutan ka bniru’ qasa", + "deletionlog": "pzyuciy quw binrwan", + "deletecomment": "’ringan:", + "deletereasonotherlist": "Ringan na bzinah", + "delete-edit-reasonlist": "Sr’zyut miru’ sa ’ringan na pinzyutan", + "rollback": "Psbzinah quw sinr’zyut miru’", + "rollbacklink": "psbnahun", + "rollbacklinkcount": "psbzinah squw {{PLURAL:sinr’zyut miru’ sa|$1}}", + "rollbackfailed": "Psbzinah sa wal yaqih", + "sessionfailure-title": "Wayal yaqih squw p’ubuy", + "changecontentmodel-title-label": "Lalu’ na zngazyan", + "changecontentmodel-model-label": "Giqas na pinsulung sa inrkyasan na bnrwan tay qsahuy", + "changecontentmodel-reason-label": "’ringan:", + "changecontentmodel-submit": "Smbah", + "logentry-contentmodel-change-revertlink": "psbzih", + "logentry-contentmodel-change-revert": "psbzih", + "protectlogpage": "Kklahang sa bniru’", + "protect-legend": "Wal srhgun smhuzyay mlahang", + "protectcomment": "’ringan:", + "protectexpiry": "Sinpngan ryax:", + "protect_expiry_invalid": "Ini’ baqiy snbah mima’.", + "protect_expiry_old": "Wal tmasuq quw sinpngan na ryax", + "protect-level-sysop": "Nanak yaquw pklahang swalan", + "protect-summary-cascade": "casketing", + "protect-expiring": "Sinpngan ryax $1 (UTC)", + "protect-expiring-local": "sinpngan ryax squw $1", + "protect-expiry-indefinite": "ungat tmsuqan na ryax", + "protect-othertime": "Zikang tay bzinah:", + "protect-othertime-op": "zikang na bzinah", + "protect-otherreason-op": "Ringan na bzinah", + "protect-edit-reasonlist": "Sr’zyut miru’ quw ’ringan na kklahang", + "restriction-type": "Pcingan na sinpngan:", + "restriction-level": "Pssyukun aring sa wagiq paybkuw ruw mucing sa cikuy", + "minimum-size": "Pzyang cikuy balay na Says’", + "maximum-size": "Sspngan kinkrahu na sinpngan:", + "pagesize": "(bzyaqan kkayal na llpgan)", + "restriction-edit": "Smr’zyut miru’", + "restriction-move": "Smhzi’", + "restriction-create": "Ps’rux", + "restriction-upload": "Pawsa’ sa kktan", + "restriction-level-sysop": "klhangan kwara’", + "restriction-level-autoconfirmed": "smka’ quw klhangan", + "restriction-level-all": "ana nanu’ pintbcyan kinblayqan", + "undelete-fieldset-title": "Psbzinah sa wal sbahun", + "undeletebtn": "Psbzih", + "undeletelink": "psbaybzih minblaq mita’ / psbzih", + "undeleteinvert": "Pssyuk mwazyaw", + "undeletecomment": "’ringan:", + "undelete-search-submit": "Hhkangi’", + "undelete-show-file-submit": "Aw’", + "namespace": "Kung cyen na sslalu’:", + "invert": "Mssyuk mwazyaw", + "tooltip-invert": "Prawngan mwazyaw squw “bbzyagan” qaniy ga lqingun niya’ quw sinbahan zngazyan na wnwazyaw sa “kungcyen na sslalu’ ” (maha iy prawngan su’ mwazyaw quw gluw na “kungcyen na sslalu’ ” lga, mutuw niya’ siy ptnaqiy lmqing uziy kwara’ quw gluw na “kungcyen na sslalu’.”)", + "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", + "uctop": "(misuw qaniy ga)", + "month": "Pcingan na sniyan naha’ ryax na byacing:", + "year": "Pcingan na sniyan naha’ ryax na kawas", + "sp-contributions-newbies-sub": "Pptzyuwaw sa kkbalay sa giqas na Canghaw", + "sp-contributions-blocklog": "qmhut smu’ut sa bniru’", + "sp-contributions-uploads": "pawsa’ sa kktan", + "sp-contributions-logs": "pinhknyan sraral", + "sp-contributions-talk": "mpkal", + "sp-contributions-search": "Hkangi’ wal miq sa pincyuwagan", + "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’", + "block": "Htzyaniy quw pptzyuwaw", + "blockip-legend": "Htzyaniy quw pptzyuwaw", + "ipbexpiry": "Sinpngan ryax:", + "ipbreason": "’ringan:", + "ipbsubmit": "Qhtaniy quw pptzyuwaw qaniy", + "ipbother": "Zikang tay bzinah:", + "ipb-confirm": "Sqhut quw wal srhgun smhuzyay", + "blockipsuccesssub": "Wal thuzyay qmhut smu’ut", + "ipb-edit-dropdown": "Sr’zyut miru’ quw ’ringan na qnhut", + "ipb-blocklist-duration-left": "msthay $1", + "ipusubmit": "Laxiy quw qnihut qaniy", + "autoblocklist-submit": "Hhkangi’", + "blocklist-timestamp": "Ryax zikang", + "blocklist-target": "Sinpngan na sinngusan", + "blocklist-expiry": "Sinpngan ryax", + "blocklist-by": "Qnhtan na pklahang", + "blocklist-params": "Qmhut sa chansu’", + "blocklist-reason": "’ringan", + "ipblocklist-submit": "Hhkangi’", + "ipblocklist-localblock": "Sqhut tay rhzyal sqaniy", + "infiniteblock": "ungat tmsuqan na ryax", + "noautoblockblock": "phngaw quw pinzroo na qnhut", + "emailblock": "phngaw quw e-meyo’", + "blocklink": "qmhut", + "unblocklink": "tmasuq qnhut", + "change-blocklink": "Snbah qnhut", + "contribslink": "wal miq sa pincyuwagan", + "emaillink": "Stwaniy e-meyo’", + "blocklogpage": "Qmhut smu’ut sa bniru’", + "block-log-flags-noautoblock": "phngaw quw pinzroo na qnhut", + "block-log-flags-noemail": "phngaw quw e-meyo’", + "lockdb": "Sngusiy cryawku’", + "lockbtn": "Sngusiy cryawku’", + "move-page": "Smhzi’ $1", + "move-page-legend": "Hzyaniy quw zngazyan", + "newtitle": "Giqas na lalu’ na kkayal:", + "movepagebtn": "Hzyaniy quw zngazyan", + "pagemovedsub": "Wal thuzyay smhzi’", + "movelogpage": "Sinhzyan sa bniru’", + "movereason": "’ringan:", + "revertmove": "psbzih", + "export": "Pawsa’ sa bzinah quwzngayan", + "exportall": "Stwaniy kwara’ quw zngazyan", + "export-submit": "Pawsa’", + "export-download": "Cucun ruw aki’ mgTang’an", + "export-templates": "Kwara’ kin na yaya’ na kkbalay nnanu’", + "allmessages": "Sni’ nanak sinbbaq zyuwaw na situng", + "allmessagesname": "Lalu’ qinlah lalu’", + "allmessagesdefault": "Pinnama’ smi’ pintkaykay’ na biru’", + "allmessages-filter-legend": "Hhkangi’", + "allmessages-filter-unmodified": "Iyat sinbah", + "allmessages-filter-all": "Kwara’ biru’ na zngyan", + "allmessages-filter-modified": "Wal sibahun", + "allmessages-prefix": "Khlaniy sa puqing biru’ hmkangi’:", + "allmessages-language": "Kay’:", + "allmessages-filter-submit": "Mtzyuwaw", + "allmessages-filter-translate": "Gmbang miru’", + "thumbnail-more": "Pkrahu’", + "filemissing": "Wal mgzyuwaw Tang’an", + "import": "Pgwah tay qsahuy sa zngazyan", + "import-interwiki-sourcewiki": "Tkhulan wiki:", + "import-interwiki-sourcepage": "Inkhulan na zngazyan:", + "import-interwiki-templates": "Kwara’ kin na kwara’ yaya’ na kkbalay nnanu’", + "import-interwiki-submit": "Pawsa’ sa qsahuy na", + "import-upload-filename": "Lalu’ na tang’an:", + "import-comment": "Tnwang smbbaq miru’", + "import-revision-count": "min$1 {{PLURAL:$1|smbah}}", + "importsuccess": "Wal tmasuq pawsa’ sa qsahuy na...la!", + "importlogpage": "Pgwah tay qsahuy sa bniru’", + "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-protect": "Klhangiy quw zngazyan qaniy", + "tooltip-ca-delete": "’zyuciy quw zngazyan qaniy", + "tooltip-ca-move": "Hz’aniy quw zngazyan qaniy", + "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-publish": "Kaylaniy kwara’ squliq quw sinbah su’", + "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-watchlistedit-normal-submit": "Laxiy quw lalu’ na kkayal", + "tooltip-watchlistedit-raw-submit": "Psqgiqas smbah kkita’ sa bnkuw na kktan", + "tooltip-upload": "T’aring pawsa’ sa kktan", + "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", + "creditspage": "Kinbalay sa zngazyan na qutux gluw qasa", + "simpleantispam-label": "Kmyagal sa kana ptayqihiy na niwan saysyup na kay’ na nnanu.\nLaxiy brwaniy sa bbrwan qaniy!", + "pageinfo-header-basic": "Puqing balay na ggalan kinbbaq", + "pageinfo-header-edits": "Sr’zyut miru’ pincyuwagan sraral", + "pageinfo-header-restrictions": "Kklahang sa zngazyan", + "pageinfo-header-properties": "Gluw na zngazyan", + "pageinfo-display-title": "Pkt’aniy lalu’ na kkayal", + "pageinfo-article-id": "Zngazyan na ID", + "pageinfo-language": "Kay’ qsahuy na zngazyan", + "pageinfo-language-change": "smbah", + "pageinfo-content-model": "Inrkyasan pinsulung sa qsahuy na zngazyan", + "pageinfo-content-model-change": "smbah", + "pageinfo-robot-index": "Snwalan", + "pageinfo-robot-noindex": "Laxiy swaliy", + "pageinfo-watchers": "Number of page watchers", + "pageinfo-firstuser": "Kinbalay sa zngazyang", + "pageinfo-firsttime": "Zikang na pins’rux sa zngazyan", + "pageinfo-lastuser": "Senmung psr’zyut miru’ sa misuw qaniy", + "pageinfo-lasttime": "Ryax sinr’zyut miru’ misuw qaniy", + "pageinfo-edits": "Sinqunan plpuw na pinsr’zyut miru’", + "pageinfo-authors": "Kinkhmay kwara’ na mniru’", + "pageinfo-recent-authors": "Senmung pbiru’ sa misuw qaniy", + "pageinfo-toolboxlink": "Zzngayan na ggalan qqbaqan", + "pageinfo-redirectsto": "T’ringun pglaing maras sa:", + "pageinfo-redirectsto-info": "ggalan kinbaq zayzyuwaw", + "pageinfo-contentpage-yes": "Aw’", + "pageinfo-protect-cascading": "Kklahang tkhulan sakwara’ ka m’ubuy na ana nanu’", + "pageinfo-protect-cascading-yes": "Aw’", + "pageinfo-protect-cascading-from": "Kklahang tkhulan sakwara’ ka m’ubuy na ana nanu’", + "pageinfo-category-info": "Pintbcyan ggalan kinbaq zayzyuwaw", + "pageinfo-category-total": "Kinkhmayan na qutux pinglgan", + "pageinfo-category-pages": "Kinpzxan na zngazyan", + "pageinfo-category-subcats": "Kinpzyux llpgan na uzyuk na pintbcyan", + "pageinfo-category-files": "Kinpzyux na Tang’an", + "pageinfo-user-id": "Mning ID", + "markaspatrolleddiff": "Sinbbaq sa wayal gawzyagan mita’", + "markedaspatrolled": "Sinbbaq sa wayal gawzyagan mita’", + "patrol-log-page": "Inblaq gmawzyaw mita’ binrwan", + "log-show-hide-patrol": "$1 inblaq gmawzyaw mita’ binrwan", + "log-show-hide-tag": "$1 bniru’ sa lalu’ na qinlah", + "confirm-markpatrolled-button": "Wal balay", + "previousdiff": "← Smural sinr’zyut miru’", + "nextdiff": "Giqas hazi’ sinr’zyut→", + "thumbsize": "Sspngan kinkrahu’ na swotu’:", + "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-gif-frames": "tay$1 {{PLURAL:$1|gnaygay pinzyuwi’an}}", + "file-info-png-looped": "syunxwan", + "file-info-png-frames": "tay$1 {{PLURAL:$1|gnaygay pinzyuwi’an}}", + "newimages": "Giqas na lalu’ na sslyan sa biru’ pinzga’", + "newimages-legend": "Hhkangi’", + "noimages": "Ungat ana nanu’ pinzga’", + "gallery-slideshow-toggle": "Sbah mita' sa syasing bzinah", + "ilsubmit": "Hhkangi’", + "bydate": "skahul sa ryax", + "ago": "tay glaing na $1", + "just-now": "misan", + "monday-at": "Ryax tay qutux sa qutux rihay squw $1", + "tuesday-at": "Ryax tay sazing sa qutux rihay squw $1", + "wednesday-at": "Rryax tay cyugalx sa qutux rihay squw $1", + "thursday-at": "Ryax tay spayat sa qutux rihay squw $1", + "friday-at": "Ryax tay zmagal sa qutux rihay squw $1", + "saturday-at": "Ryax tay mtzyu’ sa qutux rihay squw $1", + "sunday-at": "Ryax hngawan sa qutux rihay squw $1", + "yesterday-at": "$1 tay shira’", + "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-imagelength": "Kinwagiq", + "exif-bitspersample": "Weyuen na qutux qutux syangsu’", + "exif-compression": "Ppkcikuy", + "exif-photometricinterpretation": "Sinqtuxan na Syangsu’", + "exif-orientation": "Ppiray sa iyat ptkkiy ktan quw syasing", + "exif-samplesperpixel": "Kinnhmay na Syangsu’", + "exif-planarconfiguration": "Paybkuw sa kwara’ biru’ na ana nanu’", + "exif-xresolution": "Sweping Cyesitu’", + "exif-yresolution": "Cwec’ Cyesitu’", + "exif-stripoffsets": "Cyux ki’an na ggalan sinbbaq ana nanu’", + "exif-rowsperstrip": "Qutux qutux binkgan na binrwan", + "exif-whitepoint": "Kinplquwi’ na iro’", + "exif-primarychromaticities": "Spzyang balay na iro’", + "exif-datetime": "Ryax na sinbah Tang’an squw zikang na sinbahan Tang’an", + "exif-imagedescription": "Sni’ lalu’ na syasing", + "exif-make": "Squliq ka pkbalay squw Syasinki’", + "exif-model": "Lalu’ na kinblayan Syasingki’", + "exif-software": "Ggalan pptzyuwaw sa zyuwaw na Tennaw", + "exif-artist": "Mniru’", + "exif-copyright": "Cinpancyuen", + "exif-exifversion": "ktan sa kinblayan na Exif", + "exif-colorspace": "Hhalan mwazyaw sa qqlah sa ini’ ptnaq kktan na bbiru’", + "exif-componentsconfiguration": "Qutux qutux imi’ na syngsu’", + "exif-compressedbitsperpixel": "Pptzyuwaw sa ppkcikuy sa syasing", + "exif-pixelxdimension": "Kinglabang na pinzga’", + "exif-pixelydimension": "Kinwagiq na pinzga’", + "exif-usercomment": "Knayal kay’ na pptzyuwaw", + "exif-datetimeoriginal": "Ryax na sni’ sa Craw squw zikang na sni’ sa Craw", + "exif-datetimedigitized": "Ryax na minsuwexwa’ squw zikang na minsuwexwa’", + "exif-exposuretime": "Zikang na pinsyaxan", + "exif-fnumber": "Kinsmyaxan na syasingki’", + "exif-exposureprogram": "Kkbalay niya’ sa pisyaxan na syasingki’", + "exif-isospeedratings": "pspngan kinhaylaw na ISO", + "exif-maxaperturevalue": "Pzyang krahu’ sspngan kinsmyax na syasingki’", + "exif-subjectdistance": "Kintwahiq zyuwaw na sinngusan ppsingan", + "exif-meteringmode": "Yaya’ pspngan na sspung sa syax", + "exif-lightsource": "Puqing na syax", + "exif-flash": "Pnilaw na pyax pyax", + "exif-focallength": "Kintwahiq na kamera’ squw sinngusan niya’", + "exif-subjectarea": "Rhzyal cyux ki'an na spzyang kkayal", + "exif-flashenergy": "Rngu’ kinlawkahan na pnilaw na pyax pyax", + "exif-subjectlocation": "Cyux ki'an na spzyang kkayal", + "exif-exposureindex": "Miru’ kinsnyaxan pinspngan na pspngan pinsyax na syasingki’", + "exif-sensingmethod": "Yaya’ pspngan na sspung sa qnbaq sa syax", + "exif-filesource": "Tkhulan na Tang’an", + "exif-scenetype": "Pintbcyan sa ubuy gluw na mmntnaq sa ppcyuwagan", + "exif-customrendered": "Sinpung niya’ nanak kkbalay niya’ sa syasing", + "exif-exposuremode": "Kin’ini’ ptnaq pinsyaxan na syax sa syasinki’", + "exif-whitebalance": "Wayt belns", + "exif-scenecapturetype": "Kinini’ ptnaq ppsyasing na rhzyal", + "exif-gaincontrol": "Ppklahang sa ppcyuwagan", + "exif-contrast": "Kinmtnaq pinspngan na psyasing", + "exif-saturation": "Kinms’un", + "exif-sharpness": "Srp nes", + "exif-devicesettingdescription": "Pinqzyuwan sa sni’ niya’ sa kinblayan", + "exif-subjectdistancerange": "Lnglingay na kintwahiq zyuwaw na spzyang ppsingan squw ppsyasing", + "exif-gpslatituderef": "Pewe’ ini’ ga zanwe’", + "exif-gpslatitude": "Wetu’", + "exif-gpslongituderef": "Tngcin ini’ ga sicin", + "exif-gpslongitude": "Cingtu’", + "exif-gpsaltituderef": "Kkita’ sapspngan sa kinwagiq na kaybat", + "exif-gpsaltitude": "Kaybat", + "exif-gpssatellites": "Pptzyuwaw sa spsukuryuw na wesing", + "exif-gpsstatus": "Zyuwaw na GPS su’", + "exif-gpsmeasuremode": "Yaya’ pspngan sa sspung", + "exif-gpsdop": "Pspngan sa ini’ balay ptkari’", + "exif-gpsspeedref": "Sspngan niya’ sa kinhaylagan", + "exif-gpsimgdirectionref": "’kran na pinzga’", + "exif-gpsdestlatitude": "Wetu’ na sinngusan", + "exif-gpsdatestamp": "ryax na GPS", + "exif-keywords": "Biru’ na Galan sa hhkangi qsahuy na tenaw", + "exif-worldregioncreated": "Rhzyal na pinsyasing", + "exif-countrycreated": "Syasing pinsyasing na kokka’", + "exif-provinceorstatecreated": "Syasing pinsyasing qalang na syo krahu’", + "exif-citycreated": "Syasing pinsyasing qalang hugal", + "exif-countrydest": "Pkt’aniy quw kokka’", + "exif-provinceorstatedest": "Pkt’aniy quw Syo ini’ ga Syuw", + "exif-citydest": "Pinkaykita’ ka qalang hugal", + "exif-objectname": "Siy say", + "exif-specialinstructions": "Kinini’ ptnaq na kinblayqan knayal", + "exif-headline": "Lalu’", + "exif-credit": "Ppkbalay/Pbiq sa pincyuwagan", + "exif-source": "Tkhulan", + "exif-urgency": "Kinptqawhan", + "exif-locationdest": "Pzga’ mru’ sa rhzyal", + "exif-locationdestcode": "Aniy pinqzyu’ quw ’niwan na banggo’ nquw cyux niya’ ki’an", + "exif-objectcycle": "Hintgan zikang na meti’", + "exif-contact": "Prinrak sa ggalan kinbaq zayzyuwaw", + "exif-writer": "Sinmung miru’", + "exif-languagecode": "Kay’:", + "exif-iimversion": "ubuy gluw bniru’ na IIM", + "exif-iimcategory": "Ps’anak sa mkgluw", + "exif-iimsupplementalcategory": "Pinzbung sa ini’ pintayhuk na pintbuci", + "exif-datetimereleased": "Skayal kwara’ squliq squw", + "exif-identifier": "Biru’ na sinbbaq sa cyux naha’ ptcyuwagun", + "exif-lens": "Rawziq na syasingki’ quw pcyawganiy", + "exif-serialnumber": "Syuhaw na syasinki’", + "exif-cameraownername": "Cinsyasingki’", + "exif-label": "Qinlah lalu’", + "exif-rightscertificate": "Cinkhulan sinhuzyay sa pklahang sa kinri’ na pinhtuw biru’", + "exif-copyrighted": "Pancyuen cwangtay", + "exif-copyrightowner": "Cinpancyuen", + "exif-usageterms": "Gaga’ na binkgan quw pcyawganiy", + "exif-webstatement": "Sinbbaq sa kiri’ na pincyuwagan sa wangcalu’", + "exif-licenseurl": "’ubuy sa sswayal miq sa kinri’ na pinhtuw biru’", + "exif-morepermissionsurl": "’niwan sa bbiq kinri’ na ggalan qinbaq", + "exif-disclaimer": "Gaga’ na iyat ppanga’ sikining", + "exif-contentwarning": "Pinsbaq niya’ musa’ pinbaqun sa qsahuy nya’", + "exif-intellectualgenre": "Gluw na mmntnaq binkgan lmlamu’", + "exif-subjectnewscode": "Bango’ na ’niwan sa lalu’ na spzyang lalu’ na kkayal", + "exif-event": "Pzga’ miru’ sa zyuwaw", + "exif-organisationinimage": "Pzga’ miru’ sa pins’rux gaga’", + "exif-personinimage": "Psulung pzga’ squliq", + "exif-originalimageheight": "Kinwagiq na ini’ qtabiy na’", + "exif-originalimagewidth": "Kinglabang na ini’ qtabiy na’", + "exif-compression-1": "Ini’ aniy pkcikuy na’", + "exif-copyrighted-true": "Klhangan na Panchyen", + "exif-copyrighted-false": "Ini’ bqbaqiy ginllwan zyuwaw na cinkinri’ sa pinhtuw biru’", + "exif-unknowndate": "Ini’ bqbaqiy ginlaylwan na ryax", + "exif-orientation-1": "Mutuw galan sa puqing pspngan kwara’ na squliq", + "exif-orientation-2": "Ptbangun pssyuk", + "exif-orientation-4": "Pssyuk na ms’rux", + "exif-planarconfiguration-1": "ksu’ na pinkrrawq sa pinqthuy", + "exif-colorspace-65535": "Ini’’nblayqiy mita’ quw biru’ knita’ rawziq", + "exif-componentsconfiguration-0": "ungat", + "exif-exposureprogram-0": "Ini’ syaniy kay’ na’", + "exif-exposureprogram-1": "Szyuwi’ na qba’", + "exif-exposureprogram-2": "Galan pspngan gluw na pptzyuwaw", + "exif-exposureprogram-3": "Sspngan kinsmyax na syasingki’ quw tqs’un", + "exif-exposureprogram-4": "Kinhaylagan na pphtan psyasing", + "exif-subjectdistance-value": "$1 meta", + "exif-meteringmode-0": "Ini’ bqbaqiy ginlaylwan", + "exif-meteringmode-1": "Pinqsugan", + "exif-meteringmode-2": "Syun tay kska na ppsingan quw sqtuxan spzyang ssyan iro’ na syasing ’ musa’ cyose", + "exif-meteringmode-3": "Spot", + "exif-meteringmode-4": "Multi-Spot", + "exif-meteringmode-5": "Yaya’ na kkbalay", + "exif-meteringmode-6": "Iyat kwara’", + "exif-meteringmode-255": "Bzinah", + "exif-lightsource-0": "Ini’ bqbaqiy ginlaylwan", + "exif-lightsource-1": "Snyaxan wagi’", + "exif-lightsource-2": "Pnilaw na inkwang", + "exif-lightsource-4": "Pnilaw na pyax pyax", + "exif-lightsource-9": "Blaq kayal", + "exif-lightsource-10": "Mzyulung", + "exif-lightsource-11": "Tay minkum", + "exif-lightsource-17": "Galan pspngan pnilaw A", + "exif-lightsource-18": "Galan pspngan pnilaw B", + "exif-lightsource-19": "Galan pspngan pnilaw C", + "exif-lightsource-255": "Puqing syax na bzinah", + "exif-flash-fired-0": "Ini’ gyahiy na’ quw pnilaw na pyax pyax", + "exif-flash-fired-1": "Wal gyahan quw pnilaw na pyax pyax", + "exif-flash-mode-3": "ziro na mos’ nanak", + "exif-flash-function-1": "Ungat btthuzyay na ppilaw na pyax pyax", + "exif-flash-redeye-1": "iyat kktalah rawziq na syasing", + "exif-focalplaneresolutionunit-2": "incun", + "exif-sensingmethod-1": "Ini’ syaniy kay’ na’", + "exif-sensingmethod-7": "Kikay na kkinsa’ sa san sengse", + "exif-filesource-3": "Syasing ki’ na suwe", + "exif-scenetype-1": "Zga’ na pinsyasing", + "exif-customrendered-0": "Kwara’ hya’ ga cngsyu’", + "exif-customrendered-1": "Cngsyu’ na sinpung nanak", + "exif-exposuremode-0": "Siy psyax nanak", + "exif-exposuremode-1": "Pinspsyax na squliq", + "exif-whitebalance-0": "Mutuw niya’ white balance nanak", + "exif-whitebalance-1": "Szyuwi’ na qba’ quw white balance", + "exif-scenecapturetype-0": "Galan pspngan", + "exif-scenecapturetype-1": "Ktan na qlqalang", + "exif-scenecapturetype-2": "Syasing na squliq", + "exif-scenecapturetype-3": "Knita’ sa mlhngan na qlqalang", + "exif-gaincontrol-0": "Ungat", + "exif-gaincontrol-1": "Kcikuy cikay tmwang", + "exif-gaincontrol-2": "Kpzyux cikay tmwang", + "exif-gaincontrol-3": "Kcikuy cikay hmhuwi’", + "exif-gaincontrol-4": "Kpzyux cikay hmhuwi’", + "exif-contrast-0": "Galan pspngan", + "exif-contrast-1": "Mhnuk", + "exif-contrast-2": "lawkah/mhitu’", + "exif-saturation-0": "Galan pspngan", + "exif-saturation-1": "Kincikuy na kinms’un", + "exif-saturation-2": "Msyaw iyal kinms’un", + "exif-sharpness-0": "Galan pspngan", + "exif-sharpness-2": "lawkah/mhitu’", + "exif-subjectdistancerange-0": "Ini’ bqbaqiy ginlaylwan", + "exif-subjectdistancerange-1": "Mekro", + "exif-subjectdistancerange-2": "Sawbihan mita’", + "exif-subjectdistancerange-3": "Pktawhiqun mita’", + "exif-gpslatitude-n": "Pewe’", + "exif-gpslatitude-s": "Nanwe’", + "exif-gpslongitude-e": "Ist longzicyut", + "exif-gpslongitude-w": "Sicing", + "exif-gpsstatus-a": "Cyuw tmrang sukuryuw na’", + "exif-gpsstatus-v": "Sukuryuw squw musa’ m’ubuy", + "exif-gpsmeasuremode-2": "Sspung na 2-dimensional", + "exif-gpsmeasuremode-3": "Sspung na 3-dimensional", + "exif-gpsspeed-k": "Qutux spung ga pira’ kirometa’", + "exif-gpsspeed-m": "Qutux spung ga pira’ Mayru’", + "exif-gpsdestdistance-k": "Kirometa’", + "exif-gpsdestdistance-m": "Inri’", + "exif-gpsdestdistance-n": "Hayri’", + "exif-gpsdop-fair": "Maykura’ tay kska’ ($1)", + "exif-objectcycle-a": "Nanak sasan", + "exif-objectcycle-p": "Nanak babaw kinryax", + "exif-objectcycle-b": "Sasan ruw babaw kryaxan", + "exif-gpsdirection-t": "Spzyang balay na ’kran", + "exif-gpsdirection-m": "’kran na tiycu’", + "exif-ycbcrpositioning-1": "Kska’", + "exif-ycbcrpositioning-2": "Trnganiy magal quw ppsngan", + "exif-dc-contributor": "Minniq", + "exif-dc-date": "Ryax", + "exif-dc-publisher": "Syubay na pkbalay biru’", + "exif-dc-relation": "Ubuy na meti’", + "exif-dc-rights": "Pcingan na sinpngan", + "exif-dc-source": "Inkhulan meti’", + "exif-dc-type": "Pintbcyan sa ubuy gluw na mmntnaq sa meti’", + "exif-rating-rejected": "Wal ini’ swaliy", + "exif-iimcategory-clj": "Magal qinzqihan squw Horit", + "exif-iimcategory-fin": "Kezay squw psyubay", + "exif-iimcategory-edu": "Psbaq", + "exif-iimcategory-evn": "Qnxan", + "exif-iimcategory-hth": "Blaq hi’", + "exif-iimcategory-hum": "Zyuwna ppglgan squliq babaw cinbwananaw", + "exif-iimcategory-lab": "Mtzyuwaw na rngu’", + "exif-iimcategory-lif": "Qaynxan squw ’rngawan lmawsay", + "exif-iimcategory-pol": "Sezi’", + "exif-iimcategory-rel": "Sinhyan gaga’ squw sinhyan", + "exif-iimcategory-sci": "Kagak squw gizit na kagak", + "exif-iimcategory-soi": "Zyuwaw na Syakay", + "exif-iimcategory-spo": "Tayyok", + "exif-iimcategory-wea": "Kayal", + "exif-urgency-normal": "Galan pspngan ($1)", + "exif-urgency-low": "Rrawq ($1)", + "exif-urgency-high": "Kinwagiq ($1)", + "namespacesall": "kwara’", + "monthsall": "kwara’", + "recreate": "T’aring lawziy ps’rux", + "confirm-purge-title": "Kwagiy quw zngazyan qaniy", + "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-default": "(pinnama’ smi’ na kay’)", + "img-lang-go": "Musa’", + "ascending_abbrev": "pskkrawn paybkuw", + "descending_abbrev": "pshhyu’un paybkuw", + "table_pager_next": "Llpgan tay suruw", + "table_pager_prev": "Llpgan tay glaing", + "table_pager_first": "T’ringan balay na llpgan", + "table_pager_last": "Pucing balay llpgan", + "table_pager_limit_label": "Llpgan na kinpzyux na pezi’:", + "table_pager_limit_submit": "Pawsun", + "table_pager_empty": "Ini’ ’luwiy", + "autosumm-blank": "Pskawngaciy quw biru’ qsahuy na zngazyan", + "autosumm-newblank": "Ps’rux ungat ana nanu’ na zngazyan", + "watchlistedit-normal-title": "Sr’zyut miru’ sa kkita’ binkgan sa kktan", + "watchlistedit-normal-submit": "Laxiy quw lalu’ na kkayal", + "watchlistedit-raw-titles": "Lalu’:", + "watchlistedit-raw-submit": "Psqgiqas smbah kkita’ sa bnkuw na kktan", + "watchlistedit-clear-titles": "Lalu’:", + "watchlisttools-clear": "Laxiy kwara’ quw kkita’ squw kktan binkgan", + "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|mpkal]])", + "timezone-local": "Rhzyal tay hasa", + "version": "Ubuy gluw bbiru’ ni", + "version-skins": "Ktan tay babaw ka wayal syun qsahuy na pptzyuwaw", + "version-specialpages": "Kin ini’ ptnaq na zngazyan", + "version-variables": "Pinsbahan", + "version-antispam": "Hntuy sa kana wahiy na giway ungat zyuwaw na saysyup", + "version-other": "Bzinah", + "version-mediahandlers": "Hantora na meti’", + "version-hooks": "Hooks", + "version-hook-name": "Lalu’ napinkikil", + "version-hook-subscribedby": "Miru’ sa lalu’", + "version-no-ext-name": "[ini’ slluy ]", + "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-ext-colheader-credits": "Mniru’", + "version-poweredby-others": "bzinah", + "version-software": "Wayal syun qsahuy na pptzyuwaw", + "version-software-product": "Kinbalay", + "version-software-version": "Ubuy gluw bbiru’ ni", + "version-entrypoints": "Kkzyup URL", + "version-entrypoints-header-entrypoint": "Kkzyup", + "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", + "version-libraries-authors": "Mniru’", + "redirect-submit": "Mtzyuwaw", + "redirect-lookup": "Hmkangi’:", + "redirect-value": "Kin...:", + "redirect-user": "Mning ID", + "redirect-page": "Zngazyan na ID", + "redirect-file": "Lalu’ na tang’an", + "redirect-logid": "Bbiru’ krayryax ID", + "redirect-not-exists": "Ini' ’luwiy biru’ na llpgan", + "fileduplicatesearch": "Hkangi’ mtpanga’ na Tang’an", + "fileduplicatesearch-filename": "Lalu’ na tang’an:", + "fileduplicatesearch-submit": "Hhkangi’", + "specialpages": "Mnanak na zzngayan", + "specialpages-note-top": "Minblaq kmal", + "specialpages-group-maintenance": "Kklahang sa biru’ na spkita’ sa thawki’", + "specialpages-group-other": "Bzinah ka ini’ ptnaq na zngazyan", + "specialpages-group-login": "Mzyup / ps’rux canghaw", + "specialpages-group-users": "Pptzyuwawsquwkinri’ na ptzyuwagun", + "specialpages-group-highuse": "Zngazyan krayryax", + "specialpages-group-pages": "Binzyagan sa kktan na zngazyan", + "specialpages-group-pagetools": "Qayqaya’ na zngazyan", + "specialpages-group-wiki": "Snli’ kwara’ biru’ zyuwaw na ana nanu’ squw qayqaya’", + "blankpage": "Ungat ana nanu’ zngazyan", + "tags": "Kya rngu’ na sinbah sa qnlah lalu’", + "tag-filter": "[[Special:Tags|qinlah lalu’]]hhkangi’:", + "tag-filter-submit": "Hhkangi’", + "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|qinlah lalu’}}]]: $2)", + "tag-mw-contentmodelchange": "sbah quw pinsulung sa inrkyasan bniru’ niya’ sa qsahuy", + "tags-title": "Qinlah lalu’", + "tags-tag": "Lalu’ na qinlah biru’", + "tags-source-header": "Tkhulan", + "tags-active-header": "Gyahiy?", + "tags-hitcount-header": "Wal spyawci’na sinbah", + "tags-actions-header": "Mmtzyuwaw", + "tags-active-yes": "Aw’", + "tags-active-no": "Iyat", + "tags-source-extension": "Zwati’ quw smi’ kay’", + "tags-source-none": "Iyat sptzyuwaw", + "tags-edit": "Smr’zyut miru’", + "tags-delete": "’muyut", + "tags-activate": "gyahan", + "tags-deactivate": "phngagun", + "tags-hitcount": "min$1 {{PLURAL:$1|smbah}}", + "tags-create-heading": "Ps’rux quw giqas na lalu’ na qinlah", + "tags-create-tag-name": "Alu’ na qinlah biru’:", + "tags-create-reason": "’ringan:", + "tags-create-submit": "Ps’rux", + "tags-delete-title": "Pzyuciy qinlah biru’", + "tags-delete-reason": "’ringan:", + "tags-activate-title": "Sgyah quw qinlah na biru’", + "tags-activate-reason": "’ringan:", + "tags-activate-submit": "Gyahan", + "tags-deactivate-title": "Phngagun qinlah lalu’", + "tags-deactivate-reason": "’ringan:", + "tags-deactivate-submit": "Phngagun", + "tags-edit-title": "Sr’zyut miru’ qinlah lalu’", + "tags-edit-manage-link": "Kklahang sa lalu’ na qnlah", + "tags-edit-existing-tags-none": "Ungat", + "tags-edit-new-tags": "Giqas na qinlah lalu’:", + "tags-edit-reason": "’ringan:", + "tags-edit-success": "Wal siy glaniy kya quw sinbah.", + "comparepages": "Pspung sa zzngazyan", + "compare-page1": "Tay 1 gnyahan llpgan", + "compare-page2": "Zzngayan 2", + "compare-rev1": "Sinbah 1", + "compare-rev2": "Sinbah 2", + "compare-submit": "Pspngun", + "diff-form": "Kin’ini’ ptnaq", + "permanentlink": "Mrayrhuw na pin’ubuy", + "htmlform-required": "Llpgan qaniy hya’ ga siy kiy brwan.", + "htmlform-submit": "Pawsun", + "htmlform-reset": "Psbzinah quw walmsbah", + "htmlform-selectorother-other": "Bzinah", + "htmlform-no": "iyat", + "htmlform-yes": "Aw’", + "htmlform-cloner-create": "Pzyux na’ quw misan tnwang", + "logentry-delete-delete": "$1 {{GENDER:$2|wal laxan}}zngayan $3", + "revdelete-content-hid": "wal lqingun quw binrwan tay qsahuy", + "revdelete-content-unhid": "lzxiy quw lnqing qsahuy na bnrwan", + "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", + "log-name-managetags": "Qmlah sa lalu’ na bniru’ kklahang", + "log-name-tag": "Bniru’ sa lalu’ na qinlah", + "rightsnone": "(ungat)", + "feedback-back": "’bzinah", + "feedback-cancel": "Laxan", + "feedback-close": "Tmasuq", + "feedback-external-bug-report-button": "Kaylaniy quw kya ’zzyuwaw na gizit", + "feedback-dialog-title": "Stwaniy quw bniq su’ kay’", + "feedback-message": "Pintkaykay’:", + "feedback-subject": "Spzyang na ptzyuwaw:", + "feedback-submit": "Pawsun", + "feedback-thanks-title": "Mhyway su’!", + "feedback-useragent": "’myunaw sa pptzyuwaw:", + "searchsuggest-search": "Hhkangi’ {{SITENAME}}", + "searchsuggest-containing": "kwara’ kin na...", + "api-error-unknownerror": "Ini’ bqbaqiy ginlaylwan pin’qwan: \"$1\".", + "limitreport-walltime": "Spzyang balay pincyuwagan na zikang", + "limitreport-postexpandincludesize-value": "$1/$2 {{PLURAL:$2|bzyaqan kkayal na llpgan}}", + "limitreport-templateargumentsize": "Pspngan kinkrahu’ na chansu’ na Mopan", + "limitreport-templateargumentsize-value": "$1/$2 {{PLURAL:$2|bzyaqan kkayal na llpgan}}", + "limitreport-expansiondepth": "Spzyang balay krahu’ kinzzik na gnyahan", + "expandtemplates": "Ptgyah sa yaya’ na kkbalay nn nanu’", + "expand_templates_input": "Brwaniy quw biru’:", + "expand_templates_output": "Pcingan balay", + "expand_templates_xml_output": "pawsa’ quw XML", + "expand_templates_ok": "Wal balay", + "expand_templates_remove_comments": "Laxiy quw kmayal", + "expand_templates_preview": "Pnaynama’ mita’", + "pagelang-language": "Kay’:", + "pagelang-use-default": "Ptzyawganiy sa mnaynama’ sni’ na kay’", + "pagelang-select-lang": "Wazyaw kay’", + "pagelang-reason": "’ringan", + "pagelang-submit": "Pawsun", + "log-name-pagelang": "Bniru’ sa sinbah na kay’", + "mediastatistics": "Pinsqun plpuw sa ggalang sinbbaq na meti’", + "mediastatistics-nbytes": "{{PLURAL:$1|$1 bzyaqan kkayal na llpgan}} ($2; $3%)", + "mediastatistics-table-extensions": "Musa’ baqun sptzyuwaw na estensyong", + "mediastatistics-table-count": "Kinpzyux na Tang’an", + "mediastatistics-header-unknown": "Ini’ bqbaqiy ginlaylwan", + "mediastatistics-header-bitmap": "Syasing na pitmap", + "mediastatistics-header-audio": "Hngzyangan/ Hngya’an", + "mediastatistics-header-video": "Iga’", + "mediastatistics-header-multimedia": "Smppzyux squw zyuwaw na twometi’", + "mediastatistics-header-office": "Pankung", + "mediastatistics-header-text": "Biru’ mlmlux", + "mediastatistics-header-executable": "Blaq sptzyuwaw", + "mediastatistics-header-archive": "Wal pkcikuyun ksu’", + "mediastatistics-header-total": "Kwara’ tang’an", + "json-error-syntax": "Min’uqu’ na kkayal", + "headline-anchor-title": "’ubuy sa biru’ gnaygay sqaniy", + "special-characters-group-latin": "Biru’ na lating", + "special-characters-group-latinextended": "Pinslabang na biru’ na Latin", + "special-characters-group-ipa": "Biru’ na sinbbaq sa pinsbahan hngzyang na koksay", + "special-characters-group-symbols": "Sni’ naha’ sa gaga’ na bbiru’", + "special-characters-group-greek": "Biru’ na Grisya’", + "special-characters-group-greekextended": "Pinsglabang biru’ na Girisya’", + "special-characters-group-cyrillic": "Biru’ na Kirilis", + "special-characters-group-arabic": "Biru’ na Arabiya’", + "special-characters-group-arabicextended": "Pinsglabang biru’ na Arabiya’", + "special-characters-group-persian": "Przn", + "special-characters-group-hebrew": "Biru’ na Heburay", + "special-characters-group-bangla": "Biru’ na Bengr", + "special-characters-group-tamil": "Biru’ na tamil", + "special-characters-group-telugu": "Biru’ na Telugu’", + "special-characters-group-sinhala": "Biru’ na Sinhala", + "special-characters-group-gujarati": "Biru’ na kucyarati", + "special-characters-group-devanagari": "Tebanagari", + "special-characters-group-thai": "Biru’ na Taykok", + "special-characters-group-lao": "Biru’ na Law", + "special-characters-group-khmer": "Biru' na Khmer", + "special-characters-title-endash": "r’tung na pocehaw", + "special-characters-title-emdash": "qruzyux na phocehaw", + "special-characters-title-minus": "biru’ na sinbbaq sa hhyu’", + "mw-widgets-dateinput-no-date": "Ini’ wazyaw ryax", + "mw-widgets-mediasearch-input-placeholder": "Hkangi’ meti’", + "mw-widgets-mediasearch-noresults": "Ktan ga ungat quw pcingan balay na zyuwaw.", + "mw-widgets-titleinput-description-new-page": "ungat zzngayan", + "mw-widgets-categoryselector-add-category-placeholder": "Twangiy sa pintbcyan...", + "mw-widgets-usersmultiselect-placeholder": "Twangiy pzyux na’...", + "randomrootpage": "Tay puqing balay zngazyan nquw mutuw siy pspung sa inlungan nanak phtuw angazyan", + "log-action-filter-block": "Htzyaniy quw gluw na mmntnaq:", + "log-action-filter-delete": "’zyutan quw gluw na mmntnaq:", + "log-action-filter-import": "Pawsa’ qsahuy quw gluw na mmntnaq:", + "log-action-filter-move": "Hz’aniy quw ubuy na mtntnaq:", + "log-action-filter-patrol": "Musa’ gmawzyaw sa gluw na mmntnaq:", + "log-action-filter-protect": "Kklhangiy sa ubuy na mtntnaq na...:", + "log-action-filter-upload": "Pawsa’ sa kktan quw gluw na mmntnaq:", + "log-action-filter-all": "Kwara’ biru’ na zngyan", + "log-action-filter-block-block": "Qmhut", + "log-action-filter-block-reblock": "Smbah sa qnhut", + "log-action-filter-block-unblock": "Tmasuq qnhut", + "log-action-filter-delete-delete": "Pzyuciy quw zngazyan", + "log-action-filter-delete-delete_redir": "T’aring pawsa’ sa ’mumuk sa binrwan", + "log-action-filter-delete-restore": "Laxiy quw aki’ llaxan na zngazyan", + "log-action-filter-delete-event": "Pzyutan binrwan", + "log-action-filter-delete-revision": "Uzyut sinbah", + "log-action-filter-managetags-create": "Ps’rux lalu’ qqlah", + "log-action-filter-managetags-delete": "Pzyuciy qinlah na lalu’", + "log-action-filter-managetags-activate": "Gyahiy quw qinlah lalu’", + "log-action-filter-managetags-deactivate": "Laxiy gyahiy quw ’uzyut na qnlah biru’", + "log-action-filter-newusers-autocreate": "Siy ps’rux nanak", + "log-action-filter-patrol-patrol": "hkangyun na qba’", + "log-action-filter-patrol-autopatrol": "Siy usa’ gmawzyaw", + "log-action-filter-protect-protect": "Mlahang", + "log-action-filter-protect-modify": "Kklahang sa biru’ na sinbah", + "log-action-filter-protect-unprotect": "Tmasuq kinlahang", + "log-action-filter-protect-move_prot": "Wal shzyun quw kklahang", + "log-action-filter-rights-rights": "Sbah na qba’", + "log-action-filter-rights-autopromote": "Msbah nanak", + "log-action-filter-suppress-event": "Laxiy aniy pkita’ quw bniru’", + "log-action-filter-suppress-revision": "Sbah quw qnihut sa pkaykita’", + "log-action-filter-suppress-delete": "Laxiy pkt’aniy quw zngazyan", + "log-action-filter-upload-upload": "Misan sni’", + "log-action-filter-upload-overwrite": "T’aring lawziy pawsa’ sa kktan", + "authmanager-authplugin-setpass-failed-title": "Wal yaqih quw sinbah sa mima’", + "authmanager-authplugin-setpass-bad-domain": "Ungat zyuwaw na wangyu’.", + "authmanager-email-label": "e-meyo’", + "authmanager-email-help": "Zyusyo na e-meyo’", + "authmanager-realname-label": "Spzyang balay lalu’", + "authprovider-resetpass-skip-label": "Siy laxiy kya", + "authform-newtoken": "Ini’ pintayhuk sawsu’ na ggyah sa lnqing. $1", + "authform-wrongtoken": "Mtkari’ quw sawsu’ na ggyah sa lnqing", + "specialpage-securitylevel-not-allowed-title": "Laxiy swaliy", + "cannotauth-not-allowed-title": "Ini’ pintayhuk pcingan sinpngan na kiri’", + "changecredentials": "Sbah quw sinrhuw sinhuzyay", + "removecredentials": "Laxiy quw biru’ na sinhuyay", + "credentialsform-provider": "Minsinrhuw sinhuzyay gluw na mtntnaq:", + "credentialsform-account": "Lalu’ na canghaw", + "linkaccounts": "P’ubuy sa lalu’na canghaw", + "linkaccounts-success-text": "Wal p’ubuyquw canghaw.", + "unlinkaccounts": "Laxiy quw ’ubuy Canghaw", + "revid": "sinbah sa $1", + "pageid": "Zngazyan na ID $1" +} diff --git a/languages/i18n/te.json b/languages/i18n/te.json index f54c390056..a958a641a7 100644 --- a/languages/i18n/te.json +++ b/languages/i18n/te.json @@ -171,13 +171,7 @@ "anontalk": "చర్చ", "navigation": "మార్గదర్శకం", "and": " మరియు", - "qbfind": "వెతుకు", - "qbbrowse": "విహరించు", - "qbedit": "సవరించు", - "qbpageoptions": "ఈ పేజీ", - "qbmyoptions": "నా పేజీలు", "faq": "తరచూ అడిగే ప్రశ్నలు", - "faqpage": "Project:తరచూ అడిగే ప్రశ్నలు", "actions": "పనులు", "namespaces": "పేరుబరులు", "variants": "వివిధ రూపాలు", @@ -204,32 +198,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": "మూస పేజీని చూడండి", @@ -420,6 +404,7 @@ "userlogin-remembermypassword": "నన్ను లాగిన్ చేసే ఉంచు", "userlogin-signwithsecure": "సురక్షిత కనెక్షను వాడు", "cannotlogin-title": "లాగిన్ చెయ్యలేకున్నాం", + "cannotlogin-text": "లాగినవడం సాధ్యపడడం లేదు.", "cannotloginnow-title": "ఇప్పుడు లాగిన్ అవలేరు", "cannotloginnow-text": "$1 ను వాడుతూండగా లాగౌట్ అవలేరు.", "cannotcreateaccount-title": "ఖాతాలను సృష్టించలేము", @@ -450,6 +435,7 @@ "createacct-realname": "అసలు పేరు (ఐచ్చికం)", "createacct-reason": "కారణం", "createacct-reason-ph": "మీరు మరో ఖాతాను ఎందుకు సృష్టించుకుంటున్నారు", + "createacct-reason-help": "సృష్టించిన ఖాతాల చిట్టాలో చూపించే సందేశం", "createacct-submit": "మీ ఖాతాను సృష్టించుకోండి", "createacct-another-submit": "ఖాతాను సృష్టించు", "createacct-continue-submit": "ఖాతా సృష్టిని కొనసాగించండి", @@ -528,6 +514,10 @@ "changepassword-success": "మీ సంకేతపదం మార్చబడింది!", "changepassword-throttled": "కొద్దిసేపటిగా మీరు చాలా లాగిన్ ప్రయత్నాలు చేసారు.\nమళ్ళీ ప్రయత్నించే ముందు $1 ఆగండి.", "botpasswords": "బాట్ సంకేతపదాలు", + "botpasswords-disabled": "బాట్ సంకేతపదాలను అచేతనం చేసాం.", + "botpasswords-no-central-id": "బాఅత్ సంకేతపదాలను వాడాలంటే, మీరు ఒక కేంద్రీకృత ఖాతాలోకి లాగినవ్వాలి.", + "botpasswords-createnew": "ఓ కొత్త బాట్ సంకేతపదాన్ని సృష్టించండి", + "botpasswords-editexisting": "ఉనికిలో ఉన్న బాట్ సంకేతపదాన్ని మార్చండి", "botpasswords-label-appid": "బాట్ పేరు:", "botpasswords-label-create": "సృష్టించు", "botpasswords-label-update": "తాజాకరించు", @@ -574,6 +564,7 @@ "passwordreset-emailelement": "వాడుకరిపేరు: \n$1\n\nతాత్కాలిక సంకేతపదం: \n$2", "passwordreset-emailsentemail": "ఈ ఈమెయిలు చిరునామా మీ ఖాతాకు అనుసంధించి ఉంటే, సంకేతపదం మార్పు ఈమెయిలు పంపించబడుతుంది.", "passwordreset-emailsentusername": "ఈ వాడుకరిపేరుకు ఏదైనా ఈమెయిలు చిరునామా అనుసంధించి ఉంటే, సంకేతపదం మార్పు ఈమెయిలు పంపించబడుతుంది.", + "passwordreset-nosuchcaller": "కాలర్ ఉనికిలో లేరు: $1", "passwordreset-invalidemail": "తప్పు ఈ-మెయిలు చిరునామా", "passwordreset-nodata": "వాడుకరిపేరుగానీ, ఈ-మెయిలు చిరునామా గానీ ఇవ్వలేదు", "changeemail": "ఈ-మెయిలు చిరునామా మార్పు లేదా తొలగింపు", @@ -631,7 +622,7 @@ "missingcommentheader": "గుర్తు చేస్తున్నాం: ఈ వ్యాఖ్యకు మీరు విషయం పెట్టలేదు.\n\"$1\"ని మళ్ళీ నొక్కితే, అది లేకుండానే మీ మార్పును భద్రపరుస్తాం.", "summary-preview": "దిద్దుబాటు సారాంశం మునుజూపు:", "subject-preview": "విషయపు మునుజూపు:", - "previewerrortext": "మీ మార్పులు మునుజూపు చూడటంలో తప్పిదమయింది.", + "previewerrortext": "మీ మార్పులు మునుజూపు చూపడంలో లోపం దొర్లింది.", "blockedtitle": "వాడుకరి నిరోధించబడ్డారు", "blockedtext": "మీ వాడుకరి పేరు లేదా ఐ.పీ. చిరునామా నిరోధించబడింది.\n\nనిరోధించినది $1.\nఅందుకు ఇచ్చిన కారణం: $2.\n\n* నిరోధం మొదలైన సమయం: $8\n* నిరోధించిన కాలం: $6\n* నిరోధానికి గురైనవారు: $7\n\nఈ నిరోధంపై చర్చించేందుకు మీరు $1 ను గాని, మరెవరైనా [[{{MediaWiki:Grouppage-sysop}}|నిర్వాహకులను]] గాని సంప్రదించవచ్చు.\nమీ [[Special:Preferences|ఖాతా అభిరుచులలో]] సరైన ఈ-మెయిలు చిరునామా ఇచ్చివుండకపోయినా లేదా మిమ్మల్ని 'ఈ వాడుకరికి ఈ-మెయిలు పంపు' సౌలభ్యాన్ని వాడుకోవడం నుండి నిరోధించివున్నా మీరు ఈమెయిలు ద్వారా సంప్రదించలేరు.\nమీ ప్రస్తుత ఐ.పీ. చిరునామా $3, మరియు నిరోధపు ID #$5.\nమీ సంప్రదింపులన్నిటిలోనూ వీటిని పేర్కొనండి.", "autoblockedtext": "మీ ఐపీ చిరునామా ఆటోమాటిగ్గా నిరోధించబడింది. ఎందుకంటే ఇదే ఐపీ చిరునామాని ఓ నిరోధిత వాడుకరి ఉపయోగించారు. ఆ వాడుకరిని $1 నిరోధించారు.\nఅందుకు ఇచ్చిన కారణం ఇదీ:\n\n:$2\n\n* నిరోధం మొదలైన సమయం: $8\n* నిరోధించిన కాలం: $6\n* ఉద్దేశించిన నిరోధిత వాడుకరి: $7\n\nఈ నిరోధం గురించి చర్చించేందుకు మీరు $1 ను గానీ, లేదా ఇతర [[{{MediaWiki:Grouppage-sysop}}|నిర్వాహకులను]] గానీ సంప్రదించండి.\n\nమీ [[Special:Preferences|అభిరుచులలో]] సరైన ఈమెయిలు ఐడీని ఇచ్చి ఉంటే తప్ప, మీరు \"ఈ సభ్యునికి మెయిలు పంపు\" అనే అంశాన్ని వాడజాలరని గమనించండి. ఆ సౌలభ్యాన్ని వాడటం నుండి మిమ్మల్ని నిరోధించలేదు.\n\nమీ ప్రస్తుత ఐపీ చిరునామా $3, మరియు నిరోధపు ఐడీ: $5.\nమీ సంప్రదింపులన్నిటిలోను అన్ని పై వివరాలను ఉదహరించండి.", @@ -679,7 +670,6 @@ "explainconflict": "మీరు మార్పులు చెయ్యడం మొదలుపెట్టిన తరువాత, వేరే ఎవరో ఈ పుటని మార్పారు.\nపైన ఉన్న పాఠ్య పేటికలో ఈ పుట యొక్క ప్రస్తుతపు పాఠ్యం ఉంది.\nమీరు చేసిన మార్పులు క్రింది పాఠ్య పేటికలో చూపించబడ్డాయి.\nమీరు మీ మార్పులను ప్రస్తుతపు పాఠ్యంలో విలీనం చెయ్యవలసి ఉంటుంది.\nమీరు \"$1\"ను నొక్కినపుడు, పై పాఠ్య పేటికలో ఉన్న పాఠ్యం '''మాత్రమే''' భద్రపరచబడుతుంది.", "yourtext": "మీ పాఠ్యం", "storedversion": "భద్రపరచిన కూర్పు", - "nonunicodebrowser": "హెచ్చరిక: మీ బ్రౌజరు యూనికోడుకు అనుకూలంగా లేదు.\nపేజీలను క్షేమంగా సవరించేందుకు ఓ దారి ఉంది: ASCII యేతర కారెక్టర్లు ఎడిట్ పెట్టెలో హెక్సాడెసిమల్ కోడ్‍లుగా కనిపిస్తాయి.", "editingold": "హెచ్చ రిక: ఈ పేజీ యొక్క కాలం చెల్లిన సంచికను మీరు మరుస్తున్నారు. దీనిని భద్రపరిస్తే, ఆ సంచిక తరువాత జరిగిన మార్పులన్నీ పోతాయి.", "yourdiff": "తేడాలు", "copyrightwarning": "{{SITENAME}}కు సమర్పించే అన్ని రచనలూ $2కు లోబడి ప్రచురింపబడినట్లుగా భావించబడతాయి (వివరాలకు $1 చూడండి). మీ రచనలను ఎవ్వరూ మార్చ రాదనీ లెదా వేరే ఎవ్వరూ వాడుకో రాదని మీరు భావిస్తే, ఇక్కడ ప్రచురించకండి.
    మీ స్వీయ రచనను గాని, సార్వజనీనమైన రచననుగాని, ఇతర ఉచిత వనరుల నుండి సేకరించిన రచననుగాని మాత్రమే ప్రచురిస్తున్నానని కూడా మీరు ప్రమాణం చేస్తున్నారు. కాపీహక్కులుగల రచనను తగిన అనుమతి లేకుండా సమర్పించకండి!", @@ -769,7 +759,7 @@ "page_first": "మొదటి", "page_last": "చివరి", "histlegend": "తేడా ఎంపిక: సంచికల యొక్క రేడియో బాక్సులను ఎంచుకొని ఎంటర్‌ నొక్కండి, లేదా పైన/ కింద ఉన్న మీటను నొక్కండి.
    \nసూచిక: ({{int:cur}}) = ప్రస్తుత సంచికతో కల తేడాలు, ({{int:last}}) = ఇంతకు ముందరి సంచికతో గల తేడాలు, {{int:minoreditletter}} = చిన్న మార్పు", - "history-fieldset-title": "చరిత్ర చూడండి", + "history-fieldset-title": "కూర్పుల కోసం వెతకండి", "history-show-deleted": "తొలగించినవి మాత్రమే", "histfirst": "అతి పాతవి", "histlast": "సరికొత్త", @@ -782,7 +772,7 @@ "history-edit-tags": "ఎంచుకున్న సంస్కరణల ట్యాగులను సవరించు", "rev-deleted-comment": "(మార్పుల సంగ్రహాన్ని తొలగించారు)", "rev-deleted-user": "(వాడుకరి పేరుని తొలగించారు)", - "rev-deleted-event": "(చిట్టా వివరాలను తొలగించారు)", + "rev-deleted-event": "(చిట్టా వివరాలను తీసేసాం)", "rev-deleted-user-contribs": "[వాడుకరిపేరు లేదా ఐపీ చిరునామాని తొలగించారు - మార్పుచేర్పుల నుండి మార్పుని దాచారు]", "rev-deleted-text-permission": "ఈ పేజీ కూర్పుని తొలగించారు.\n[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} తొలగింపు చిట్టా]లో పూర్తి వివరాలు చూడవచ్చు.", "rev-deleted-text-unhide": "పేజీ యొక్క ఈ కూర్పును '''తొలగించాం'''.\n[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} తొలగింపు చిట్టా]లో వివరాలు చూడవచ్చు.\nమీరు కావాలనుకుంటే, [$1 ఈ కూర్పుని చూడవచ్చు].", @@ -857,9 +847,13 @@ "mergehistory-go": "విలీనం చెయ్యదగ్గ దిద్దుబాట్లను చూపించు", "mergehistory-submit": "కూర్పులను విలీనం చెయ్యి", "mergehistory-empty": "ఏ కూర్పులనూ విలీనం చెయ్యలేము.", - "mergehistory-done": "$1 యొక్క $3 {{PLURAL:$3|కూర్పుని|కూర్పులను}} [[:$2]] లోనికి జయప్రదంగా విలీనం చేసాం.", + "mergehistory-done": "$1 యొక్క $3 {{PLURAL:$3|కూర్పును|కూర్పులను}} [[:$2]] లోనికి విలీనం {{PLURAL:$3|చేసాం|చేసాం}}.", "mergehistory-fail": "చరితాన్ని విలీనం చెయ్యలేకపోయాం. పేజీని, సమయాలను సరిచూసుకోండి.", "mergehistory-fail-bad-timestamp": "కాలముద్ర చెల్లదు.", + "mergehistory-fail-invalid-source": "మూలపు పేజీ సరైనది కాదు.", + "mergehistory-fail-invalid-dest": "లక్ష్యిత పేజీ సరైనది కాదు.", + "mergehistory-fail-permission": "చరిత్ర విలీనానికి సరిపడా అనుమతులు లేవు.", + "mergehistory-fail-self-merge": "మూలం, లక్ష్యం పేజీలు ఒకటే.", "mergehistory-no-source": "మూలం పేజీ, $1 లేదు.", "mergehistory-no-destination": "గమ్యం పేజీ, $1 లేదు.", "mergehistory-invalid-source": "మూలం పేజీకి సరైన పేరు ఉండాలి.", @@ -915,7 +909,7 @@ "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": "మరిన్ని ఫలితాలు", @@ -935,6 +929,7 @@ "search-external": "బయటి అన్వేషణ", "searchdisabled": "{{SITENAME}} అన్వేషణ తాత్కాలికంగా పని చెయ్యడం లేదు. ఈలోగా మీరు గూగుల్‌ ఉపయోగించి అన్వేషించవచ్చు. గమనిక: గూగుల్‌ వారి {{SITENAME}} ఫలితాలు కాలదోషం పట్టి ఉండే అవకాశం ఉంది.", "search-error": "$1 కోసం వెతికేటపుడు లోపమేదో దొర్లింది.", + "search-warning": "వెతుకుతూండగా ఓ హెచ్చరిక ఎదురైంది: $1", "preferences": "అభిరుచులు", "mypreferences": "అభిరుచులు", "prefs-edits": "దిద్దుబాట్ల సంఖ్య:", @@ -954,7 +949,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": "ఇతరత్రా", @@ -1045,22 +1040,24 @@ "prefs-help-prefershttps": "ఈ అభిరుచి మీరు పైసారి లాగినైనపుడు అమలౌతుంది.", "prefswarning-warning": "మీ అభిరుచులలో మీరు చేసిన మార్పులను ఇంకా భద్రపరచలేదు. మీరు \"$1\" ను నొక్కకుండా ఈ పేజీని వదలి వెళ్తే, మీ అభిరుచులు భద్రం కావు.", "prefs-tabs-navigation-hint": "చిట్కా: ట్యాబుల జాబితాలో ఓ ట్యాబు నుండి మరోదానికి వెళ్ళేందుకు కుడి ఎడమ బాణాల కీలను వాడవచ్చు.", - "userrights": "వాడుకరి హక్కుల నిర్వహణ", + "userrights": "వాడుకరి హక్కులు", "userrights-lookup-user": "వాడుకరిని ఎంచుకోండి", "userrights-user-editname": "వాడుకరిపేరును ఇవ్వండి:", "editusergroup": "వాడుకరి గుంపులను చూపించు", "editinguser": "{{GENDER:$1|user}} వాడుకరి హక్కులను మారుస్తున్నారు [[User:$1|$1]] $2", + "viewinguserrights": "{{GENDER:$1|వాడుకరి}} [[User:$1|$1]] హక్కులను చూస్తున్నారు $2", "userrights-editusergroup": "{{GENDER:$1|వాడుకరి}} సమూహాలను మార్చండి", "userrights-viewusergroup": "{{GENDER:$1|వాడుకరి}} గుంపులను చూడండి", "saveusergroups": "{{GENDER:$1|వాడుకరి}} గుంపులను భద్రపరచు", "userrights-groupsmember": "సభ్యులు:", "userrights-groupsmember-auto": "సంభావిత సభ్యులు:", - "userrights-groups-help": "ఈ వాడుకరి ఏయే గుంపులలో ఉండాలో మీరు మార్చవచ్చు.\n* టిక్కు పెట్టివుంటే ఆ గుంపులో ఈ వాడుకరి ఉన్నట్టు.\n* టిక్కు లేకుంటే ఆ గుంపులో ఈ వాడుకరి లేనట్టు.\n* ఈ * గుర్తు ఉంటే ఒకసారి ఆ గుంపుని చేర్చాక మీరు తీసివేయలేరు, లేదా తీసివేసాక తిరిగి చేర్చలేరు.\n* ఈ # గుర్తు ఉంటే ఆ గుంపు కాలం తీరిపోయే సమయాన్ని పెంచగలరు; దాన్ని తగ్గించలేరు.", + "userrights-groups-help": "ఈ వాడుకరి ఏయే గుంపులలో ఉండాలో మీరు మార్చవచ్చు.\n* టిక్కు పెట్టివుంటే సదరు గుంపులో ఈ వాడుకరి ఉన్నట్టు.\n* టిక్కు లేకుంటే సదరు గుంపులో ఈ వాడుకరి లేనట్టు.\n* * గుర్తు ఉంటే ఒకసారి ఆ గుంపుకు చేర్చాక మీరు తీసివేయలేరు, లేదా తీసివేసాక తిరిగి చేర్చలేరు.\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": "ప్రస్తుత కాలం తీరిపోయే సమయం: $3, $2", @@ -1165,7 +1162,27 @@ "grant-group-email": "ఈమెయిలు పంపించడం", "grant-group-administration": "నిర్వాహక చర్యలు చేపట్టడం", "grant-group-private-information": "మీ గోపనీయ డేటాను చూడడం", + "grant-createaccount": "ఖాతాల సృష్టి", + "grant-createeditmovepage": "పేజీల సృష్టి, దిద్దుబాటు, తరలింపు", + "grant-delete": "పేజీలు, కూర్పులు, లాగ్ ఎంట్రీల తొలగింపు", + "grant-editinterface": "MediaWiki పేరుబరిలోను, వాడుకరి CSS/JavaScript కూ దిద్దుబాట్లు.", + "grant-editmycssjs": "వాడుకరి CSS/JavaScript దిద్దుబాటు", + "grant-editmyoptions": "మీ అభిరుచుల దిద్దుబాటు", + "grant-editmywatchlist": "మీ వీక్షణజాబితా దిద్దుబాటు", + "grant-editpage": "ఉనికిలో ఉన్న పేజీల దిద్దుబాటు", + "grant-editprotected": "సంరక్షిత పేజీల్లో దిద్దుబాట్లు", + "grant-highvolume": "అధిక మొత్తంలో దిద్దుబాట్లు", + "grant-oversight": "వాడుకరులను దాచడం, కూర్పులను అణచిపెట్టడం", + "grant-patrol": "పేజీల్లో మార్పులపై నిఘా", + "grant-privateinfo": "గోపనీయ సమాచారం అందుబాటు", + "grant-protect": "పేజీల సంరక్షణ, అరక్షణ", + "grant-rollback": "పేజీల్లో చేసిన మార్పుల తిరుగుసేత (రోల్‌బ్యాక్)", + "grant-sendemail": "ఇతర వాడుకరులకు ఈమెయిలు పంపడం", + "grant-uploadeditmovefile": "దస్త్రాల ఎక్కింపు, రీప్లేసు, తరలింపు", + "grant-uploadfile": "కొత్త దస్త్రాల ఎక్కింపు", "grant-basic": "ప్రాథమిక హక్కులు", + "grant-viewdeleted": "తొలగించిన దస్త్రాలు, పేజీలను చూడడం", + "grant-viewmywatchlist": "మీ వీక్షణజాబితాను చూడడం", "newuserlogpage": "కొత్త వాడుకరుల చిట్టా", "newuserlogpagetext": "ఇది వాడుకరి నమోదుల చిట్టా.", "rightslog": "వాడుకరుల హక్కుల మార్పుల చిట్టా", @@ -1175,6 +1192,7 @@ "action-createpage": "ఈ పేజీని సృష్టించే", "action-createtalk": "ఈ చర్చాపేజీని సృష్టించే", "action-createaccount": "ఈ వాడుకరి ఖాతాని సృష్టించే", + "action-autocreateaccount": "ఈ బయటి వాడుకరి ఖాతాను ఆటోమాటిగ్గా సృష్టించే", "action-history": "ఈ పేజీ యొక్క చరిత్రని చూడండి", "action-minoredit": "ఈ మార్పుని చిన్నదిగా గుర్తించే", "action-move": "ఈ పేజీని తరలించే", @@ -1214,10 +1232,11 @@ "action-viewmywatchlist": "మీ వీక్షణ జాబితాను చూడండి", "action-viewmyprivateinfo": "మీ గోపనీయ సమాచారాన్ని చూడండి", "action-editmyprivateinfo": "మీ గోపనీయ సమాచారాన్ని సరిదిద్దండి", - "action-editcontentmodel": "పేజీ యొక్క కంటెంటు మోడలును సవరించు", + "action-editcontentmodel": "పేజీ యొక్క కంటెంటు మోడలును సవరించే", "action-managechangetags": "ట్యాగులను చేర్చే, (అ)చేతనం చేసే", "action-applychangetags": "మీ మార్పులతో ట్యాగులను ఆపాదించే", "action-deletechangetags": "డేటాబేసు నుండి ట్యాగులను తొలగించే", + "action-purge": "ఈ పేజీని పర్జ్ చేసే", "nchanges": "{{PLURAL:$1|ఒక మార్పు|$1 మార్పులు}}", "enhancedrc-since-last-visit": "{{PLURAL:$1|చివరి సందర్శన తరువాత}}, $1", "enhancedrc-history": "చరితం", @@ -1234,33 +1253,122 @@ "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 మార్పులను}} చూపించు", + "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-filtergroup-registration": "వాడుకరి నమోదు", - "rcfilters-filter-editsbyself-label": "మీ స్వంత దిద్దుబాట్లు", - "rcfilters-filter-editsbyself-description": "మీ దిద్దుబాట్లు.", + "rcfilters-highlightmenu-help": "ఈ లక్షణాన్ని హైలైటు చేసేందుకు ఓ రంగును ఎంచుకోండి", + "rcfilters-filterlist-noresults": "వడపోతకాలేమీ కనబడలేదు", + "rcfilters-noresults-conflict": "వెతకాల్సిన పదాలు పరస్పరం ఘర్షిస్తున్నందువలన ఫలితాలేమీ రాలేదు.", + "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-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-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": "30 రోజుల కంటే ఎక్కువ పని, 500 కు పైగా దిద్దుబాట్లూ చేసిన వాడుకరులు.", + "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-logactions-description": "నిర్వాహక పనులు, ఖాతా పనులు, పేజీ తొలగింపులు, ఎక్కింపులు....", + "rcfilters-filter-categorization-description": "వర్గాల్లో చేర్చిన, తీసేసిన పేజీల రికార్డు.", + "rcfilters-filter-logactions-label": "చిట్టాల్లోకి చేరిన కార్యకలాపాలు", + "rcfilters-filter-logactions-description": "నిర్వాహక పనులు, ఖాతాల సృష్టి, పేజీ తొలగింపులు, ఎక్కింపులు...", + "rcfilters-hideminor-conflicts-typeofchange": "కొన్ని రకాల మార్పులను \"చిన్న\" మార్పులుగా సూచించ జాలరు. అంచేత ఈ వడపోత కింది మార్పు రకాల వడపోతలతో ఘర్షిస్తోంది: $1", + "rcfilters-filtergroup-lastRevision": "ఇటీవలి కూర్పులు", + "rcfilters-filter-lastrevision-label": "ఇటీవలి కూర్పు", + "rcfilters-filter-lastrevision-description": "పేజీలో ఇటీవల జరిగిన చిట్టచివరి మార్పు.", + "rcfilters-filter-previousrevision-label": "ఇటీవలి కూర్పు కాదు", + "rcfilters-filter-previousrevision-description": "\"చిట్టచివరి కూర్పు\" కాని మార్పులన్నీ.", + "rcfilters-filter-excluded": "వదిలేసినవి", + "rcfilters-tag-prefix-namespace-inverted": ":not $1", + "rcfilters-exclude-button-off": "ఎంచుకున్నవాటిని వదిలెయ్యి", + "rcfilters-exclude-button-on": "ఎంచుకున్నవాటిని వదిలేస్తున్నాం", + "rcfilters-view-advanced-filters-label": "ఉన్నత వడపోతలు", + "rcfilters-view-tags": "ట్యాగ్ ఉన్న మార్పులు", + "rcfilters-view-namespaces-tooltip": "ఫలితాలను పేరుబరి ప్రకారం వడపోయి", + "rcfilters-liveupdates-button": "లైవ్ తాజాకరణలు", + "rcfilters-liveupdates-button-title-on": "లైవ్ తాజాకరణలను ఆఫ్ చెయ్యి", + "rcfilters-liveupdates-button-title-off": "కొత్త మార్పులు, జరుగుతూండగానే చూపించు", + "rcfilters-watchlist-markseen-button": "మాఅర్పులన్నీ చూసినట్లుగా గుర్తించు", + "rcfilters-watchlist-edit-watchlist-button": "మీ వీక్షణ జాబితాను సవరించండి", "rcnotefrom": "$3, $4 తరువాత జరిగిన {{PLURAL:$5|మార్పు|మార్పులు}} కింద ఇచ్చాం ($1 దాకా చూపించాం).", - "rclistfrom": "$3, $2 కు ముందు జరిగిన మార్పులను చూపించు", + "rclistfromreset": "తేదీ ఎంపికను రీసెట్ చెయ్యి", + "rclistfrom": "$3, $2 తో మొదలుపెట్టి ఆ తరువాత జరిగిన మార్పులను చూపించు", "rcshowhideminor": "చిన్న మార్పులను $1", "rcshowhideminor-show": "చూపించు", "rcshowhideminor-hide": "దాచు", @@ -1279,7 +1387,7 @@ "rcshowhidemine": "నా మార్పులను $1", "rcshowhidemine-show": "చూపించు", "rcshowhidemine-hide": "దాచు", - "rcshowhidecategorization": "పేజి వర్గీకరణ $1", + "rcshowhidecategorization": "పేజీ వర్గీకరణ $1", "rcshowhidecategorization-show": "చూపించు", "rcshowhidecategorization-hide": "దాచు", "rclinks": "గత $2 రోజుల లోని చివరి $1 మార్పులను చూపించు", @@ -1309,6 +1417,7 @@ "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|ఈ పేజీ ఇతర పేజీల్లో చేర్చబడింది]]", + "autochange-username": "MediaWiki ఆటోమాటిక్ మార్పు", "upload": "దస్త్రపు ఎక్కింపు", "uploadbtn": "దస్త్రాన్ని ఎక్కించు", "reuploaddesc": "మళ్ళీ అప్‌లోడు ఫారంకు వెళ్ళు.", @@ -1651,7 +1760,7 @@ "wantedtemplates": "కావాల్సిన మూసలు", "mostlinked": "అధిక లింకులు చూపే పేజీలు", "mostlinkedcategories": "అధిక లింకులు చూపే వర్గాలు", - "mostlinkedtemplates": "ఎక్కువగా ఉపయోగించిన పేజీలు", + "mostlinkedtemplates": "ఎక్కువగా ట్రాన్స్‌క్లూడయిన పేజీలు", "mostcategories": "అధిక వర్గాలలో చేరిన వ్యాసాలు", "mostimages": "అధిక లింకులు గల బొమ్మలు", "mostinterwikis": "అత్యధిక అంతరవికీ లింకులు కలిగిన పేజీలు", @@ -1679,7 +1788,7 @@ "protectedpages-unknown-timestamp": "తెలియని", "protectedpages-unknown-performer": "తెలియని వాడుకరి", "protectedtitles": "సంరక్షిత శీర్షికలు", - "protectedtitles-summary": "యీ పేజీలో ప్రస్తుతానికి నిర్మాణం నిషిద్దమైన శీర్ణికలన్నీ పొందుపరచబడ్డాయి.ప్రస్తుతం ఉన్న రక్షిత పేజీలకోసం యిక్కడ చూడండి [[{{#special:ProtectedPages}}|{{int:protectedpages}}]].", + "protectedtitles-summary": "యీ పేజీలో ప్రస్తుతం సృష్టించకుండా నిరోధించబడ్డ శీర్ణికలన్నీ పొందుపరచబడ్డాయి. సంరక్షించబడ్ద పేజీలకోసం యిక్కడ చూడండి: [[{{#special:ProtectedPages}}|{{int:protectedpages}}]].", "protectedtitlesempty": "ఈ పరామితులతో ప్రస్తుతం శీర్షికలేమీ సరక్షించబడి లేవు.", "listusers": "వాడుకరుల జాబితా", "listusers-editsonly": "మార్పులు చేసిన వాడుకరులను మాత్రమే చూపించు", @@ -1707,7 +1816,7 @@ "apihelp-no-such-module": "\"$1\" మాడ్యూలు కనబడలేదు.", "apisandbox": "API ప్రయోగశాల", "apisandbox-api-disabled": "ఈ సైటులో API అచేతనమై ఉంది.", - "apisandbox-unfullscreen": "పేజీను చూపించు", + "apisandbox-unfullscreen": "పేజీని చూపించు", "apisandbox-submit": "అభ్యర్ధించు", "apisandbox-reset": "తుడిచివేయి", "apisandbox-retry": "మళ్ళీ ప్రయత్నించు", @@ -1804,7 +1913,7 @@ "listgrants-grant": "గ్రాంటు", "listgrants-rights": "హక్కులు", "trackingcategories": "పహారా కాయు వర్గాలు", - "trackingcategories-msg": "పహారా కార్యు వర్గము", + "trackingcategories-msg": "పహారా కాయు వర్గము", "trackingcategories-name": "సందేశం పేరు", "trackingcategories-desc": "వర్గపు చేర్పు క్రైటేరియా", "broken-file-category-desc": "ఈ పుటలో విరిగిన దస్త్ర లంకె ఉన్నది (దస్త్రం ఉనికిలో లేనప్పుడు దస్త్రానికి ఎంబెడ్ చేయు లంకె).", @@ -1955,13 +2064,13 @@ "protectlogpage": "సంరక్షణల చిట్టా", "protectlogtext": "ఈ క్రింద ఉన్నది పేజీల సంరక్షణలకు జరిగిన మార్పుల జాబితా.\nప్రస్తుతం అమలులో ఉన్న సంరక్షణలకై [[Special:ProtectedPages|సంరక్షిత పేజీల జాబితా]]ను చూడండి.", "protectedarticle": "\"[[$1]]\" సంరక్షించబడింది.", - "modifiedarticleprotection": "\"[[$1]]\" సరక్షణ స్థాయిని మార్చాం", - "unprotectedarticle": "\"[[$1]]\" యొక్క సంరక్షణను తొలగించారు", + "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": "\"$1\" యొక్క సంరక్షణ స్థాయి మార్పు", "protect-title-notallowed": "\"$1\" యొక్క సంరక్షణ స్థాయి", "prot_1movedto2": "$1, $2కు తరలించబడింది", "protect-badnamespace-title": "సంరక్షించజాలని పేరుబరి", @@ -1972,7 +2081,7 @@ "protectcomment": "కారణం:", "protectexpiry": "గడువు:", "protect_expiry_invalid": "గడువు సమయాన్ని సరిగ్గా ఇవ్వలేదు.", - "protect_expiry_old": "మీరిచ్చిన గడువు ప్రస్తుత సమయం కంటే ముందు ఉంది.", + "protect_expiry_old": "గడువు గత కాలంలో ఉంది.", "protect-unchain-permissions": "మరిన్ని సంరక్షణ వికల్పాలను తెరువు", "protect-text": "ఈ పెజీ '''$1''' ఎంత సంరక్షణలొ వుందో మీరు ఇక్కడ చూడవచ్చు, మార్చవచ్చు.", "protect-locked-blocked": "నిరోధించబడి ఉండగా మీరు సంరక్షణ స్థాయిని మార్చలేరు. ప్రస్తుతం '''$1''' పేజీకి ఉన్న సెట్టింగులివి:", @@ -1984,8 +2093,8 @@ "protect-level-autoconfirmed": "స్వయన్నిర్ధారిత వాడుకరులను మాత్రమే అనుమతించు", "protect-level-sysop": "నిర్వాహకులను మాత్రమే అనుమతించు", "protect-summary-cascade": "కాస్కేడింగు", - "protect-expiring": "$1 (UTC)న కాలంచెల్లుతుంది", - "protect-expiring-local": "$1న కాలంచెల్లుతుంది", + "protect-expiring": "$1 (UTC)న కాలం చెల్లుతుంది", + "protect-expiring-local": "$1న కాలం చెల్లుతుంది", "protect-expiry-indefinite": "నిరవధికం", "protect-cascade": "ఈ పేజీకి జతపరిచిన పేజీలను కూడా రక్షించు (కాస్కేడింగు రక్షణ)", "protect-cantedit": "ఈ పేజీ యొక్క సంరక్షణా స్థాయిని మీరు మార్చలేరు, ఎందుకంటే దాన్ని మార్చే అనుమతి మీకు లేదు.", @@ -2005,14 +2114,14 @@ "pagesize": "(బైట్లు)", "restriction-edit": "మార్చడం", "restriction-move": "తరలించడం", - "restriction-create": "సృష్టించు", - "restriction-upload": "ఎక్కించు", + "restriction-create": "సృష్టించడం", + "restriction-upload": "ఎక్కించడం", "restriction-level-sysop": "పూర్తి సంరక్షణ", "restriction-level-autoconfirmed": "అర్థ సంరక్షణ", "restriction-level-all": "ఏ స్థాయి అయినా", "undelete": "తుడిచివేయబడ్డ పేజీలను చూపించు", "undeletepage": "తుడిచివేయబడిన పేజీలను చూపించు, పునఃస్థాపించు", - "undeletepagetitle": "'''క్రింద చూపిస్తున్నవి [[:$1]] యొక్క తొలగించిన మార్పులు'''.", + "undeletepagetitle": "క్రింద చూపిస్తున్న వాటిలో [[:$1|$1]] యొక్క తొలగించిన కూర్పు లున్నాయి.", "viewdeletedpage": "తొలగించిన పేజీలను చూడండి", "undeletepagetext": "క్రింది {{PLURAL:$1|పేజీని|$1 పేజీలను}} తొలగించారు, కానీ పునఃస్థాపనకు వీలుగా భండాగారంలో ఉన్నాయి.\nభండాగారం నిర్ణీత వ్యవధులలో పూర్తిగా ఖాళీ చేయబడుతుంటుంది.", "undelete-fieldset-title": "కూర్పులను పునఃస్థాపించండి", @@ -2063,7 +2172,7 @@ "month": "ఈ నెల నుండి (అంతకు ముందువి):", "year": "ఈ సంవత్సరం నుండి (అంతకు ముందువి):", "sp-contributions-newbies": "కొత్త ఖాతాల యొక్క రచనలని మాత్రమే చూపించు", - "sp-contributions-newbies-sub": "కొత్తవారి కోసం", + "sp-contributions-newbies-sub": "కొత్త ఖాతాల కోసం", "sp-contributions-newbies-title": "కొత్త ఖాతాల వాడుకరుల మార్పుచేర్పులు", "sp-contributions-blocklog": "నిరోధాల చిట్టా", "sp-contributions-suppresslog": "అణచిపెట్టబడిన {{GENDER:$1|వాడుకరి}} రచనలు", @@ -2098,7 +2207,7 @@ "whatlinkshere-hideimages": "$1 దస్త్రపు లంకెలు", "whatlinkshere-filters": "వడపోతలు", "whatlinkshere-submit": "వెళ్ళు", - "autoblockid": "tanaDDu #$1", + "autoblockid": "ఆటోనిరోధం #$1", "block": "వాడుకరి నిరోధం", "unblock": "వాడుకరిపై నిరోధాన్ని తీసెయ్యండి", "blockip": "{{GENDER:$1|వాడుకరిని}} నిరోధించు", @@ -2107,9 +2216,9 @@ "ipaddressorusername": "ఐపీ చిరునామా లేదా వాడుకరిపేరు:", "ipbexpiry": "అంతమయ్యే గడువు", "ipbreason": "కారణం:", - "ipbreason-dropdown": "*సాధారణ నిరోధ కారణాలు\n** తప్పు సమాచారాన్ని చొప్పించడం\n** పేజీల్లోని సమాచారాన్ని తీసెయ్యడం\n** బయటి సైట్లకు లంకెలతో స్పాము చెయ్యడం\n** పేజీల్లోకి చెత్తను ఎక్కించడం\n** బెదిరింపు ప్రవర్తన/వేధింపులు\n** అనేక ఖాతాలను సృష్టించి దుశ్చర్యకు పాల్పడడం\n** అనుచితమైన వాడుకరి పేరు\n** అదుపు తప్పిన బాటు", + "ipbreason-dropdown": "*సాధారణ నిరోధ కారణాలు\n** తప్పు సమాచారాన్ని చొప్పించడం\n** పేజీల్లోని సమాచారాన్ని తీసెయ్యడం\n** బయటి సైట్లకు లంకెలతో స్పాము చెయ్యడం\n** పేజీల్లోకి చెత్తను ఎక్కించడం\n** బెదిరింపు ప్రవర్తన/వేధింపులు\n** అనేక ఖాతాలను సృష్టించి దుశ్చర్యకు పాల్పడడం\n** అనుచితమైన వాడుకరి పేరు", "ipb-hardblock": "లాగినై ఉన్న వాడుకరులు ఈ ఐపీ అడ్రసు నుంచి మార్పుచేర్పులు చెయ్యకుండా నిరోధించండి", - "ipbcreateaccount": "ఖాతా సృష్టింపుని నివారించు", + "ipbcreateaccount": "ఖాతా సృష్టిని నివారించు", "ipbemailban": "వాడుకరిని ఈ-మెయిల్ చెయ్యకుండా నివారించు", "ipbenableautoblock": "ఈ వాడుకరి వాడిన చివరి ఐపీ అడ్రసును, అలాగే ఆ తరువాత వాడే అడ్రసులను కూడా ఆటోమాటిగ్గా నిరోధించు", "ipbsubmit": "ఈ సభ్యుని నిరోధించు", @@ -2131,8 +2240,8 @@ "ipb-unblock": "వాడుకరి పేరుపై లేదా ఐపీ చిరునామాపై ఉన్న నిరోధాన్ని తొలగించండి", "ipb-blocklist": "అమల్లో ఉన్న నిరోధాలను చూపించు", "ipb-blocklist-contribs": "{{GENDER:$1|$1}} మార్పులు-చేర్పులు", - "ipb-blocklist-duration-left": "$1 మిగిలివున్నాయి", - "unblockip": "సభ్యునిపై నిరోధాన్ని తొలగించు", + "ipb-blocklist-duration-left": "ఇంకా $1 మిగిలి ఉంది.", + "unblockip": "వాడుకరిపై నిరోధాన్ని తొలగించు", "unblockiptext": "కింది ఫారం ఉపయోగించి, నిరోధించబడిన ఐ.పీ. చిరునామా లేదా సభ్యునికి తిరిగి రచనలు చేసే అధికారం ఇవ్వవచ్చు.", "ipusubmit": "ఈ నిరోధాన్ని తొలగించు", "unblocked": "[[User:$1|$1]]పై నిరోధం తొలగించబడింది", @@ -2183,7 +2292,7 @@ "block-log-flags-noemail": "ఈ-మెయిలుని నిరోధించాం", "block-log-flags-nousertalk": "తమ చర్చాపేజీని మార్చలేరు", "block-log-flags-angry-autoblock": "మరింత ధృడమైన స్వయంనిరోధకం సచేతనం చేయబడింది", - "block-log-flags-hiddenname": "వాడుకరిపేరుని దాచారు", + "block-log-flags-hiddenname": "వాడుకరిపేరుని దాచాం", "range_block_disabled": "శ్రేణి(రేంజి) నిరోధం చెయ్యగల నిర్వాహక అనుమతిని అశక్తం చేసాం.", "ipb_expiry_invalid": "అంతమయ్యే గడువు సరైనది కాదు.", "ipb_expiry_temp": "దాచిన వాడుకరిపేరు నిరోధాలు శాశ్వతంగా ఉండాలి.", @@ -2304,7 +2413,7 @@ "allmessages-filter": "కస్టమైజేషను స్థితిని బట్టి వడకట్టు:", "allmessages-filter-unmodified": "మార్చబడనివి", "allmessages-filter-all": "అన్నీ", - "allmessages-filter-modified": "మార్చబడినవి", + "allmessages-filter-modified": "అనువదించినవి", "allmessages-prefix": "ఉపసర్గ పై వడపోత:", "allmessages-language": "భాష:", "allmessages-filter-submit": "వెళ్ళు", @@ -3077,7 +3186,6 @@ "fileduplicatesearch-noresults": "\"$1\" అనే పేరుగల దస్త్రమేమీ కనబడలేదు.", "specialpages": "ప్రత్యేక పేజీలు", "specialpages-note-top": "సూచిక", - "specialpages-note": "* మామూలు ప్రత్యేక పుటలు.\n* నియంత్రిత ప్రత్యేక పుటలు.", "specialpages-group-maintenance": "నిర్వహణా నివేదికలు", "specialpages-group-other": "ఇతర ప్రత్యేక పేజీలు", "specialpages-group-login": "ప్రవేశించండి / ఖాతాను సృష్టించుకోండి", @@ -3154,6 +3262,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/tet.json b/languages/i18n/tet.json index 05cf3153f6..3d72f11d70 100644 --- a/languages/i18n/tet.json +++ b/languages/i18n/tet.json @@ -264,7 +264,7 @@ "page_first": "uluk", "page_last": "ikus", "histfirst": "sedu liu hotu", - "histlast": "Foun liu hotu", + "histlast": "foun liu hotu", "historyempty": "(mamuk)", "history-feed-item-nocomment": "$1 iha $2", "rev-delundel": "hatudu/subar", diff --git a/languages/i18n/tg-cyrl.json b/languages/i18n/tg-cyrl.json index 32fbc7faef..25c0457b36 100644 --- a/languages/i18n/tg-cyrl.json +++ b/languages/i18n/tg-cyrl.json @@ -12,7 +12,9 @@ "לערי ריינהארט", "아라", "Macofe", - "AryanSogd" + "AryanSogd", + "ToJack", + "Vashgird" ] }, "tog-underline": "Пайвандҳо хаткашида:", @@ -47,12 +49,13 @@ "tog-watchlisthideliu": "Пинҳон кардани вироишоти корбарони вурудшуда аз феҳристи пайгириҳо", "tog-watchlisthideanons": "Пинҳон кардани вироишоти корбарони гумном аз феҳристи пайгириҳо", "tog-watchlisthidepatrolled": "Пинҳони вироишҳои гаштхӯрда аз феҳристи пайгириҳо", + "tog-watchlisthidecategorization": "Пинҳон кардани гурӯҳбандии саҳифаҳо", "tog-ccmeonemails": "Нусхаҳои хатҳоро ба ман рои кунед, ман онҳоро ба корбарон рои мекунам", "tog-diffonly": "Муҳтавиёти саҳифаи зерин намоиш дода нашавад", "tog-showhiddencats": "Гурӯҳҳои пинҳонро намоиш бидеҳ", - "tog-norollbackdiff": "Баъд аз вогардони тафовутро нишон надеҳ", + "tog-norollbackdiff": "Баъд аз вогардонӣ тафовутро нишон надеҳ", "tog-useeditwarning": "Дар ҳолати тарки саҳифа вироиши тағйироти захиранашуда манро огаҳ кун", - "tog-prefershttps": "Ҳамеша пайвастшавии амнро дар ҳоли вуруд истифода бар", + "tog-prefershttps": "Ҳамеша истифода бурдани пайвастшавии амн дар ҳоли вуруд", "underline-always": "Доимо", "underline-never": "Ҳеҷгоҳ", "underline-default": "Пӯст ё мурургари пешфарз", @@ -77,8 +80,8 @@ "sat": "Шн", "january": "Январ", "february": "Феврал", - "march": "Март", - "april": "Апрел", + "march": "март", + "april": "апрел", "may_long": "май", "june": "Июн", "july": "Июл", @@ -87,18 +90,18 @@ "october": "Октябр", "november": "Ноябр", "december": "Декабр", - "january-gen": "Январ", - "february-gen": "Феврал", - "march-gen": "Март", - "april-gen": "Апрел", - "may-gen": "Май", - "june-gen": "Июн", - "july-gen": "Июл", - "august-gen": "Август", - "september-gen": "Сентябр", - "october-gen": "Октябр", - "november-gen": "Ноябр", - "december-gen": "Декабр", + "january-gen": "январи", + "february-gen": "феврали", + "march-gen": "марти", + "april-gen": "апрели", + "may-gen": "майи", + "june-gen": "июни", + "july-gen": "июли", + "august-gen": "августи", + "september-gen": "сентябри", + "october-gen": "октябри", + "november-gen": "ноябри", + "december-gen": "декабри", "jan": "Ян", "feb": "Фев", "mar": "Мар", @@ -123,6 +126,8 @@ "october-date": "$1 октябр", "november-date": "$1 ноябр", "december-date": "$1 декабр", + "period-am": "АМ", + "period-pm": "РМ", "pagecategories": "{{PLURAL:$1|Гурӯҳ|Гурӯҳҳо}}", "category_header": "Мақолаҳо дар гурӯҳи \"$1\"", "subcategories": "Зергурӯҳҳо", @@ -148,16 +153,10 @@ "morenotlisted": "Ин феҳрист комил нест.", "mypage": "Саҳифа", "mytalk": "Баҳс", - "anontalk": "Баҳс бо ин IP", + "anontalk": "Баҳс", "navigation": "Гаштан", "and": " ва", - "qbfind": "Ёфтан", - "qbbrowse": "Мурур", - "qbedit": "Вироиш", - "qbpageoptions": "Ин саҳифа", - "qbmyoptions": "Саҳифаҳои ман", "faq": "Саволҳои тез-тез пурсидашуда", - "faqpage": "Project:Саволҳои тез-тез пурсидашуда", "actions": "Амалкардҳо", "namespaces": "Фазоҳои ном", "variants": "Вариантҳо", @@ -182,29 +181,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": "Абзорҳо", - "userpage": "Саҳифаи корбарро бинед", - "projectpage": "Дидани саҳифаи лоиҳа", + "tool-link-userrights-readonly": "Дидани гурӯҳҳои корбар", "imagepage": "Намоиши саҳифаи парванда", "mediawikipage": "Намоиши саҳифаи акс", "templatepage": "Нигаристани саҳифаи шаблон", @@ -436,6 +426,7 @@ "retypenew": "Калимаи нави убурро такроран нависед:", "resetpass_submit": "Калимаи убурро танзим карда ба систем вуруд кунед", "changepassword-success": "Гузарвожаи шумо бо муваффақият тағйир дода шуд!", + "botpasswords-label-cancel": "Пӯшидан", "resetpass_forbidden": "Гузарвожаҳоро наметавон тағйир дод", "resetpass-no-info": "Барои дастрасии мустақим ба ин саҳифа шумо бояд ба систем ворид шуда бошед.", "resetpass-submit-loggedin": "Тағйири гузарвожа", @@ -526,7 +517,7 @@ "session_fail_preview_html": "'''Бубахшед! Имкони сабти вироиши шумо ба хотир аз даст рафтани иттилоот нишаст.'''\n\n''Бо таваҷҷӯҳ ба ин ки дар {{SITENAME}} имкони HTML хом фаъол аст, пешнамоиши саҳифа пинҳон шуда то имкони зидди ҳамалоти ҶаваСкрипт вуҷуд ндошта бошад.''\n\n'''Агар боварӣ доред, ки ин пешнамоиш як вироиши миҷоз ас, онро такрор кунед. Агар пешнамоиш натиҷае надод, аз систем хориҷ шавед ва дубора ворид шавед'''", "token_suffix_mismatch": "'''Вироишҳои шумо захира нашуд, зеро мурургари шумо навиштаҳои нуқтагузориро аз ҳам пошида аст. Вироиши шумо захира нашуд то аз вайрон шудани матни саҳифа пешгирӣ кунад.\nБаъзан ин хато вақте пайдо мешавад, ки шумо аз хизмати (web-based proxy) истифода мекунед.'''", "edit_form_incomplete": "Бархе аз қисмати форми вироиш ба пойгоҳ нарасид; дубора бисанҷед, ки вироишоти шумо дуруст аст ва дубора саъй кунед.", - "editing": "Дар ҳоли вироиш $1", + "editing": "Дар ҳоли вироиши $1", "creating": "Дар ҳоли эҷоди $1", "editingsection": "Дар ҳоли вироиши $1 (қисмат)", "editingcomment": "Дар ҳоли вироиши $1 (қисми нав)", @@ -568,7 +559,7 @@ "postedit-confirmation-saved": "Вироиши шумо захира шуд.", "edit-already-exists": "Саҳифаи нав эҷод нашуд.\nҚаблан ин саҳифа вуҷуд дорад.", "defaultmessagetext": "Матни пайёми пешфарз", - "content-model-wikitext": "викиматн", + "content-model-wikitext": "вики-матн", "content-model-text": "матни содда", "content-model-javascript": "ҶаваСкрипт", "post-expand-template-inclusion-warning": "Огоҳӣ: Шаблони дар баргирифта хеле калон аст. Баъзе аз шаблонҳо дар бар гирифта намешавад.", @@ -625,7 +616,7 @@ "revdelete-hide-user": "Номи корбар/нишонаи IP", "revdelete-hide-restricted": "Фурунишонии иттилоот барои мудирон ба ҳамроҳи дигарон", "revdelete-radio-same": "(тағйир надиҳед)", - "revdelete-radio-set": "Пинҳон", + "revdelete-radio-set": "Пинҳонкарда", "revdelete-radio-unset": "Намоён", "revdelete-suppress": "Аз дастрасии мудирон ба додаҳо низ монанди сайри корбарон ҷилавгирӣ ба амал ояд", "revdelete-unsuppress": "Хотимаи маҳдудиятҳо дар мавриди нусхаҳои интихобшуда", @@ -676,12 +667,13 @@ "titlematches": "Унвони саҳифа татбиқ мекунад", "textmatches": "Матни мақола татбиқ мекунад", "notextmatches": "Матни ҳеҷ мақолае рост намеояд", - "prevn": "қаблӣ {{PLURAL:$1|$1}}", - "nextn": "баъдӣ {{PLURAL:$1|$1}}", + "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|натиҷа|натоиҷ}} дар ҳар саҳифа", - "viewprevnext": "Намоиш ($1 {{int:pipe-separator}} $2) ($3)", + "viewprevnext": "Намоиши ($1 {{int:pipe-separator}} $2) ($3)", "searchmenu-exists": "'''Саҳифае бо номи \"[[:$1]]\" дар ин вики вуҷуд дорад.'''", "searchmenu-new": "'''Эҷоди саҳифаи \"[[:$1]]\" дар ин вики!'''", "searchprofile-articles": "Саҳифаҳои мӯҳтаво", @@ -692,9 +684,10 @@ "searchprofile-images-tooltip": "Ҷустуҷӯи парвандаҳо", "searchprofile-everything-tooltip": "Ҷустуҷӯи ҳамаи мӯҳтаво (бо ҳисоби саҳифаҳои баҳс)", "searchprofile-advanced-tooltip": "Ҷустуҷӯ дар фазоҳои номи дилхоҳ", - "search-result-size": "$1 ({{PLURAL:$2|1 калима|$2 калимаҳо}})", + "search-result-size": "$1 ({{PLURAL:$2|1 калима|$2 калима}})", "search-redirect": "(тағйири масир $1)", "search-section": "(қисмат $1)", + "search-category": "(гурӯҳи $1)", "search-suggest": "Оё шумо инро дар назар доред: $1", "search-interwiki-caption": "Лоиҳаҳои хоҳарӣ", "search-interwiki-default": "Натоиҷ аз $1:", @@ -794,6 +787,7 @@ "editusergroup": "Гуруҳҳои корбарро вироиш кунед", "editinguser": "Дар ҳоли вироиши корбар '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])", "userrights-editusergroup": "Вироиши гурӯҳҳои корбарӣ", + "userrights-viewusergroup": "Дидани гурӯҳҳои корбар", "saveusergroups": "Сабти гурӯҳҳои корбарӣ", "userrights-groupsmember": "Аъзои:", "userrights-groups-help": "Шумо метавонед гурӯҳҳое, ки корбар дар он қарор доштаро тағйир диҳед.\n* Қуттии аломатхӯрда ба ин маънӣ аст, ки корбар дар он гурӯҳ қарор дорад.\n* Қуттии аломатнахӯрда ба ин маънӣ аст, ки корбар дар он гурӯҳ қарор надорад.\n* \"*\" маънои онро дорад, ки шумо қобили ҳазф кардани гурӯҳе нестед дар ҳоле ки шумо онро илова карда бошед, ин ё он.", @@ -847,7 +841,7 @@ "right-editinterface": "Вироиши намоиши корбарӣ", "right-editusercss": "Вироиши парвандаҳои CSS дигар корбарон", "right-edituserjs": "Вироиши парвандаҳои JS дигар корбарон", - "right-rollback": "Вогардонии тези вироишҳои охирин корбаре, ки як саҳифаро вироиш кардааст", + "right-rollback": "зуд вогардонидани вироишоти корбари охирин", "right-markbotedits": "Аломат задани вироишҳои вогардонишуда ба унвони вироиши бот", "right-noratelimit": "Таъсирнопазир аз маҳдудияти суръат", "right-import": "Ворид кардани саҳифаҳо аз дигар викиҳо", @@ -860,6 +854,7 @@ "right-userrights": "Вироиши ҳамаи ихтиёроти корбарон", "right-userrights-interwiki": "Вироиши ихтиёроти корбарии корбарони дигар викиҳо", "right-siteadmin": "Бастн ва боз кардани пойгоҳи дода", + "grant-rollback": "Вогардонидани тағйироти саҳифа", "newuserlogpage": "Гузориши эҷоди корбар", "newuserlogpagetext": "Ин гузориш аз номҳои корбарии тозасохташуда аст.", "rightslog": "Гузориши ихтиёроти корбар", @@ -880,6 +875,7 @@ "action-deleterevision": "ҳазви ин нусха", "action-browsearchive": "ҷустуҷӯи саҳифаҳои ҳазвшуда", "action-undelete": "барқарор кардани ин саҳифа", + "action-rollback": "вогардонии зуди тағйирот", "action-sendemail": "фиристодани пайёмҳо", "nchanges": "$1 {{PLURAL:$1|тағйир|тағйирот}}", "enhancedrc-history": "таърих", @@ -891,26 +887,27 @@ "recentchanges-label-minor": "Ин вироиши ҷузъи аст", "recentchanges-label-bot": "Ин вироишро робот анҷом додааст", "recentchanges-label-unpatrolled": "Ин вироиш ҳанӯз гаштзанӣ нашудааст", + "rcfilters-savedqueries-cancel-label": "Лағв", "rcnotefrom": "Дар зер тағйиротҳои охирин аз $2 (то $1 нишон дода шудааст).", "rclistfrom": "Нишон додани тағйиротҳои нав сар карда аз $3 $2", "rcshowhideminor": "$1 вироишҳои хурд", - "rcshowhideminor-show": "Намоиш", - "rcshowhideminor-hide": "Пинҳон", + "rcshowhideminor-show": "Намоиш додани", + "rcshowhideminor-hide": "Пинҳон кардани", "rcshowhidebots": "$1 ботҳо", "rcshowhidebots-show": "Намоиш", - "rcshowhidebots-hide": "Пинҳон", + "rcshowhidebots-hide": "Пинҳон кардани", "rcshowhideliu": "$1 корбарони сабтиномшуда", "rcshowhideliu-show": "Намоиш", - "rcshowhideliu-hide": "Пинҳон", + "rcshowhideliu-hide": "Пинҳон кардани", "rcshowhideanons": "$1 корбарони вуруднашуда", "rcshowhideanons-show": "Намоиш", - "rcshowhideanons-hide": "Пинҳон", + "rcshowhideanons-hide": "Пинҳон кардани", "rcshowhidepatr": "$1 вироишҳои гаштӣ", "rcshowhidepatr-show": "Намоиш", - "rcshowhidepatr-hide": "Пинҳон", + "rcshowhidepatr-hide": "Пинҳон кардани", "rcshowhidemine": "$1 вироишҳои ман", "rcshowhidemine-show": "Намоиш", - "rcshowhidemine-hide": "Пинҳон", + "rcshowhidemine-hide": "Пинҳон кардани", "rclinks": "Нишон додани $1 тағйироти охирин дар $2 рӯзи охир", "diff": "фарқият", "hist": "таърих", @@ -1002,6 +999,7 @@ "upload-file-error-text": "Ҳангоми талош барои эчоди як парвандаи муваққатӣ дар коргузор, як хатои дохилӣ рух дод. Лутфан бо мудири систем тамос бигиред.", "upload-misc-error": "Хатои номаълум дар боргузорӣ", "upload-misc-error-text": "Ҳангоми боргузорӣ, хатои номаълуме рух дод. Лутфан итминнон ҳосил кунед, ки нишонаи URL мӯътабар ва қобили дастрасӣ аст, ва баъд дубора талош кунед. Агар мушкили пофишорӣ кунад, бо яке аз мудирони систем тамос бигиред.", + "upload-form-label-infoform-categories": "Гурӯҳҳо", "backend-fail-opentemp": "Парвандаи муваққатӣ боз нашуд.", "backend-fail-writetemp": "Ба парвандаи муваққатӣ сабт нашуд.", "backend-fail-closetemp": "Парвандаи муваққатиро пӯшида нашуд.", @@ -1015,6 +1013,7 @@ "license": "Иҷозатнома:", "license-header": "Иҷозатнома", "nolicense": "Ҳеҷ яке интихоб нашудааст", + "licenses-edit": "Тағйири имконоти иҷозатнома", "license-nopreview": "(Пешнамоиш вуҷуд надорад)", "upload_source_url": "(як нишони интернетии мӯътабар ва оммавӣ)", "upload_source_file": " (парвандае дар компютери шумо)", @@ -1089,17 +1088,20 @@ "randompage": "Саҳифаи тасодуфӣ", "randompage-nopages": "Ҳеҷ саҳифае дар ин фазои ном мавҷуд нест.", "randomincategory": "Саҳифаи тасодуфӣ дар гурӯҳ", + "randomincategory-category": "Гурӯҳ:", "randomincategory-submit": "Бирав", "randomredirect": "Масири тасодуфӣ", "randomredirect-nopages": "Ҳеҷ саҳифаи тағйири масире дар ин фазои ном мавҷуд нест.", - "statistics": "Омор\\Статистика", + "statistics": "Омор/Статистика", "statistics-header-pages": "Саҳифаи омор", "statistics-header-edits": "Вироиши омор", "statistics-header-users": "Омори корбарон", "statistics-header-hooks": "Дигар омор", "statistics-articles": "Саҳифаҳои мӯҳтаво", "statistics-pages": "Саҳифаҳо", + "statistics-pages-desc": "Тамоми саҳифаҳо дар ин вики-сомона (саҳифаҳои равонакунӣ, баҳсҳо ва ғ.)", "statistics-files": "Парвандаҳои боршуда", + "statistics-edits": "Шумораи вироишҳо аз замони эҷоди ин {{SITENAME}}", "statistics-users": "[[Special:ListUsers|Корбарони]] сабтиномшуда", "statistics-users-active": "Корбарони фаъол", "pageswithprop-submit": "Бирав", @@ -1113,9 +1115,9 @@ "withoutinterwiki": "Саҳифаҳои бидуни пайвандҳои забонӣ", "withoutinterwiki-summary": "Саҳифаҳои зерин пайванде ба забони дигар надоранд:", "withoutinterwiki-legend": "Пешванд", - "withoutinterwiki-submit": "Намоиш", + "withoutinterwiki-submit": "Намоиши", "fewestrevisions": "Саҳифаҳое, ки шумораи ками нусхаҳо доранд", - "nbytes": "$1 {{PLURAL:$1|байт|байтҳо}}", + "nbytes": "$1 {{PLURAL:$1|байт}}", "ncategories": "$1 {{PLURAL:$1|гурӯҳ|гурӯҳҳо}}", "nlinks": "$1 {{PLURAL:$1|пайванд|пайвандҳо}}", "nmembers": "$1 {{PLURAL:$1|узв}}", @@ -1146,6 +1148,7 @@ "deadendpagestext": "Саҳифаҳои зерин ба ҳеҷ дигар саҳифае дар {{SITENAME}} пайванд нестанд.", "protectedpages": "Саҳифаҳои ҳифзшуда", "protectedpages-indef": "Фақат ҳифзшудаҳои номуайян", + "protectedpages-noredirect": "Пинҳони саҳифаҳои равонакунӣ", "protectedpagesempty": "Дар ҳоли ҳозир ҳеҷ саҳифае муҳофизат нашудааст.", "protectedpages-page": "Саҳифа", "protectedpages-expiry": "Замони саромадан", @@ -1165,8 +1168,8 @@ "notargettitle": "Мақсаде нест", "notargettext": "Шумо ягон саҳифа ё корбареро барои иҷрои ин амал рӯи он мушаххас накардаед.", "nopagetitle": "Чунин саҳифае вуҷуд надорад", - "pager-newer-n": "{{PLURAL:$1|навтар 1|навтар $1}}", - "pager-older-n": "{{PLURAL:$1|кӯҳнатар 1|кӯҳнатар $1}}", + "pager-newer-n": "{{PLURAL:$1|1-тои навтар|$1-тои навтар}}", + "pager-older-n": "{{PLURAL:$1|1-тои кӯҳнатар|$1-тои кӯҳнатар}}", "suppress": "Назорат", "booksources": "Манбаҳои китобҳо", "booksources-search-legend": "Ҷустуҷӯи сарчашмаҳои китоб", @@ -1180,7 +1183,7 @@ "logempty": "Мавриди мутобиқ ба манзури шумо дар гузориш пайдо нашуд.", "log-title-wildcard": "Саҳифаҳоеро ҷустуҷӯ кунед, ки унвонашон бо ин матн оғоз мешаванд", "allpages": "Ҳамаи саҳифаҳо", - "nextpage": "Саҳифаи баъдина ($1)", + "nextpage": "Саҳифаи навбатӣ ($1)", "prevpage": "Саҳифаи пешина ($1)", "allpagesfrom": "Намоиши саҳифаҳо бо шурӯъ аз:", "allpagesto": "Намоиши саҳифаҳо бо поёни дар:", @@ -1190,7 +1193,7 @@ "allpagesprefix": "Намоиши саҳифаҳои дорои пешванд:", "allpagesbadtitle": "Унвони саҳифаи дода шуда номӯътабар аст, ё инки дорои пешванди байнизабонӣ ё байнивикиӣ аст. Мумкин аст аломатҳоеро дорад, ки наметавон онҳоро дар унвонҳо истифода бурд.", "allpages-bad-ns": "{{SITENAME}} дорои фазоином \"$1\" нест.", - "allpages-hide-redirects": "Пинҳони тағйироти масир", + "allpages-hide-redirects": "Пинҳони саҳифаҳои равонакунӣ", "cachedspecial-refresh-now": "Дидани охирин.", "categories": "Гурӯҳҳо", "categoriespagetext": "Гурӯҳҳои зерин дар вики вуҷуд доранд.\n[[Special:UnusedCategories|Unused categories]] are not shown here.\nAlso see [[Special:WantedCategories|wanted categories]].", @@ -1215,6 +1218,7 @@ "mailnologin": "Нишонае аз фиристанда вуҷуд надорад", "mailnologintext": "Барои фиристодани почтаи электронӣ барои корбарони дигар бояд [[Special:UserLogin|ба систем ворид шавед]] ва нишонаи почтаи электронии мӯътабар дар [[Special:Preferences|тарҷиҳоти]] худ дошта бошед.", "emailuser": "Фиристодани email ба ин корбар", + "emailuser-title-target": "Навиштани мактуб ба email-и ин корбар", "emailuser-title-notarget": "Фиристодани пайём ба корбар", "emailpagetext": "Агар ин корбар нишонаи почтаи электронии мӯътабаре дар тарҷиҳоти ворид карда бошад, форми зерин як пайғоме мефиристад.\nНишонаи почтаи электроние, ки шумо дар тарҷиҳоти корбариатон ворид кардаед, дар нишони фиристандаи нома \"From\" хоҳад омад, то ки гиранда тавонад ба шумо посух диҳад.", "defemailsubject": "Пайёми {{SITENAME}} аз корбар \"$1\"", @@ -1284,14 +1288,17 @@ "delete-edit-reasonlist": "Вироиш ҳазф далелҳо", "delete-toobig": "Ин саҳифа таърихчаи бузурге дорад, ки шомили беш аз $1 вироиш аст. Ҳазфи ин гуна саҳифаҳо барои пешгири аз шикастани тасодуфӣ дар {{SITENAME}} маҳдуд шудааст.", "delete-warning-toobig": "Ин саҳифа таърихи бузурге дорад, ки шомили беш аз $1 вироиш аст. Ҳазфи ин саҳифа метавонад ихтилол ба амалгари пойгоҳи додаи {{SITENAME}} бишавад; лутфан бо эҳтиёт иқдом кунед.", - "rollback": "Вогардонии вироишҳо", - "rollbacklink": "вогардони", + "rollback": "Вогардонидани вироишот", + "rollbacklink": "вогардонидан", + "rollbacklinkcount": "вогардонидани $1 {{PLURAL:$1|вироиш}}", + "rollbacklinkcount-morethan": "вогардонидани беш аз $1 {{PLURAL:$1|вироиш}}", "rollbackfailed": "Вогардони нашуд", "cantrollback": "Наметавон вироишро вогардонд; охирин ҳиссагузор танҳо муаллифи ин мақола аст.", - "alreadyrolled": "Охирин вироиши [[:$1]] аз тарафи [[User:$2|$2]] ([[User talk:$2|Баҳс]]) наметавон вогардонӣ кард; пеш аз ин шахси дигаре мақоларо вироиш ё вогардонӣ кардааст.\n\nОхирин вироиш аз тарафи [[User:$3|$3]] ([[User talk:$3|Баҳс]]) буд.", + "alreadyrolled": "Тағйироти охирини саҳифаи «[[:$1]]»-ро вогардонӣ кардан ғайриимкон аст, ки аз тараф [[User:$2|$2]] ([[User talk:$2|баҳс]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) иҷро шудаанд, чунки шахсе аллакай вогардонӣ ва ё таҳрираш кард.\n\nОхирин бор {{GENDER:$3|корбар}} [[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]] анҷом дода буд", "rollback-success": "Вироишҳои $1 вогардонӣ шуд; саҳифа ба вироиши $2 баргардонида шуд.", + "rollback-success-notify": "Вироишоти $1 вогардонида шуд ба охирин вироише, ки $2 анҷом дода буд. [$3 Намоиши тавофут]", "sessionfailure": "Ба назар мерасад, мушкилие дар мавриди нишасти корбарии шумо вуҷуд дорад; амали дархостшуда ба унвони иқдоми пешгирона дар баробари рабуда шудани иттилооти нишасти корбарӣ, лағв шуд. Лутфан тугмаи \"бозгашт\"-ро дар мурургари худ пахш кунед ва саҳифае, ки аз он инҷо расидаед муҷаддадан фарохонӣ кунед, сипас муҷаддадан боз саъй кунед.", "protectlogpage": "Гузориши муҳофизат", "protectlogtext": "Дар зер феҳристи қуфл карданҳо ва аз қуфл озод шуданҳо омада аст. Барои иттилооти бештар ба [[Special:ProtectedPages|феҳристи саҳифаҳои муҳофизатшуда]] нигаред.", @@ -1397,7 +1404,7 @@ "isredirect": "саҳифаи тағйири масир", "istemplate": "истифодашуда дар саҳифа", "isimage": "пайванд ба парванда", - "whatlinkshere-prev": "{{PLURAL:$1|қаблӣ|қаблӣ $1}}", + "whatlinkshere-prev": "{{PLURAL:$1|қаблӣ|$1-тои қаблӣ}}", "whatlinkshere-next": "{{PLURAL:$1|баъдӣ|баъдӣ $1}}", "whatlinkshere-links": "← пайвандҳо", "whatlinkshere-hideredirs": "$1 тағйири масир", @@ -1435,6 +1442,7 @@ "unblocked": "Дастрасии [[User:$1|$1]] боз карда шуд", "unblocked-id": "Қатъи дастрасии шумораи $1 хотима ёфт", "blocklist": "Корбарони басташуда", + "autoblocklist-submit": "Ҷустуҷӯ", "ipblocklist": "Корбарони басташуда", "ipblocklist-legend": "Ҷустуҷӯи корбари баста шуда", "blocklist-target": "Ҳадаф", @@ -1591,7 +1599,7 @@ "tooltip-pt-preferences": "Тарҷиҳоти ман", "tooltip-pt-watchlist": "Рӯйхати саҳифаҳое, ки тағйиротҳояшонро Шумо назорат мекунед", "tooltip-pt-mycontris": "Феҳристи ҳиссагузориҳои шумо", - "tooltip-pt-login": "Тавсия мешавад ки ба систем ворид шавад, лекин иҷборӣ нест.", + "tooltip-pt-login": "Тавсия мешавад ки ба система ворид шавед, лекин маҷбурӣ нест.", "tooltip-pt-logout": "Хуруҷ аз систем", "tooltip-ca-talk": "Баҳси матни таркибии ин саҳифа", "tooltip-ca-edit": "Шумо ин саҳифаро вироиш карда метавонед. Пеш аз захира кардани саҳифа пешнамоишро истифода баред.", @@ -1663,6 +1671,14 @@ "spambot_username": "Спамтозакуни МедиаВики", "spam_reverting": "Вогардони ба охирин нусхае, ки пайванде ба $1 надорад", "spam_blanking": "Ҳамаи нусхаҳои пайвандҳо $1 доштан, дар ҳоли холӣ кардан", + "pageinfo-display-title": "Сарлавҳаи намоишӣ", + "pageinfo-default-sort": "Тартиб кардан ба унвони калидӣ (пешфарз)", + "pageinfo-length": "Дарозии саҳифа (дар байт)", + "pageinfo-article-id": "Рамзи саҳифа", + "pageinfo-language": "Забони саҳифа", + "pageinfo-content-model": "Навъи таркибии саҳифа", + "pageinfo-redirects-name": "Шумораи равонакуниҳо ба ин саҳифа", + "pageinfo-redirects-value": "$1-то", "pageinfo-toolboxlink": "Иттилооти саҳифа", "pageinfo-contentpage-yes": "Бале", "pageinfo-protect-cascading-yes": "Бале", @@ -1672,7 +1688,7 @@ "markedaspatrolledtext": "Нусхаи интихобшуда ба унвони баррасишуда аломат зада шуд.", "rcpatroldisabled": "Баррасии Тағйироти Охир фаъол нест", "rcpatroldisabledtext": "Имкони Баррасии Тағйироти Охир дар ҳоли ҳозир ғайрифаъол аст.", - "markedaspatrollederror": "Аломати баррасӣ зада нашуд", + "markedaspatrollederror": "Аломати тафтишшавӣ зада нашуд.", "markedaspatrollederrortext": "Бояд як нусхаро мушаххас кунед то барчасб ба унвони баррасишуда аломат бихӯрад.", "markedaspatrollederror-noautopatrol": "Шумо наметавонед ба тағйироти анҷом шуда тавассути худатон аломати баррасӣ бизанед.", "patrol-log-page": "Гузоришҳои нигаҳбонӣ", @@ -1694,6 +1710,8 @@ "file-nohires": "Нусхаи ҳаҷман ва сифатан баландтар дастрас нест.", "svg-long-desc": "SVG парванда, исмӣ $1 × $2 пиксел, андозаи парванда: $3", "show-big-image": "Акси аслӣ", + "show-big-image-preview-differ": "Ҳаҷми пешнамоиши $3 барои файли кунунии $2: $1.", + "show-big-image-other": "Дигар {{PLURAL:$1|нусхаи|нусхаҳои}} андозавӣ: $1.", "newimages": "Намоишгоҳи парвандаҳои ҷадид", "imagelisttext": "Дар зер феҳристи '''$1''' {{PLURAL:$1|парвандаи|парвандаҳои}} ба тартиб оварда шуда, омадааст $2.", "newimages-summary": "Ин саҳифаи вижа охирин парвандаҳои боршударо намоиш медиҳад.", @@ -1831,6 +1849,8 @@ "exif-gpsdatestamp": "Таърихи ҶПС", "exif-gpsdifferential": "Тасҳеҳи ҷузъии ҶПС", "exif-keywords": "Калидвожаҳо", + "exif-languagecode": "Забон", + "exif-iimcategory": "Гурӯҳ", "exif-compression-1": "Ғайрифишурда", "exif-unknowndate": "Таърихи номаълум", "exif-orientation-1": "Оддӣ", @@ -1963,8 +1983,8 @@ "recreate": "Аз нав созед", "confirm_purge_button": "Таъйид", "confirm-purge-top": "Пок карадни нусхаи ҳофизаи ниҳонии (Cache) ин саҳифаро таъйид мекунед?", - "imgmultipageprev": "← саҳифаи пешин", - "imgmultipagenext": "саҳифаи баъд →", + "imgmultipageprev": "← саҳифаи пешина", + "imgmultipagenext": "саҳифаи баъдӣ →", "imgmultigo": "Бирав!", "imgmultigoto": "Ба саҳифаи $1 равед", "ascending_abbrev": "афзуншаванда", @@ -1980,6 +2000,9 @@ "autosumm-replace": "Ивазкунии саҳифа бо '$1'", "autoredircomment": "Тағйири масир ба [[$1]]", "autosumm-new": "Саҳифаи нав бо \"$1\" эҷод шуд", + "autosumm-newblank": "Саҳифаи холӣ эҷод шуд", + "size-bytes": "$1 {{PLURAL:$1|байт}}", + "size-pixel": "$1 {{PLURAL:$1|пиксел}}", "lag-warn-normal": "Мумкин аст тағйироти тозатар аз $1 сония дар ин феҳрист нишон дода нашавад.", "lag-warn-high": "Мумкин аст, ба хотири пасафтодагии зиёд коргузори додаҳо, тағйироти тоза аз $1 сония дар ин феҳрист нишон нашуда бошанд.", "watchlistedit-normal-title": "Вироиши феҳристи пайгириҳо", @@ -2030,6 +2053,7 @@ "version-software": "Нусхаи насбшуда", "version-software-product": "Маҳсул", "version-software-version": "Нусха", + "redirect-page": "Рамзи саҳифа", "fileduplicatesearch": "Ҷустуҷӯ барои парвандаҳои такрорӣ", "fileduplicatesearch-summary": "Ҷустуҷӯ барои парвандаҳои такрорӣ бар асоси миқдори дар ҳам шудаи онҳо сурат мегирад.", "fileduplicatesearch-filename": "Номи парванда:", @@ -2085,6 +2109,8 @@ "expand_templates_remove_comments": "Ҳазфи тавзеҳот", "expand_templates_generate_xml": "Намоиши дарахти таҷзеҳи XML", "expand_templates_preview": "Пешнамоиш", + "mediastatistics-nbytes": "{{PLURAL:$1|$1 байт}} ($2; $3%)", + "special-characters-group-cyrillic": "Сириллик", "randomrootpage": "Саҳифаи решавии тасодуфӣ", "changecredentials-submit": "Тағйири ҳисоби корбарӣ", "removecredentials-submit": "Хориҷи эътиборнома" diff --git a/languages/i18n/th.json b/languages/i18n/th.json index a6fde72fb8..6268808533 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": "ชุดอักษรแบบมีเชิง", @@ -222,7 +222,7 @@ "viewhelppage": "ดูหน้าวิธีใช้", "categorypage": "ดูหน้าหมวดหมู่", "viewtalkpage": "ดูการพูดคุย", - "otherlanguages": "ในภาษาอื่น", + "otherlanguages": "ในภาษาอื่นๆ", "redirectedfrom": "(เปลี่ยนทางจาก $1)", "redirectpagesub": "หน้าเปลี่ยนทาง", "redirectto": "เปลี่ยนทางไป:", @@ -680,7 +680,6 @@ "explainconflict": "มีผู้เปลี่ยนแปลงหน้านี้ตั้งแต่คุณเริ่มแก้ไข\nพื้นที่ข้อความส่วนบนมีข้อความหน้าที่มีอยู่ในปัจจุบัน\nการแก้ไขของคุณแสดงอยู่ในพื้นที่ข้อความส่วนล่าง\nคุณจะต้องรวมการเปลี่ยนแปลงของคุณเข้ากับข้อความที่มีอยู่\nเฉพาะข้อความในพื้นที่ข้อความส่วนบนเท่านั้นที่จะถูกบันทึก เมื่อกด \"$1\"", "yourtext": "ข้อความของคุณ", "storedversion": "รุ่นที่เก็บไว้", - "nonunicodebrowser": "คำเตือน: เบราว์เซอร์ของคุณไม่สนับสนุนยูนิโคด \nการแก้ไขไปพลางจะทำให้คุณแก้ไขหน้าได้อย่างปลอดภัย: อักขระที่มิใช่ ASCII จะปรากฏในกล่องแก้ไขเป็นรหัสฐานสิบหก", "editingold": "คำเตือน: คุณกำลังแก้ไขรุ่นที่ล้าสมัยของหน้านี้ ถ้าคุณบันทึก การเปลี่ยนแปลงใด ๆ หลังรุ่นนี้จะหาย", "yourdiff": "ความแตกต่าง", "copyrightwarning": "โปรดระลึกว่างานเขียนทั้งหมดใน {{SITENAME}} ถือว่าเผยแพร่ภายใต้ $2 (ดูรายละเอียดทาง $1)\nหากคุณไม่ต้องการให้งานของคุณถูกแก้ไขและกระจายได้ตามใจ ก็อย่าส่งเข้ามา
    \nนอกจากนี้ คุณยังสัญญาเราว่าคุณเขียนงานด้วยตนเอง หรือคัดลอกจากสาธารณสมบัติหรือทรัพยากรเสรีที่คล้ายกัน\nอย่าส่งงานมีลิขสิทธิ์โดยไม่ได้รับอนุญาต!", @@ -718,7 +717,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 +731,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": "หน้าที่มีการเรียกใช้ฟังก์ชันแจงส่วนมากเกินไป", @@ -754,8 +754,8 @@ "undo-failure": "การแก้ไขนี้ไม่สามารถย้อนกลับได้ เนื่องจากขัดแย้งกับการแก้ไขระหว่างกลาง", "undo-norev": "ไม่สามารถย้อนการแก้ไขนี้กลับ เพราะไม่มีหรือถูกลบไปแล้ว", "undo-nochange": "ดูเหมือนว่าการแก้ไขดังกล่าวถูกย้อนกลับแล้ว", - "undo-summary": "ทำกลับรุ่นแก้ไข $1 โดย [[Special:Contributions/$2|$2]] ([[User talk:$2|พูดคุย]])", - "undo-summary-username-hidden": "ทำกลับรุ่นแก้ไข $1 โดยผู้ใช้ไม่ระบุชื่อ", + "undo-summary": "ย้อนรุ่น $1 ที่ [[Special:Contributions/$2|$2]] ([[User talk:$2|คุย]]) สร้าง", + "undo-summary-username-hidden": "ย้อนการแก้ไข $1 ที่สร้างโดยผู้ใช้ปกปิดชื่อ", "cantcreateaccount-text": "การสร้างบัญชีใหม่จากที่อยู่ไอพีนี้ ('''$1''') ถูกระงับโดย [[User:$3|$3]]\n\nเหตุผลที่ $3 ให้ไว้ คือ ''$2''", "cantcreateaccount-range-text": "การสร้างบัญชีจากเลขที่อยู่ไอพีในช่วง $1 ซึ่งรวมเลขที่อยู่ไอพีของคุณ ($4) ถูกบล็อกโดย [[User:$3|$3]] \n\nเหตุผลที่ $3 ชี้แจง คือ $2", "viewpagelogs": "ดูปูมของหน้านี้", @@ -938,7 +938,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 +977,7 @@ "prefs-email": "ตัวเลือกอีเมล", "prefs-rendering": "การแสดงผล", "saveprefs": "บันทึก", - "restoreprefs": "คืนการตั้งค่าโดยปริยายทั้งหมด (ในทุกส่วน)", + "restoreprefs": "คืนการตั้งค่าปริยายทั้งหมด (ในทุกส่วน)", "prefs-editing": "การแก้ไข", "searchresultshead": "ค้นหา", "stub-threshold": "ความยาวของหน้าที่ใช้เป็นเส้นแบ่งในการระบุหน้าโครง เพื่อจะให้มีการจัดรูปแบบเฉพาะตัว สำหรับลิงก์ที่โยงมายังโครง ($1):", @@ -992,7 +992,7 @@ "savedrights": "บันทึกกลุ่มผู้ใช้ของ {{GENDER:$1|$1}} แล้ว", "timezonelegend": "เขตเวลา:", "localtime": "เวลาท้องถิ่น:", - "timezoneuseserverdefault": "ใช้ค่าโดยปริยายของวิกิ ($1)", + "timezoneuseserverdefault": "ใช้ค่าปริยายของวิกิ ($1)", "timezoneuseoffset": "อื่น ๆ (ระบุส่วนต่างเวลา)", "servertime": "เวลาเซิร์ฟเวอร์:", "guesstimezone": "เรียกค่าจากเบราว์เซอร์", @@ -1009,12 +1009,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 +1272,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 +1284,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 +1298,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 +1482,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 ของไฟล์ เพื่อใช้เปรียบเทียบ", @@ -1713,7 +1716,7 @@ "protectedpages-cascade": "เฉพาะการล็อกแบบต่อเรียง", "protectedpages-noredirect": "ซ่อนการเปลี่ยนทาง", "protectedpagesempty": "ขณะนี้ไม่มีหน้าถูกล็อกตามพารามิเตอร์เหล่านี้", - "protectedpages-timestamp": "ตราเวลา", + "protectedpages-timestamp": "วัน-เวลา", "protectedpages-page": "หน้า", "protectedpages-expiry": "หมดอายุ", "protectedpages-performer": "ผู้ใช้ที่ล็อก", @@ -2128,13 +2131,13 @@ "nolinkshere": "ไม่มีหน้าใดลิงก์มา [[:$1]]", "nolinkshere-ns": "ไม่มีหน้าใดลิงก์มา [[:$1]] ในเนมสเปซที่เลือก", "isredirect": "หน้าเปลี่ยนทาง", - "istemplate": "รวมอยู่", + "istemplate": "ใช้แม่แบบ", "isimage": "ลิงก์ไฟล์", "whatlinkshere-prev": "{{PLURAL:$1|ก่อนหน้า|ก่อนหน้า $1}}", "whatlinkshere-next": "{{PLURAL:$1|ถัดไป|ถัดไป $1}}", "whatlinkshere-links": "← ลิงก์", "whatlinkshere-hideredirs": "$1การเปลี่ยนทาง", - "whatlinkshere-hidetrans": "$1ถูกรวมอยู่", + "whatlinkshere-hidetrans": "$1การใช้แม่แบบ", "whatlinkshere-hidelinks": "$1ลิงก์", "whatlinkshere-hideimages": "$1ลิงก์ไฟล์", "whatlinkshere-filters": "ตัวกรอง", @@ -2186,7 +2189,7 @@ "blocklist-tempblocks": "ซ่อนการบล็อกชั่วคราว", "blocklist-addressblocks": "ซ่อนการบล็อกไอพีเดียว", "blocklist-rangeblocks": "ซ่อนการบล็อกช่วง", - "blocklist-timestamp": "ตราเวลา", + "blocklist-timestamp": "วัน-เวลา", "blocklist-target": "เป้าหมาย", "blocklist-expiry": "หมดอายุ", "blocklist-by": "ผู้ดูแลระบบที่บล็อก", @@ -2414,7 +2417,7 @@ "tooltip-ca-edit": "แก้ไขหน้านี้", "tooltip-ca-addsection": "เริ่มส่วนใหม่", "tooltip-ca-viewsource": "หน้านี้ถูกล็อก \nแต่ยังดูโค้ดได้", - "tooltip-ca-history": "รุ่นที่แล้วของหน้านี้", + "tooltip-ca-history": "รุ่นก่อนๆ ของหน้านี้", "tooltip-ca-protect": "ล็อกหน้านี้", "tooltip-ca-unprotect": "เปลี่ยนการป้องกันหน้านี้", "tooltip-ca-delete": "ลบหน้านี้", @@ -2504,12 +2507,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 +2529,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": "สารสนเทศหน้า", @@ -2929,7 +2933,7 @@ "table_pager_empty": "ไม่มีผลลัพธ์", "autosumm-blank": "ทำหน้าว่าง", "autosumm-replace": "แทนที่เนื้อหาด้วย \"$1\"", - "autoredircomment": "เปลี่ยนทางหน้าไป [[$1]]", + "autoredircomment": "เปลี่ยนทางหน้าไปยัง [[$1]]", "autosumm-new": "สร้างหน้าด้วย \"$1\"", "autosumm-newblank": "สร้างหน้าว่าง", "size-bytes": "$1 ไบต์", @@ -3025,7 +3029,6 @@ "fileduplicatesearch-noresults": "ไม่พบไฟล์ที่มีชื่อ \"$1\"", "specialpages": "หน้าพิเศษ", "specialpages-note-top": "คำอธิบายสัญลักษณ์", - "specialpages-note": "* หน้าพิเศษปกติ\n* หน้าพิเศษที่ถูกจำกัด", "specialpages-group-maintenance": "รายงานการบำรุงรักษา", "specialpages-group-other": "หน้าพิเศษอื่น ๆ", "specialpages-group-login": "ล็อกอิน / สร้างบัญชี", @@ -3074,6 +3077,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..aab3113af3 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", @@ -1774,6 +1777,7 @@ "sp-contributions-search": "Maghanap ng ambag", "sp-contributions-username": "IP Address o bansag:", "sp-contributions-toponly": "Ipakita lang ang mga pamamatnugot na mga huling rebisyon", + "sp-contributions-newonly": "Ipakita lang ang mga pamamatnugot na mga nalikhang pahina", "sp-contributions-submit": "Hanapin", "sp-contributions-explain": "", "whatlinkshere": "Mga nakaturo dito", @@ -2106,6 +2110,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 +2844,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 +2890,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 +2962,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 5ab3d1fec6..7e3079cdc6 100644 --- a/languages/i18n/tr.json +++ b/languages/i18n/tr.json @@ -95,7 +95,8 @@ "Asmen", "Stephanecbisson", "Alerque", - "Bulgu" + "Bulgu", + "Botansahin" ] }, "tog-underline": "Bağlantıların altını çizme:", @@ -125,7 +126,7 @@ "tog-shownumberswatching": "İzleyen kullanıcı sayısını göster", "tog-oldsig": "Mevcut imzanız:", "tog-fancysig": "İmzayı viki metni olarak (otomatik bağlantı olmadan) işle", - "tog-uselivepreview": "Canlı önizleme kullan", + "tog-uselivepreview": "Sayfayı yeniden yüklemeden önizlemeleri göster", "tog-forceeditsummary": "Boş bir düzenleme özeti girdiğimde bana sor", "tog-watchlisthideown": "Düzenlemelerimi izleme listesinde gizle", "tog-watchlisthidebots": "Bot düzenlemelerini izleme listesinde gizle", @@ -752,7 +753,6 @@ "explainconflict": "Siz sayfayı değiştirirken başka biri de değişiklik yaptı.\nYukarıdaki yazı sayfanın şu anki halini göstermektedir.\nSizin değişiklikleriniz alta gösterilmiştir. Son değişiklerinizi yazının içine eklemeniz gerekecektir.\n\"$1\"e bastığınızda '''sadece''' yukarıdaki yazı kaydedilecektir.", "yourtext": "Sizin metniniz", "storedversion": "Kaydedilmiş metin", - "nonunicodebrowser": "'''UYARI: Tarayıcınız unicode uyumlu değil.\nSayfaları güvenle değiştirmenize izin vermek için: ASCII olmayan karakterler değiştirme kutusunda onaltılık kodlar olarak görünecektir.'''", "editingold": "'''Uyarı: Sayfanın eski bir sürümünde değişiklik yapmaktasınız.'''\nKaydettiğinizde bu tarihli sürümden günümüze kadar olan değişiklikler yok olacaktır.", "yourdiff": "Karşılaştırma", "copyrightwarning": "'''Lütfen dikkat:''' {{SITENAME}} sitesine yapılan bütün katkılar $2 sözleşmesi kapsamındadır (ayrıntılar için $1'a bakınız).\nYaptığınız katkının başka katılımcılar tarafından acımasızca değiştirilmesini ve sınırsızca başka yerlere dağıtılmasını istemiyorsanız, katkıda bulunmayınız.
    \nAyrıca buraya katkıda bulunarak, bu katkının kendiniz tarafından yazıldığına ya da kamuya açık bir kaynaktan ya da başka bir özgür/ücretsiz kaynaktan kopyalandığına güvence vermiş oluyorsunuz. '''Buraya, telif sahibinin izni olmadan telif hakkı ile korunan eserleri eklemeyiz! '''", @@ -1331,7 +1331,10 @@ "recentchanges-legend-heading": "Gösterge:", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (ayrıca [[Special:NewPages|yeni sayfalar listesine]] bakınız)", "recentchanges-submit": "Göster", + "rcfilters-group-results-by-page": "Sayfalandırılmış grup sonuçları", + "rcfilters-grouping-title": "Gruplaştırma", "rcfilters-activefilters": "Etkin süzgeçler", + "rcfilters-limit-shownum": "Sonuncuyu göster{{ÇOĞUL:$1|}}$1 değiştir $1 değişiyor}}", "rcfilters-restore-default-filters": "Varsayılan süzgeçleri geri getir", "rcfilters-clear-all-filters": "Tüm süzgeçleri temizle", "rcfilters-search-placeholder": "Son değişiklikleri filtrele (gözatın veya yazmaya başlayın)", @@ -1344,19 +1347,16 @@ "rcfilters-highlightmenu-title": "Bir renk seçin", "rcfilters-highlightmenu-help": "Bu özelliği vurgulamak için bir renk seçin", "rcfilters-filterlist-noresults": "Süzgeç bulunamadı", - "rcfilters-filtergroup-registration": "Kullanıcı kaydı", - "rcfilters-filter-registered-label": "Kayıtlı", - "rcfilters-filter-registered-description": "Oturum açmış editörler.", - "rcfilters-filter-unregistered-label": "Kayıtsız", - "rcfilters-filter-unregistered-description": "Oturum açmamış editörler.", "rcfilters-filtergroup-authorship": "Düzenleme sahipliği", "rcfilters-filter-editsbyself-label": "Senin değişiklikleriniz", "rcfilters-filter-editsbyself-description": "Kendi katkılarınız.", "rcfilters-filter-editsbyother-label": "Başkalarının düzenlemeleri", "rcfilters-filter-editsbyother-description": "Kendi düzenlemeleriniz hariç bütün düzenlemeler.", "rcfilters-filtergroup-userExpLevel": "Deneyim düzeyi (yalnızca kayıtlı kullanıcılar için)", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Bu süzgeç etkin değildir, çünkü yalnızca kayıtlı kullanıcıları bulmaktadır, yani \"Kayıtsız\" süzgeci etkisini ortadan kaldırmaktadır.", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "\"Kayıtsız\" süzgeci bir veya daha fazla Deneyim süzgeciyle çakışmaktadır. Deneyim süzgeçleri yalnızca kayıtlı kullanıcıları bulmaktadır. Çakışan süzgeçler yukarıda etkin değil şeklinde işaretlenmiştir.", + "rcfilters-filter-user-experience-level-registered-label": "Kayıtlı", + "rcfilters-filter-user-experience-level-registered-description": "Oturum açmış editörler.", + "rcfilters-filter-user-experience-level-unregistered-label": "Kayıtsız", + "rcfilters-filter-user-experience-level-unregistered-description": "Oturum açmamış editörler.", "rcfilters-filter-user-experience-level-newcomer-label": "Yeni gelenler", "rcfilters-filter-user-experience-level-newcomer-description": "10'dan az düzenleme ve 4 günden az etkinlik.", "rcfilters-filter-user-experience-level-learner-label": "Öğreniciler", @@ -1387,6 +1387,7 @@ "rcfilters-filter-categorization-description": "Kategorilere eklenen veya kaldırılan sayfaların kayıtları.", "rcfilters-filter-logactions-label": "Günlüğü tutulan işlemler", "rcfilters-filter-logactions-description": "Hizmetli işlemleri, hesap oluşturmalar, sayfa silmeler, yüklemeler....", + "rcfilters-view-advanced-filters-label": "Gelişmiş filtreler", "rcnotefrom": "$3, $4 tarihinden itibaren yapılan {{PLURAL:$5|değişiklik|değişiklik}} aşağıdadır ($1 tarhine kadar olanlar gösterilmektedir).", "rclistfrom": "$3 $2 tarihinden itibaren yeni değişiklikleri göster", "rcshowhideminor": "Küçük değişiklikleri $1", @@ -1444,7 +1445,7 @@ "upload_directory_read_only": "Dosya yükleme dizinine ($1) web sunucusunun yazma izni yok.", "uploaderror": "Yükleme hatası", "upload-recreate-warning": "'''Uyarı: Bu adı taşıyan bir dosya silindi veya taşındı.'''\n\nBu sayfanın silme ve taşıma günlüğü kolaylık için burada sağlanmıştır:", - "uploadtext": "Dosya yüklemek için aşağıdaki formu kullanın.\nÖnceden yüklenmiş dosyaları görmek ya da aramak için [[Special:FileList|yüklenmiş dosyalar listesine]] bakın, (tekrar) yüklenenler [[Special:Log/upload|yükleme günlüğü]]nde, silinenler [[Special:Log/delete|silinme günlüğü]]nde tutulumaktadır.\n\nBir sayfaya dosya koymak için bağlantınızda aşağıdaki formlardan birini kullanın;\n* Dosyanın tam sürümünü kullanmak için: '''[[{{ns:file}}:Dosya.jpg]]'''\n* Sol kenarda bir kutu içinde, altında tanım olarak 'alt metin' ile, 200 piksel genişiğindeki sürümü kullanmak için: '''[[{{ns:file}}:Dosya.png|200px|thumb|left|alt metin]]'''\n* Dosyayı göstermeden, dosyaya direk bağlantı vermek için: '''[[{{ns:media}}:Dosya.ogg]]'''", + "uploadtext": "Dosya yüklemek için aşağıdaki formu kullanın.\nÖnceden yüklenmiş dosyaları görmek ya da aramak için [[Special:FileList|yüklenmiş dosyalar listesine]] bakın, (tekrar) yüklenenler [[Special:Log/upload|yükleme günlüğü]]nde, silinenler [[Special:Log/delete|silinme günlüğü]]nde tutulmaktadır.\n\nBir sayfaya dosya koymak için bağlantınızda aşağıdaki formlardan birini kullanın;\n* Dosyanın tam sürümünü kullanmak için: '''[[{{ns:file}}:Dosya.jpg]]'''\n* Sol kenarda bir kutu içinde, altında tanım olarak 'alt metin' ile, 200 piksel genişiğindeki sürümü kullanmak için: '''[[{{ns:file}}:Dosya.png|200px|thumb|left|alt metin]]'''\n* Dosyayı göstermeden, dosyaya direkt bağlantı vermek için: '''[[{{ns:media}}:Dosya.ogg]]'''", "upload-permitted": "İzin verilen dosya {{PLURAL:$2|türü|türleri}}: $1.", "upload-preferred": "Tercih edilen dosya {{PLURAL:$2|türü|türleri}}: $1.", "upload-prohibited": "Yasaklanan dosya {{PLURAL:$2|türü|türleri}}: $1.", @@ -2616,7 +2617,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)", @@ -3247,7 +3248,7 @@ "fileduplicatesearch-noresults": "\"$1\" isminde hiç dosya bulunamadı.", "specialpages": "Özel sayfalar", "specialpages-note-top": "Gösterge", - "specialpages-note": "* Normal özel sayfalar.\n* Kısıtlı özel sayfalar.", + "specialpages-note-restricted": "* Normal özel sayfalar.\n* Kısıtlanmış özel sayfalar.", "specialpages-group-maintenance": "Bakım raporları", "specialpages-group-other": "Diğer özel sayfalar", "specialpages-group-login": "Oturum aç / hesap edin", @@ -3360,6 +3361,13 @@ "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": "Farklar", + "diff-form-oldid": "Eski sürüm kimliği (isteğe bağlı)", + "diff-form-revid": "Farkın sürüm kimliği", + "diff-form-submit": "Farkları göster", + "permanentlink": "Kalıcı bağlantı", + "permanentlink-revid": "Sürüm kimliği", + "permanentlink-submit": "Sürüme git", "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 e771d78afe..73dcdec486 100644 --- a/languages/i18n/tt-cyrl.json +++ b/languages/i18n/tt-cyrl.json @@ -600,7 +600,6 @@ "explainconflict": "Сез бу битне төзәткән вакытта кемдер аңа үзгәрешләр кертте.\nӨстәге тәрәзәдә Сез хәзерге текстны күрәсез.\nАстагы тәрәзәдә Сезнең вариант урнашкан.\nЭшләгән үзгәртүләрегезне астагы тәрәзәдән өстәгенә күчерегез.\n«$1» төймәсенә баскач өстәге битнең тексты сакланаячак.", "yourtext": "Сезнең текст", "storedversion": "Сакланган юрама", - "nonunicodebrowser": "'''Кисәтү: Сезнең браузер Юникод кодлавын танымый.'''\nҮзгәртү вакытында ASCII булмаган символлар махсус уналтылы кодларга алыштырылачак.", "editingold": "'''Кисәтү: Сез битнең искергән юрамасын үзгәртәсез.'''\nСаклау төймәсенә баскан очракта яңа юрамалардагы үзгәртүләр югалачак.", "yourdiff": "Аермалар", "copyrightwarning": "Бөтен өстәмәләр һәм үзгәртүләр $2 (карагыз: $1) лицензиясе шартларында башкарыла дип санала.\nӘгәр аларның ирекле таратылуын һәм үзгәртелүен теләмәсәгез, монда өстәмәвегез сорала.
    \nСез өстәмәләрнең авторы булырга яисә мәгълүматның ирекле чыганаклардан алынуын күрсәтергә тиеш.
    \n'''МАХСУС РӨХСӘТТӘН БАШКА АВТОРЛЫК ХОКУКЫ БУЕНЧА САКЛАНУЧЫ МӘГЪЛҮМАТЛАР УРНАШТЫРМАГЫЗ!'''", @@ -625,7 +624,7 @@ "permissionserrorstext": "Түбәндәге {{PLURAL:$1|1=сәбәп|сәбәпләр}} аркасында сез бу гамәлне башкара алмыйсыз:", "permissionserrorstext-withaction": "$2 гамәлен башкара алмыйсыз. {{PLURAL:$1|1=Сәбәбе|Сәбәпләре}}:", "recreate-moveddeleted-warn": "'''Игътибар: Сез бетерелгән бит урынына яңа бит ясамакчы буласыз.'''\n\nСезгә чыннан да бу битне яңадан ясау кирәкме?\nТүбәндә битнең бетерү һәм күчерү көндәлеге китерелә:", - "moveddeleted-notice": "Бу бит бетерелгән иде.\nТүбәндә бетерелү һәм күчерелү көндәлекне китерелә.", + "moveddeleted-notice": "Бу бит бетерелгән.\nТүбәндә бу битнең бетерелү, якланышы һәм күчерелү көндәлекләре китерелә.", "log-fulllog": "Көндәлекне тулысынча карау", "edit-hook-aborted": "Үзгәртү махсус процедура тарафыннан кире кагыла.\nСәбәпләре китерелми.", "edit-gone-missing": "Битне яңартып булмый.\nУл бетерелгән булырга мөмкин.", @@ -977,6 +976,7 @@ "recentchanges": "Соңгы үзгәртүләр", "recentchanges-legend": "Соңгы үзгәртүләр көйләүләре", "recentchanges-summary": "Төрле битләрдә эшләнгән соңгы үзгәртүләр исемлеге.", + "recentchanges-noresult": "Сайланган чорда күрсәтелгән шартларга туры килүче төзәтмәләр юк.", "recentchanges-feed-description": "Бу агымда соңгы үзгәртүләрне күзәтү.", "recentchanges-label-newpage": "Бу үзгәртү белән яңа бит төзелгән", "recentchanges-label-minor": "Бу кече үзгәртү", @@ -986,17 +986,50 @@ "recentchanges-legend-heading": "Аңлатма:", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (шулай ук [[Special:NewPages|яңа битләр исемлеген]] карагыз)", "recentchanges-submit": "Күрсәт", - "rcfilters-quickfilters": "Сакланган филтр көйләнмәләре", + "rcfilters-activefilters": "Актив фильтрлар", + "rcfilters-limit-title": "Күрсәтү өчен үзгәртүләр", + "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-filter-registered-label": "Теркәлгән", - "rcfilters-filter-registered-description": "Теркәлгән мөхәррирләр.", + "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", @@ -1740,15 +1773,22 @@ "pageinfo-article-id": "Бит идентификаторы", "pageinfo-language": "Битнең теле", "pageinfo-language-change": "үзгәртү", + "pageinfo-content-model": "Бит эчтәлегенең моделе", "pageinfo-content-model-change": "үзгәртү", + "pageinfo-robot-policy": "Эзләү роботлары тарафыннан индексацияләнү", "pageinfo-robot-index": "Рөхсәт", "pageinfo-robot-noindex": "Рөхсәтсез", + "pageinfo-watchers": "Күзәтүчеләр саны", + "pageinfo-few-watchers": "$1 әзрәк {{PLURAL:$1|күзәтүче}}", + "pageinfo-redirects-name": "Бу биткә юнәлтүләр саны", "pageinfo-firstuser": "Битне төзүче", "pageinfo-firsttime": "Битне төзү датасы", "pageinfo-lastuser": "Соңгы мөхәррирләүче", "pageinfo-lasttime": "Соңгы үзгәртү датасы", "pageinfo-edits": "Гомуми төзәтүләр саны", "pageinfo-authors": "Гомуми авторлар саны", + "pageinfo-recent-edits": "Соңгы вакытта үзгәртүләр ($1 эчендә)", + "pageinfo-recent-authors": "Кабатланмас авторлар саны", "pageinfo-toolboxlink": "Бит турында мәгълүмат", "pageinfo-redirectsto": "Юнәлтү", "pageinfo-redirectsto-info": "мәгълүмат", @@ -2046,10 +2086,15 @@ "version-libraries-description": "Тасвирлама", "version-libraries-authors": "Авторлар", "redirect-submit": "Күчү", + "redirect-lookup": "Эзләү:", + "redirect-value": "Мәгънәсе", + "redirect-user": "Кулланучы идентификаторы", + "redirect-page": "Бит идентификаторы", + "redirect-revision": "Бит юрамасы", + "redirect-file": "Файл исеме", "fileduplicatesearch": "Бер үк файлларны эзләү", "fileduplicatesearch-submit": "Эзләү", "specialpages": "Махсус битләр", - "specialpages-note": "* Гади махсус битләр.\n* Чикләнелгән махсус битләр.", "specialpages-group-maintenance": "Техник карау хисапнамәсе", "specialpages-group-other": "Башка махсус битләр", "specialpages-group-login": "Керү / Теркәлү", @@ -2080,6 +2125,7 @@ "tags-delete": "бетерү", "tags-activate": "активлаштыру", "tags-deactivate": "сүндерү", + "tags-hitcount": "$1 {{PLURAL:$1|үзгәртү}}", "tags-create-submit": "Төзү", "comparepages": "Битләрне чагыштыру", "compare-page1": "Беренче сәхифә", @@ -2119,6 +2165,7 @@ "logentry-newusers-create2": "$1 - $3 исемле хисап язмасы {{GENDER:$2|төзеде}}", "logentry-newusers-autocreate": "{{GENDER:$2|кулланучының}} автоматик рәвештә $1 хисап язмасы төзелде", "logentry-upload-upload": "$1 {{GENDER:$2|йөкләде}} $3", + "logentry-upload-overwrite": "$1 $3 өчен яңа юрама {{GENDER:$2|йөкләде}}", "rightsnone": "(юк)", "feedback-adding": "Фикерне сәхифәгә өстәү ...", "feedback-back": "Артка", 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 92f157d299..bb256bee9e 100644 --- a/languages/i18n/uk.json +++ b/languages/i18n/uk.json @@ -70,7 +70,8 @@ "Олександр", "Similartothissimilartothat", "Bunyk", - "Choomaq" + "Choomaq", + "SimondR" ] }, "tog-underline": "Підкреслювання посилань:", @@ -100,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": "Приховати категоризацію сторінок", @@ -734,8 +736,8 @@ "explainconflict": "Ще хтось змінив цю сторінку з того часу, як ви розпочали її правити.\nУ верхньому вікні показано поточний текст сторінки.\nВаші зміни показані в нижньому вікні.\nВам необхідно перенести ваші зміни в існуючий текст.\nЯкщо ви натиснете «$1», то буде збережено '''лише''' текст з верхнього вікна редагування.", "yourtext": "Ваш текст", "storedversion": "Збережена версія", - "nonunicodebrowser": "'''Попередження: Ваш браузер не підтримує Юнікод.''' \nЩоб подолати це обмеження та дозволити вам безпечно редагувати сторінки, усі не-ASCII символи буде показано їх шістнадцятковими кодами.", "editingold": "'''Попередження: Ви редагуєте застарілу версію даної статті.\nЯкщо ви збережете її, будь-які редагування, зроблені між версіями, будуть втрачені.'''", + "unicode-support-fail": "Схоже на те, що Ваш браузер не підтримує Unicode. Це необхідно для редагування сторінок, тож Ваше редагування не збереглося.", "yourdiff": "Відмінності", "copyrightwarning": "Зверніть увагу, що будь-які додавання і зміни до {{grammar:genitive|{{SITENAME}}}} розглядаються як випущені на умовах ліцензії $2 (детальніше див. $1).\nЯкщо ви не бажаєте, щоб написане вами безжально редагувалось і розповсюджувалося за бажанням будь-кого, не пишіть тут.
    \nВи також підтверджуєте, що написане вами тут належить вам або взяте з джерела, що є суспільним надбанням чи подібного вільного джерела.\n'''Не публікуйте тут без дозволу матеріали, захищені авторським правом!'''", "copyrightwarning2": "Будь ласка, зверніть увагу, що всі зміни, внесені вами до {{SITENAME}}, можуть редагуватися, доповнюватися або вилучатися іншими користувачами.\nЯкщо ви не бажаєте, щоб написане вами безжально редагувалось — не пишіть тут.
    \nВи також підтверджуєте, що наведене тут написано вами особисто або запозичено з джерела, яке є суспільним надбанням, або подібного вільного джерела (див. $1).
    \n'''Не публікуйте тут без дозволу матеріали, захищені авторським правом!'''", @@ -763,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Імовірно, вона була вилучена.", @@ -803,6 +805,7 @@ "parser-template-loop-warning": "Виявлена петля у шаблонах: [[$1]]", "template-loop-category": "Сторінки з петлями шаблонів", "template-loop-category-desc": "Ця сторінка містить петлю шаблонів, тобто шаблон, який рекурсивно викликає сам себе.", + "template-loop-warning": "Попередження: Ця сторінка викликає[[:$1]], що спричиняє петлю в шаблоні (нескінченний рекурсивний виклик).", "parser-template-recursion-depth-warning": "Перевищене обмеження глибини рекурсії шаблону ($1)", "language-converter-depth-warning": "Перевищене обмеження глибини мовного конвертора ($1)", "node-count-exceeded-category": "Сторінки, на яких перевищено лічильник вузлів", @@ -836,7 +839,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": "найдавніші", @@ -1032,7 +1035,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": "Інші налаштування", @@ -1072,6 +1075,7 @@ "timezoneregion-indian": "Індійський океан", "timezoneregion-pacific": "Тихий океан", "allowemail": "Дозволити електронну пошту від інших користувачів", + "email-blacklist-label": "Заборонити цим користувачам надсилати мені листи на електронну пошту:", "prefs-searchoptions": "Пошук", "prefs-namespaces": "Простори назв", "default": "за замовчуванням", @@ -1115,6 +1119,7 @@ "prefs-editor": "Редактор", "prefs-preview": "Попередній перегляд", "prefs-advancedrc": "Розширені налаштування", + "prefs-opt-out": "Відмовитись від покращень", "prefs-advancedrendering": "Розширені налаштування", "prefs-advancedsearchoptions": "Розширені налаштування", "prefs-advancedwatchlist": "Розширені налаштування", @@ -1351,8 +1356,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": "Щоб зберегти Ваші налаштування фільтрів та використати їх пізніше, клацніть на іконку закладки в ділянці активних фільтрів нижче.", @@ -1364,43 +1381,41 @@ "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-search-placeholder": "Фільтруйте нові редагування (переглядайте або почніть вводити)", + "rcfilters-show-new-changes": "Переглянути найновіші зміни", + "rcfilters-search-placeholder": "Фільтруйте нові редагування (перегляньте або почніть вводити)", "rcfilters-invalid-filter": "Недійсний фільтр", "rcfilters-empty-filter": "Без фільтрів. Показано всі зміни.", "rcfilters-filterlist-title": "Фільтри", - "rcfilters-filterlist-whatsthis": "Що це?", - "rcfilters-filterlist-feedbacklink": "Надайте відгук про нові (бета) фільтри", + "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-registration": "Реєстрація користувача", - "rcfilters-filter-registered-label": "Зареєстровані", - "rcfilters-filter-registered-description": "Користувачі, що увійшли в систему.", - "rcfilters-filter-unregistered-label": "Незареєстровані", - "rcfilters-filter-unregistered-description": "Користувачі, які не ввійшли в систему.", - "rcfilters-filter-unregistered-conflicts-user-experience-level": "Цей фільтр конфліктує з {{PLURAL:$2|таким фільтром|такими фільтрами}} досвіду, {{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-filtergroup-user-experience-level-conflicts-unregistered": "Фільтри досвіду знаходять лише зареєстрованих користувачів, тож цей фільтр конфліктує з фільтром «Незареєстровані».", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Фільтр «Незареєстровані» конфліктує з одним або більше фільтрами досвіду, які знаходять лише зареєстрованих користувачів. Конфліктні фільтри позначені вище в ділянці активних фільтрів.", + "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": "Редагування, зроблені з допомогою автоматизованих засобів.", @@ -1423,6 +1438,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,17 +1455,28 @@ "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": "Позначити всі зміни як переглянуті", + "rcfilters-watchlist-edit-watchlist-button": "Редагувати Ваш список сторінок, за якими Ви спостерігаєте", + "rcfilters-watchlist-showupdated": "Зміни до сторінок, які Ви не відвідували з моменту здійснення змін, виділені жирним, із цілісними маркерами.", + "rcfilters-preference-label": "Приховати покращену версію Нових редагувань", + "rcfilters-preference-help": "Скасовує зміну дизайну 2017 року та всі інструменти, додані тоді й пізніше.", "rcnotefrom": "Нижче знаходяться {{PLURAL:$5|редагування}} з $3, $4 (відображено до $1).", "rclistfromreset": "Скинути вибір дати", "rclistfrom": "Показати редагування починаючи з $3 $2.", @@ -1504,6 +1535,7 @@ "uploadbtn": "Завантажити файл", "reuploaddesc": "Повернутися до форми завантаження", "upload-tryagain": "Зберегти змінений опис файлу", + "upload-tryagain-nostash": "Надіслати повторно завантажений файл та змінений опис", "uploadnologin": "Ви не ввійшли в систему", "uploadnologintext": "Будь ласка, $1, щоб завантажувати файли.", "upload_directory_missing": "Директорія для завантажень ($1) відсутня і не може бути створена веб-сервером.", @@ -1563,6 +1595,7 @@ "file-deleted-duplicate-notitle": "Файл, ідентичний до цього файлу, був раніше видалений, і назву було усунено.\nВам слід попросити кого-небудь з можливістю перегляду усуненого файлу даних, щоб проаналізувати ситуацію, перш ніж приступити до повторного завантаження.", "uploadwarning": "Попередження", "uploadwarning-text": "Будь ласка, змініть наданий нижче опис файлу і спробуйте ще раз.", + "uploadwarning-text-nostash": "Будь ласка, завантажте файл повторно, змініть опис нижче і спробуйте ще раз.", "savefile": "Зберегти файл", "uploaddisabled": "Завантаження заборонене", "copyuploaddisabled": "Завантаження через URL вимкнене.", @@ -1725,7 +1758,7 @@ "listfiles_size": "Розмір (в байтах)", "listfiles_description": "Опис", "listfiles_count": "Версії", - "listfiles-show-all": "Включати старі версії зображень", + "listfiles-show-all": "Включати старі версії файлів", "listfiles-latestversion": "Поточна версія", "listfiles-latestversion-yes": "Так", "listfiles-latestversion-no": "Ні", @@ -1829,6 +1862,8 @@ "pageswithprop-legend": "Сторінки з перевизначеними властивостями", "pageswithprop-text": "Тут перераховані сторінки, у яких були вручну перевизначені окремі властивості.", "pageswithprop-prop": "Назва властивості:", + "pageswithprop-reverse": "Сортувати у зворотньому порядку", + "pageswithprop-sortbyvalue": "Сортувати за значенням властивості", "pageswithprop-submit": "Перейти", "pageswithprop-prophidden-long": "довге значення текстової властивості приховано ($1)", "pageswithprop-prophidden-binary": "двійкове значення властивості приховано ($1)", @@ -2134,7 +2169,7 @@ "unwatchthispage": "Скасувати спостереження", "notanarticle": "Не стаття", "notvisiblerev": "Версія була вилучена", - "watchlist-details": "У вашому списку спостереження $1 {{PLURAL:$1|сторінка|сторінки|сторінок}} (не враховуючи сторінок обговорення).", + "watchlist-details": "У Вашому списку спостереження $1 {{PLURAL:$1|сторінка|сторінки|сторінок}} (плюс сторінки обговорення).", "wlheader-enotif": "Сповіщення електронною поштою ввімкнено.", "wlheader-showupdated": "Сторінки, що змінилися після Вашого останнього їх відвідування, виділені '''жирним''' шрифтом.", "wlnote": "Нижче наведено {{PLURAL:$1|останнє $1 редагування|останні $1 редагування|останні $1 редагувань}} за {{PLURAL:$2|останню|останні|останні}} $2 {{PLURAL:$2|годину|години|годин}}, на час $3 $4.", @@ -2169,6 +2204,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": "Вилучити сторінку", @@ -2197,6 +2233,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|редагування|редагування|редагувань}}", @@ -2315,6 +2352,7 @@ "undelete-search-title": "Пошук видалених сторінок", "undelete-search-box": "Пошук вилучених сторінок", "undelete-search-prefix": "Показати сторінки, що починаються з:", + "undelete-search-full": "Показати назви сторінок, які містять:", "undelete-search-submit": "Знайти", "undelete-no-results": "Не знайдено потрібних сторінок серед вилучених.", "undelete-filename-mismatch": "Неможливо відновити версію файлу з відміткою часу $1: невідповідність назви файлу", @@ -2361,6 +2399,7 @@ "sp-contributions-newonly": "Показувати тільки редагування, які є створеннями сторінок", "sp-contributions-hideminor": "Приховати малі правки", "sp-contributions-submit": "Пошук", + "sp-contributions-outofrange": "Неможливо показати будь-які результати. Запитуваний діапазон IP-адрес є більшим, аніж CIDR-ліміт у /$1.", "whatlinkshere": "Посилання сюди", "whatlinkshere-title": "Сторінки, що посилаються на «$1»", "whatlinkshere-page": "Сторінка:", @@ -2650,7 +2689,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» не було імпортовано, оскільки Вам не дозволено її створювати.", @@ -3552,7 +3591,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 +3710,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/ur.json b/languages/i18n/ur.json index 19214beaeb..499a45164b 100644 --- a/languages/i18n/ur.json +++ b/languages/i18n/ur.json @@ -31,7 +31,8 @@ "Jdforrester", "قیصرانی", "Junaid Ahmad", - "Abuaneeqa" + "Abuaneeqa", + "Saraiki" ] }, "tog-underline": "ربط کی خط کشیدگی:", @@ -285,8 +286,8 @@ "toc": "فہرست", "showtoc": "دکھائیں", "hidetoc": "چھپائیں", - "collapsible-collapse": "خاتمے", - "collapsible-expand": "توسیع", + "collapsible-collapse": "بند کریں", + "collapsible-expand": "کھولیں", "confirmable-confirm": "کیا {{GENDER:$1|آپ کو}} اس بات کا یقین ہے؟", "confirmable-yes": "جی ہاں", "confirmable-no": "جی نہیں", @@ -636,7 +637,7 @@ "selfredirect": "انتباہ: آپ پیش نظر صفحہ کو خود اسی کی جانب رجوع مکرر کر رہے ہیں۔\nشاید آپ نے رجوع مکرر کا غلط ہدف درج کیا ہے یا غلط صفحہ میں ترمیم کر رہے ہیں۔\nتاہم اگر آپ «$1» پر دوبارہ کلک کریں تو بہرصورت اس رجوع مکرر کو بنا دیا جائے گا۔", "missingcommenttext": "براہِ کرم! تبصرہ نیچے درج کیجئے.", "missingcommentheader": "یاددہانی: آپ نے اِس تبصرہ کیلئے عنوان یا شہ سرخی مہیّا نہیں کی ہے۔\nاگر آپ نے \"$1\" کا بٹن دوبارہ دبایا تو آپ کا تبصرہ بغیر کسی عنوان کے محفوظ ہوجائے گا۔", - "summary-preview": "نمائش خلاصہ:", + "summary-preview": "خلاصہِ ترمیم کی نمائش:", "subject-preview": "عنوان/شہ سرخی کی نمائش:", "previewerrortext": "آپ کی تبدیلیوں کی نمائش دکھانے کے دوران میں کوئی نقص واقع ہو گیا ہے۔", "blockedtitle": "صارف مسدود ہے", @@ -679,11 +680,10 @@ "creating": "زیر تخلیق $1", "editingsection": "«$1» کے قطعہ کی ترمیم", "editingcomment": "زیرترمیم $1 (نیا قطعہ)", - "editconflict": "تنازعہ ترمیم:$1", + "editconflict": "تنازع ترمیم:$1", "explainconflict": "آپکی تدوین شروع ہونے کے بعد شاید کسی نے یہ صفحہ تبدیل کردیا ہے.\nبالائی خانۂ متن میں صفحہ کا موجودہ مواد ہے.\nآپ کی تبدیلیاں نچلے متن خانہ میں دکھائی گئی ہیں.\nآپ کو اپنی تبدیلیاں موجودہ متن میں ضم کرنا ہوں گی.\n\"محفوظ\" کا بٹن ٹک کرنے سے '''صرف''' بالائی متن محفوظ ہوگا.", "yourtext": "آپ کی تحریر", "storedversion": "ذخیرہ شدہ نظرثانی", - "nonunicodebrowser": "\"انتباہ: آپ کا براؤزر یونی کوڈ کے مطابق نہیں ہے.\"", "editingold": "'''انتباہ: آپ اس صفحے کا ایک پرانا مسودہ مرتب کررہے ہیں۔ اگر آپ اسے محفوظ کرتے ہیں تو اس صفحے کے اس پرانے مسودے سے اب تک کی جانے والی تمام تدوین ضائع ہو جاۓ گی۔'''", "yourdiff": "تضادات", "copyrightwarning": "یہ یادآوری کرلیجیۓ کہ {{SITENAME}} میں تمام تحریری شراکت جی این یو آزاد مسوداتی اجازہ ($2)کے تحت تصور کی جاتی ہے (مزید تفصیل کیلیۓ $1 دیکھیۓ)۔ اگر آپ اس بات سے متفق نہیں کہ آپکی تحریر میں ترمیمات کری جائیں اور اسے آزادانہ (جیسے ضرورت ہو) استعمال کیا جاۓ تو براۓ کرم اپنی تصانیف یہاں داخل نہ کیجیۓ۔ اگر آپ یہاں اپنی تحریر جمع کراتے ہیں تو آپ اس بات کا بھی اقرار کر رہے ہیں کہ، اسے آپ نے خود تصنیف کیا ہے یا دائرہ ءعام (پبلک ڈومین) سے حاصل کیا ہے یا اس جیسے کسی اور آذاد وسیلہ سے۔'''بلااجازت ایسا کام داخل نہ کیجیۓ جسکا حق ِطبع و نشر محفوظ ہو!'''", @@ -1074,7 +1074,7 @@ "userrights-nodatabase": "ڈیٹابیس $1 موجود نہیں یا مقامی نہیں۔", "userrights-changeable-col": "مجموعات جو آپ تبدیل کرسکتے ہیں", "userrights-unchangeable-col": "مجموعات جو آپ تبدیل نہیں کرسکتے", - "userrights-conflict": "اختیارات کی تبدیلی میں تنازعہ! براہ کرم نظر ثانی کریں اور اپنی تبدیلیوں کی تصدیق کریں۔", + "userrights-conflict": "اختیارات کی تبدیلی میں تنازع! براہ کرم نظر ثانی کریں اور اپنی تبدیلیوں کی تصدیق کریں۔", "group": "حلقہ:", "group-user": "صارفین", "group-autoconfirmed": "خود توثیق شدہ صارفین", @@ -1268,7 +1268,10 @@ "recentchanges-legend-heading": "اختصارات:", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (نیز [[Special:NewPages|جدید صفحات کی فہرست]]) ملاحظہ فرمائیں", "recentchanges-submit": "دکھائیں", + "rcfilters-filterlist-feedbacklink": "ہمیں بتایئے کہ آپ آپ ان (نئے) چھننی والے آلات کے بارے میں کیا سوچتے ہیں", "rcfilters-filter-user-experience-level-experienced-label": "تجربہ کار صارف", + "rcfilters-watchlist-edit-watchlist-button": "اپنی زیرنظر صفحات کی فہرست ترمیم کیجیے", + "rcfilters-watchlist-showupdated": "تبدیلیوں کے رونما ہونے کے بعد جن صفحات کا آپ دورہ نہیں کیے ہیں وہ جلی میں، ٹھوس مارکروں کے ساتھ ہیں۔", "rcnotefrom": "ذیل میں $2 سے کی گئی {{PLURAL:$5|تبدیلی|تبدیلیاں}} $1 تک دکھائی جا رہی ہیں۔", "rclistfrom": "$2، $3ء سے ہونے والی نئی تبدیلیاں دکھائیں", "rcshowhideminor": "معمولی ترامیم $1", @@ -2460,6 +2463,8 @@ "tooltip-preferences-save": "ترجیحات محفوظ کریں", "tooltip-summary": "مختصر خلاصہ درج کریں", "common.css": "body,\ntextarea {\n font-family: Amiri;\n}", + "group-bureaucrat.css": "/* یہاں درج شدہ سی ایس ایس محض مامورین اداری کے لیے فعال رہے گی */", + "group-bureaucrat.js": "/* یہاں درج شدہ جاوا اسکرپٹ محض مامورین اداری کے لیے فعال رہے گی */", "anonymous": "{{SITENAME}} {{PLURAL:$1|کا|کے}} گمنام {{PLURAL:$1|صارف|صارفین}}", "siteuser": "{{SITENAME}} $1 صارف", "anonuser": "{{SITENAME}} کا گمنام صارف $1", @@ -3141,7 +3146,6 @@ "fileduplicatesearch-noresults": "«$1» کے نام سے کوئی فائل نہیں مل سکی۔", "specialpages": "خصوصی صفحات", "specialpages-note-top": "وضاحت", - "specialpages-note": "* عام خصوصی صفحات۔\n* ممنوع خصوصی صفحات", "specialpages-group-maintenance": "نگہداشت کی رپورٹیں", "specialpages-group-other": "دیگر خصوصی صفحات", "specialpages-group-login": "کھاتہ کھولیں یا اندراج کریں", @@ -3502,6 +3506,8 @@ "mw-widgets-dateinput-no-date": "کسی تاریخ کو منتخب نہیں کیا گیا", "mw-widgets-titleinput-description-new-page": "صفحہ ابھی تک موجود نہیں", "mw-widgets-titleinput-description-redirect": "$1 کا رجوع مکرر", + "date-range-from": "تاریخ از:", + "date-range-to": "تا:", "sessionmanager-tie": "تصدیقی درخواست کی متعدد قسموں کو یکجا نہیں کیا جا سکتا: $1", "sessionprovider-generic": "$1 کی نشستیں", "sessionprovider-mediawiki-session-cookiesessionprovider": "کوکی پر مبنی نشستیں", diff --git a/languages/i18n/vi.json b/languages/i18n/vi.json index d434d40e89..21185415e0 100644 --- a/languages/i18n/vi.json +++ b/languages/i18n/vi.json @@ -36,7 +36,9 @@ "Xð", "Nguyên Lê", "Asmen", - "Stephanecbisson" + "Stephanecbisson", + "Quoclinh94", + "Tmp1109" ] }, "tog-underline": "Gạch chân liên kết:", @@ -66,13 +68,14 @@ "tog-shownumberswatching": "Hiển thị số người đang xem", "tog-oldsig": "Chữ ký hiện tại của bạn:", "tog-fancysig": "Xem chữ ký là mã wiki (không có liên kết tự động)", - "tog-uselivepreview": "Xem trước trực tiếp", + "tog-uselivepreview": "Tránh tải lại trang khi xem trước", "tog-forceeditsummary": "Nhắc tôi khi tôi quên tóm lược sửa đổi", "tog-watchlisthideown": "Ẩn các sửa đổi của tôi khỏi danh sách theo dõi", "tog-watchlisthidebots": "Ẩn các sửa đổi của robot khỏi danh sách theo dõi", "tog-watchlisthideminor": "Ẩn các sửa đổi nhỏ khỏi danh sách theo dõi", "tog-watchlisthideliu": "Ẩn sửa đổi của thành viên đã đăng nhập khỏi danh sách theo dõi", "tog-watchlistreloadautomatically": "Tự động tải lại danh sách theo dõi khi nào bộ lọc được thay đổi (cần JavaScript)", + "tog-watchlistunwatchlinks": "Thêm liên kết ngừng theo dõi/theo dõi trực tiếp vào mục trong danh sách theo dõi (cần JavaScript để bật/tắt)", "tog-watchlisthideanons": "Ẩn sửa đổi của người dùng vô danh khỏi danh sách theo dõi", "tog-watchlisthidepatrolled": "Ẩn sửa đổi đã tuần tra trong danh sách theo dõi", "tog-watchlisthidecategorization": "Ẩn việc xếp thể loại", @@ -723,8 +726,8 @@ "permissionserrorstext-withaction": "Bạn không được quyền $2, vì {{PLURAL:$1|lý do|các lý do}} sau:", "contentmodelediterror": "Bạn không thể sửa đổi phiên bản này vì kiểu nội dung của nó là $1, trong khi kiểu nội dung của trang là $2.", "recreate-moveddeleted-warn": "'''Cảnh báo: Bạn sắp tạo lại một trang từng bị xóa trước đây.'''\n\nBạn nên cân nhắc trong việc tiếp tục soạn thảo trang này.\nCác nhật trình xóa và di chuyển của trang được đưa ra dưới đây để tiện theo dõi:", - "moveddeleted-notice": "Trang này đã bị xóa.\nCác nhật trình xóa và di chuyển của trang được đưa ra dưới đây để tiện theo dõi.", - "moveddeleted-notice-recent": "Rất tiếc, trang này vừa bị xóa (trong vòng 24 giờ trước).\nCác nhật trình xóa và di chuyển của trang được đưa ra dưới đây để tiện theo dõi.", + "moveddeleted-notice": "Trang này đã bị xóa.\nCác nhật trình xóa, khóa, và di chuyển của trang được đưa ra dưới đây để tiện theo dõi.", + "moveddeleted-notice-recent": "Rất tiếc, trang này vừa bị xóa (trong vòng 24 giờ trước).\nCác nhật trình xóa, khóa, và di chuyển của trang được đưa ra dưới đây để tiện theo dõi.", "log-fulllog": "Xem nhật trình đầy đủ", "edit-hook-aborted": "Một phần bổ trợ phần mềm đã bỏ qua sửa đổi này.\nKhông có lý do nào được đưa ra.", "edit-gone-missing": "Không thể cập nhật trang.\nDường như trang này đã bị xóa.", @@ -735,12 +738,12 @@ "postedit-confirmation-saved": "Sửa đổi của bạn đã được lưu.", "edit-already-exists": "Không thể tạo trang mới.\nNó đã tồn tại.", "defaultmessagetext": "Nội dung mặc định", - "content-failed-to-parse": "Thất bại phân tích nội dung $2 cho mô hình $1: $3", + "content-failed-to-parse": "Thất bại phân tích nội dung $2 cho kiểu $1: $3", "invalid-content-data": "Dữ liệu nội dung không hợp lệ", "content-not-allowed-here": "Không cho phép đưa nội dung “$1” vào trang [[$2]]", "editwarning-warning": "Rời khỏi trang này sẽ khiến bạn mất các sửa đổi đã thực hiện.\nNếu đã đăng nhập, bạn có thể tắt cảnh báo này tại mục “{{int:prefs-editing}}” trong tùy chọn cá nhân.", - "editpage-invalidcontentmodel-title": "Không hỗ trợ mô hình nội dung", - "editpage-invalidcontentmodel-text": "Mô hình nội dung “$1” không được hỗ trợ.", + "editpage-invalidcontentmodel-title": "Không hỗ trợ kiểu nội dung", + "editpage-invalidcontentmodel-text": "Kiểu nội dung “$1” không được hỗ trợ.", "editpage-notsupportedcontentformat-title": "Không hỗ trợ định dạng nội dung", "editpage-notsupportedcontentformat-text": "Kiểu nội dung $2 không hỗ trợ định dạng nội dung $1.", "content-model-wikitext": "mã wiki", @@ -992,7 +995,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", @@ -1083,7 +1086,7 @@ "prefs-help-prefershttps": "Đăng xuất và đăng nhập lại để áp dụng tùy chọn này.", "prefswarning-warning": "Bạn chưa lưu những thay đổi tùy chọn đã thực hiện.\nNếu bạn rời khỏi trang này mà không bấm “$1”, các tùy chọn của bạn sẽ không được cập nhật.", "prefs-tabs-navigation-hint": "Mẹo: Bạn có thể bấm các phím mũi tên trái phải để luân chuyển qua các thẻ trong danh sách thẻ.", - "userrights": "Quản lý quyền thành viên", + "userrights": "Quyền thành viên", "userrights-lookup-user": "Chọn thành viên", "userrights-user-editname": "Nhập tên thành viên:", "editusergroup": "Tải nhóm người dùng", @@ -1108,7 +1111,7 @@ "userrights-expiry-options": "1 ngày:1 day,1 tuần:1 week,1 tháng:1 month,3 tháng:3 months,6 tháng:6 months,1 năm:1 year", "userrights-invalid-expiry": "Thời hạn của nhóm “$1” không hợp lệ.", "userrights-expiry-in-past": "Thời hạn của nhóm “$1” đã xảy ra ở quá khứ.", - "userrights-cannot-shorten-expiry": "Bạn không thể đẩy sớm thời hạn của nhóm “$1”. Chỉ có những người dùng có quyền thêm hay xóa nhóm này có thể đẩy sớm thời hạn.", + "userrights-cannot-shorten-expiry": "Bạn không thể đẩy sớm thời hạn thuộc nhóm “$1”. Chỉ có những người dùng có quyền thêm hay xóa nhóm này có thể đẩy sớm thời hạn.", "userrights-conflict": "Mâu thuẫn thay đổi sửa nhóm thành viên! Xin vui lòng xem lại và xác nhận các thay đổi của bạn.", "group": "Nhóm:", "group-user": "Thành viên thông thường", @@ -1308,37 +1311,66 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (xem thêm [[Special:NewPages|danh sách các trang mới]])", "recentchanges-legend-plusminus": "(''±123'')", "recentchanges-submit": "Xem", + "rcfilters-tag-remove": "Loại bỏ “$1”", + "rcfilters-legend-heading": "Danh sách chữ viết tắt:", + "rcfilters-other-review-tools": "Công cụ duyệt khác", + "rcfilters-group-results-by-page": "Nhóm kết quả theo trang", + "rcfilters-grouping-title": "Nhóm", "rcfilters-activefilters": "Bộ lọc hiện hành", + "rcfilters-advancedfilters": "Bộ lọc nâng cao", + "rcfilters-limit-title": "Số kết quả để hiển thị", + "rcfilters-limit-shownum": "Xem {{PLURAL:$1|thay đổi|$1 thay đổi}} cuối cùng", + "rcfilters-days-title": "Những ngày gần đây", + "rcfilters-hours-title": "Số giờ gần đây", + "rcfilters-days-show-days": "$1 ngày", + "rcfilters-days-show-hours": "$1 giờ", + "rcfilters-highlighted-filters-list": "Tô màu: $1", + "rcfilters-quickfilters": "Bộ lọc đã lưu", + "rcfilters-quickfilters-placeholder-title": "Chưa lưu liên kết", + "rcfilters-quickfilters-placeholder-description": "Để lưu thiết lập bộ lọc để dùng lại sau, bấm hình dấu trang trong hộp “Bộ lọc hiện hành” bên dưới.", + "rcfilters-savedqueries-defaultlabel": "Bộ lọc đã lưu", + "rcfilters-savedqueries-rename": "Đổi tên", "rcfilters-savedqueries-setdefault": "Đặt làm mặc định", "rcfilters-savedqueries-unsetdefault": "Loại bỏ mặc định", + "rcfilters-savedqueries-remove": "Loại bỏ", + "rcfilters-savedqueries-new-name-label": "Tên", + "rcfilters-savedqueries-new-name-placeholder": "Miêu tả mục đích của bộ lọc", + "rcfilters-savedqueries-apply-label": "Tạo bộ lọc", + "rcfilters-savedqueries-apply-and-setdefault-label": "Tạo bộ lọc mặc định", + "rcfilters-savedqueries-cancel-label": "Hủy bỏ", + "rcfilters-savedqueries-add-new-title": "Lưu thiết lập bộ lọc hiện tại", "rcfilters-restore-default-filters": "Mặc định lại các bộ lọc", "rcfilters-clear-all-filters": "Xóa sạch các bộ lọc", + "rcfilters-show-new-changes": "Xem các thay đổi mới nhất", "rcfilters-search-placeholder": "Lọc các thay đổi gần đây (duyệt hoặc bắt đầu đánh chữ)", "rcfilters-invalid-filter": "Bộ lọc không hợp lệ", "rcfilters-empty-filter": "Không có bộ lọc hiện hành. Tất cả các đóng góp được hiển thị.", "rcfilters-filterlist-title": "Bộ lọc", + "rcfilters-filterlist-whatsthis": "Chúng hoạt động làm sao?", + "rcfilters-filterlist-feedbacklink": "Cho chúng tôi biết bạn cảm thấy sao về các công cụ bộ lọc mới này", "rcfilters-highlightbutton-title": "Làm nổi bật kết quả", "rcfilters-highlightmenu-title": "Chọn màu", "rcfilters-highlightmenu-help": "Chọn màu để làm nổi bật thuộc tính này", "rcfilters-filterlist-noresults": "Không tìm thấy bộ lọc", "rcfilters-noresults-conflict": "Không tìm thấy kết quả nào do tiêu chí tìm kiếm đang bị mâu thuẫn", - "rcfilters-filtergroup-registration": "Trạng thái đăng ký thành viên", - "rcfilters-filter-registered-label": "Đã đăng ký", - "rcfilters-filter-registered-description": "Người dùng đã đăng nhập.", - "rcfilters-filter-unregistered-label": "Vô danh", - "rcfilters-filter-unregistered-description": "Người dùng chưa đăng nhập.", - "rcfilters-filtergroup-authorship": "Người sửa đổi", + "rcfilters-state-message-subset": "Bộ lọc này không có hiệu lực vì kết quả của nó cũng có trong kết quả của {{PLURAL:$2|bộ lọc|các bộ lọc}} rộng hơn này (thử tô màu để phân biệt): $1", + "rcfilters-state-message-fullcoverage": "Chọn tất cả các bộ lọc trong nhóm này có cùng kết quả bằng không chọn gì, nên bộ lọc này không có hiệu lực. Nhóm này bao gồm: $1", + "rcfilters-filtergroup-authorship": "Người đóng góp", "rcfilters-filter-editsbyself-label": "Sửa đổi của bạn", "rcfilters-filter-editsbyself-description": "Các sửa đổi do bạn tạo ra.", "rcfilters-filter-editsbyother-label": "Sửa đổi của người khác", "rcfilters-filter-editsbyother-description": "Các sửa đổi của người khác.", - "rcfilters-filtergroup-userExpLevel": "Trình độ (chỉ người dùng đã đăng ký)", + "rcfilters-filtergroup-userExpLevel": "Trạng thái đăng nhập và trình độ của người dùng", + "rcfilters-filter-user-experience-level-registered-label": "Đã đăng ký", + "rcfilters-filter-user-experience-level-registered-description": "Người dùng đã đăng nhập.", + "rcfilters-filter-user-experience-level-unregistered-label": "Vô danh", + "rcfilters-filter-user-experience-level-unregistered-description": "Người dùng chưa đăng nhập.", "rcfilters-filter-user-experience-level-newcomer-label": "Người mới đến", - "rcfilters-filter-user-experience-level-newcomer-description": "Chưa tới 10 sửa đổi và 4 ngày hoạt động.", + "rcfilters-filter-user-experience-level-newcomer-description": "Người dùng đã đăng nhập có ít hơn 10 sửa đổi và 4 ngày hoạt động.", "rcfilters-filter-user-experience-level-learner-label": "Người đang tập", - "rcfilters-filter-user-experience-level-learner-description": "Nhiều ngày hoạt động và sửa đổi hơn “Người mới đến” mà ít hơn “Người có kinh nghiệm”.", + "rcfilters-filter-user-experience-level-learner-description": "Người dùng đã đăng nhập có nhiều kinh nghiệm hơn “Người mới đến” mà ít hơn “Người có kinh nghiệm”.", "rcfilters-filter-user-experience-level-experienced-label": "Người có kinh nghiệm", - "rcfilters-filter-user-experience-level-experienced-description": "Hơn 30 ngày hoạt động và 500 sửa đổi.", + "rcfilters-filter-user-experience-level-experienced-description": "Người dùng đã đăng nhập có hơn 500 sửa đổi và 30 ngày hoạt động.", "rcfilters-filtergroup-automated": "Đóng góp tự động", "rcfilters-filter-bots-label": "Bot", "rcfilters-filter-bots-description": "Các sửa đổi của công cụ tự động.", @@ -1361,6 +1393,11 @@ "rcfilters-filter-watchlist-watchednew-description": "Thay đổi mới trên các trang nằm trong danh sách theo dõi kể từ lần cuối bạn xem trang đó.", "rcfilters-filter-watchlist-notwatched-label": "Không trong danh sách theo dõi", "rcfilters-filter-watchlist-notwatched-description": "Sửa đổi trên các trang không nằm trong danh sách theo dõi của bạn.", + "rcfilters-filtergroup-watchlistactivity": "Hành động trong danh sách theo dõi", + "rcfilters-filter-watchlistactivity-unseen-label": "Thay đổi chưa xem", + "rcfilters-filter-watchlistactivity-unseen-description": "Thay đổi mới trên các trang kể từ lần cuối bạn xem trang đó.", + "rcfilters-filter-watchlistactivity-seen-label": "Thay đổi đã xem", + "rcfilters-filter-watchlistactivity-seen-description": "Thay đổi mới trên các trang mà bạn đã xem kể từ lần cuối trang được thay đổi.", "rcfilters-filtergroup-changetype": "Kiểu thay đổi", "rcfilters-filter-pageedits-label": "Sửa đổi trang", "rcfilters-filter-pageedits-description": "Các sửa đổi đối với nội dung wiki, các trang thảo luận, các miêu tả thể loại…", @@ -1375,9 +1412,24 @@ "rcfilters-typeofchange-conflicts-hideminor": "Bộ lọc Loại sửa đổi này mâu thuẫn với bộ lọc \"Các sửa đổi nhỏ\". Có một số loại sửa đổi không thể được đánh dấu là \"nhỏ\".", "rcfilters-filtergroup-lastRevision": "Phiên bản mới nhất", "rcfilters-filter-lastrevision-label": "Phiên bản mới nhất", - "rcfilters-filter-lastrevision-description": "Sửa đổi mới nhất trên một trang.", - "rcfilters-filter-previousrevision-label": "Các sửa đổi trước", - "rcfilters-filter-previousrevision-description": "Tất cả các sửa đổi không phải là sửa đổi mới nhất của trang.", + "rcfilters-filter-lastrevision-description": "Chỉ sửa đổi mới nhất trên một trang.", + "rcfilters-filter-previousrevision-label": "Không phải phiên bản mới nhất", + "rcfilters-filter-previousrevision-description": "Tất cả các sửa đổi không phải là “phiên bản mới nhất”.", + "rcfilters-filter-excluded": "Loại trừ", + "rcfilters-tag-prefix-namespace-inverted": ":không $1", + "rcfilters-exclude-button-off": "Loại trừ lựa chọn", + "rcfilters-exclude-button-on": "Đang trừ lựa chọn", + "rcfilters-view-advanced-filters-label": "Bộ lọc nâng cao", + "rcfilters-view-tags": "Sửa đổi được gắn thẻ", + "rcfilters-view-namespaces-tooltip": "Lọc kết quả theo không gian tên", + "rcfilters-view-tags-tooltip": "Lọc kết quả theo thẻ đánh dấu", + "rcfilters-view-return-to-default-tooltip": "Quay lại trình đơn bộ lọc chính", + "rcfilters-liveupdates-button": "Cập nhật trực tiếp", + "rcfilters-liveupdates-button-title-on": "Tắt cập nhật trực tiếp", + "rcfilters-liveupdates-button-title-off": "Hiển thị các thay đổi mới lúc khi xảy ra", + "rcfilters-watchlist-markseen-button": "Đánh dấu tất cả thay đổi là đã xem", + "rcfilters-watchlist-edit-watchlist-button": "Sửa danh sách trang theo dõi", + "rcfilters-watchlist-showupdated": "Thay đổi mới trên các trang kể lần cuối bạn xem trang được in đậm và có dấu tô màu.", "rcnotefrom": "Dưới đây là {{PLURAL:$5|thay đổi duy nhất|các thay đổi}} từ $3 $4 (hiển thị tối đa $1 thay đổi).", "rclistfromreset": "Đặt lại lựa chọn ngày", "rclistfrom": "Xem các thay đổi từ $2 $3 trở về sau", @@ -1758,6 +1810,8 @@ "pageswithprop-legend": "Các trang có thuộc tính trang", "pageswithprop-text": "Trang này liệt kê các trang sử dụng một thuộc tính trang nào đó.", "pageswithprop-prop": "Tên thuộc tính:", + "pageswithprop-reverse": "Sắp xếp chiều ngược", + "pageswithprop-sortbyvalue": "Sắp xếp theo giá trị thuộc tính", "pageswithprop-submit": "Xem", "pageswithprop-prophidden-long": "giá trị thuộc tính văn bản dài dòng bị ẩn ($1)", "pageswithprop-prophidden-binary": "giá trị thuộc tính nhị phân bị ẩn ($1)", @@ -1890,6 +1944,7 @@ "apisandbox-sending-request": "Đang gửi yêu cầu API...", "apisandbox-loading-results": "Nhận kết quả API...", "apisandbox-results-error": "Một lỗi xuất hiện khi tải các đáp ứng truy vấn API: $1.", + "apisandbox-results-login-suppressed": "Yêu cầu này đã được xử lý giống như thể người dùng chưa đăng nhập yêu cầu, nếu không thì có thể vượt qua chính sách bảo mật cùng gốc (Same-Origin) của trình duyệt. Lưu ý rằng chức năng tự động xử lý dấu hiệu của chỗ thử API không hoạt động tốt đối với những yêu cầu này, nên bạn phải điền thủ công.", "apisandbox-request-selectformat-label": "Hiển thị dữ liệu yêu cầu dưới dạng:", "apisandbox-request-format-url-label": "Chuỗi truy vấn URL", "apisandbox-request-url-label": "URL của yêu cầu:", @@ -2058,9 +2113,9 @@ "unwatchthispage": "Ngừng theo dõi", "notanarticle": "Không phải trang có nội dung", "notvisiblerev": "Phiên bản bị xóa", - "watchlist-details": "Bạn đang theo dõi {{PLURAL:$1}}$1 trang, không kể riêng các trang thảo luận.", + "watchlist-details": "Bạn đang theo dõi $1 trang, không kể các trang thảo luận.", "wlheader-enotif": "Đã bật thông báo qua thư điện tử.", - "wlheader-showupdated": "Các trang đã thay đổi kể từ lần cuối bạn xem chúng được in '''đậm'''", + "wlheader-showupdated": "Các trang đã thay đổi kể từ lần cuối bạn xem chúng được in đậm.", "wlnote": "Dưới đây là {{PLURAL:$1|thay đổi duy nhất|$1 thay đổi gần nhất}} trong {{PLURAL:$2|giờ|$2 giờ}} qua, tính tới $3 lúc $4.", "wlshowlast": "Hiển thị $1 giờ $2 ngày gần đây", "watchlist-hide": "Ẩn", @@ -2089,10 +2144,11 @@ "enotif_body_intro_moved": "Trang $1 tại {{SITENAME}} đã được $2 di chuyển vào $PAGEEDITDATE. Xem phiên bản hiện hành tại $3 .", "enotif_body_intro_restored": "Trang $1 tại {{SITENAME}} đã được $2 phục hồi vào $PAGEEDITDATE. Xem phiên bản hiện hành tại $3 .", "enotif_body_intro_changed": "Trang $1 tại {{SITENAME}} đã được $2 thay đổi vào $PAGEEDITDATE. Xem phiên bản hiện hành tại $3 .", - "enotif_lastvisited": "Xem $1 để biết các thay đổi diễn ra từ lần xem cuối cùng của bạn.", - "enotif_lastdiff": "Vào $1 để xem sự thay đổi này.", + "enotif_lastvisited": "Xem $1 để biết các thay đổi diễn ra từ lần xem cuối cùng của bạn", + "enotif_lastdiff": "Vào $1 để xem sự thay đổi này", "enotif_anon_editor": "người dùng vô danh $1", "enotif_body": "Xin chào $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nTóm lược sửa đổi: $PAGESUMMARY $PAGEMINOREDIT\n\nLiên lạc với người viết trang qua:\nthư: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nSẽ không có thông báo nào khác nếu có sự thay đổi tiếp theo trừ khi bạn xem trang đó lúc khi đăng nhập. Bạn cũng có thể thiết lập lại việc nhắc nhở cho tất cả các trang nằm trong danh sách theo dõi của bạn.\n\nHệ thống báo tin {{SITENAME}} thân thiện của bạn\n\n--\nĐể thay đổi các thiết lập thư điện tử thông báo, mời xem:\n{{canonicalurl:{{#special:Preferences}}}}\n\nĐể thay đổi các thiết lập danh sách theo dõi, mời xem:\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nĐể xóa trang ra khỏi danh sách theo dõi của bạn, mời xem:\n$UNWATCHURL\n\nPhản hồi và cần sự hỗ trợ:\n$HELPPAGE", + "enotif_minoredit": "Sửa đổi nhỏ", "created": "viết mới", "changed": "thay đổi", "deletepage": "Xóa trang", @@ -2121,6 +2177,7 @@ "delete-warning-toobig": "Trang này có lịch sử sửa đổi lớn, đến hơn $1 lần sửa đổi.\nViệc xóa các trang có thể làm tổn hại đến hoạt động của cơ sở dữ liệu {{SITENAME}};\nhãy cẩn trọng khi thực hiện.", "deleteprotected": "Bạn không thể xóa trang này vì nó đã được khóa lại.", "deleting-backlinks-warning": "Cảnh báo: Có [[Special:WhatLinksHere/{{FULLPAGENAME}}|trang khác]] liên kết đến hoặc nhúng trang mà bạn sắp xóa.", + "deleting-subpages-warning": "Cảnh báo: Bạn sắp sửa xóa trang có [[Special:PrefixIndex/{{FULLPAGENAME}}/|{{PLURAL:$1|trang con|$1 trang con|51=hơn 50 trang con}}]].", "rollback": "Lùi tất cả sửa đổi", "rollbacklink": "lùi tất cả", "rollbacklinkcount": "lùi tất cả $1 sửa đổi", @@ -2133,7 +2190,7 @@ "editcomment": "Tóm lược sửa đổi: $1.", "revertpage": "Đã lùi lại sửa đổi của [[Special:Contributions/$2|$2]] ([[User talk:$2|Thảo luận]]) quay về phiên bản cuối của [[User:$1|$1]]", "revertpage-nouser": "Đã lùi lại sửa đổi của người dùng ẩn quay về phiên bản cuối của {{GENDER:$1}}[[User:$1|$1]]", - "rollback-success": "Đã hủy sửa đổi của $1;\nquay về phiên bản cuối của $2.", + "rollback-success": "Đã hủy sửa đổi của {{GENDER:$3}}$1;\nquay về phiên bản cuối của {{GENDER:$4}}$2.", "rollback-success-notify": "Đã hủy sửa đổi của $1;\nquay về phiên bản cuối của $2. [$3 Xem thay đổi]", "sessionfailure-title": "Phiên thất bại", "sessionfailure": "Dường như có trục trặc với phiên đăng nhập của bạn; thao tác này đã bị hủy để tránh việc cướp quyền đăng nhập. Xin hãy nhấn nút “Back”, tải lại trang đó, rồi thử lại.", @@ -2239,6 +2296,7 @@ "undelete-search-title": "Tìm kiếm trang đã bị xóa", "undelete-search-box": "Tìm kiếm trang đã bị xóa", "undelete-search-prefix": "Hiển thị trang có tiền tố:", + "undelete-search-full": "Hiển thị các tên trang chứa:", "undelete-search-submit": "Tìm kiếm", "undelete-no-results": "Không tìm thấy trang đã bị xóa nào khớp với từ khóa.", "undelete-filename-mismatch": "Không thể phục hồi phiên bản tập tin vào thời điểm $1: không có tập tin trùng tên", @@ -2276,7 +2334,7 @@ "sp-contributions-uploads": "tập tin tải lên", "sp-contributions-logs": "nhật trình", "sp-contributions-talk": "thảo luận", - "sp-contributions-userrights": "quản lý quyền thành viên", + "sp-contributions-userrights": "quản lý quyền {{GENDER:$1}}thành viên", "sp-contributions-blocked-notice": "Thành viên này hiện đang bị cấm sửa đổi. Nhật trình cấm gần nhất được ghi ở dưới để tiện theo dõi:", "sp-contributions-blocked-notice-anon": "Địa chỉ IP này đang bị cấm. Hãy tham khảo mục mới nhất trong nhật trình cấm IP này:", "sp-contributions-search": "Tìm kiếm đóng góp", @@ -2345,8 +2403,13 @@ "unblocked-id": "$1 đã hết bị cấm", "unblocked-ip": "[[Special:Contributions/$1|$1]] đã được bỏ cấm.", "blocklist": "Người dùng bị cấm", - "autoblocklist": "Các lệnh cấm tự động", + "autoblocklist": "Tác vụ cấm tự động", "autoblocklist-submit": "Tìm kiếm", + "autoblocklist-legend": "Xem danh sách các tác vụ cấm tự động", + "autoblocklist-localblocks": "{{PLURAL:$1}}Tác vụ cấm tự động cục bộ", + "autoblocklist-total-autoblocks": "Tổng số cấm tự động: $1", + "autoblocklist-empty": "Danh sách cấm tự động hiện đang trống.", + "autoblocklist-otherblocks": "{{PLURAL:$1}}Tác vụ cấm tự động khác", "ipblocklist": "Người dùng bị cấm", "ipblocklist-legend": "Tìm một thành viên bị cấm", "blocklist-userblocks": "Ẩn tác vụ cấm tài khoản", @@ -2568,7 +2631,7 @@ "import-nonewrevisions": "Không nhập phiên bản nào (tất cả các phiên bản đều đã có sẵn hoặc bị bỏ qua do lỗi).", "xml-error-string": "$1 tại dòng $2, cột $3 (byte $4): $5", "import-upload": "Tải lên dữ liệu XML", - "import-token-mismatch": "Mất dữ liệu phiên làm việc.\n\nCó thể bạn đã được đăng xuất. Xin hãy xác nhận rằng bạn vẫn được đăng nhập và thử lại.\nNếu vẫn không được, hãy thử [[Special:UserLogout|đăng xuất]] rồi đăng nhập lại, và kiểm tra rằng trình duyệt của bạn cho phép các cookie của trang Web này.", + "import-token-mismatch": "Mất dữ liệu phiên làm việc.\n\nCó thể bạn đã được đăng xuất. '''Xin hãy xác nhận rằng bạn vẫn được đăng nhập và thử lại.'''\nNếu vẫn không được, hãy thử [[Special:UserLogout|đăng xuất]] rồi đăng nhập lại, và kiểm tra rằng trình duyệt của bạn cho phép các cookie của trang Web này.", "import-invalid-interwiki": "Không thể nhập trang từ wiki được chỉ định.", "import-error-edit": "Trang “$1” không được nhập tại vì bạn không được phép sửa đổi nó.", "import-error-create": "Trang “$1” không được nhập tại vì bạn không được phép tạo ra nó.", @@ -2596,6 +2659,7 @@ "tooltip-pt-mycontris": "Danh sách các đóng góp của tôi", "tooltip-pt-anoncontribs": "Danh sách các sửa đổi được thực hiện qua địa chỉ IP này", "tooltip-pt-login": "Đăng nhập sẽ có lợi hơn, tuy nhiên không bắt buộc.", + "tooltip-pt-login-private": "Bạn cần phải đăng nhập để sử dụng wiki này", "tooltip-pt-logout": "Đăng xuất", "tooltip-pt-createaccount": "Khuyến khích bạn mở tài khoản và đăng nhập; tuy nhiên, không phải bắt buộc phải có tài khoản", "tooltip-ca-talk": "Thảo luận về trang này", @@ -2644,7 +2708,7 @@ "tooltip-ca-nstab-category": "Xem trang thể loại", "tooltip-minoredit": "Đánh dấu đây là sửa đổi nhỏ", "tooltip-save": "Lưu lại những thay đổi của bạn", - "tooltip-publish": "Xuất bản các thay đổi của bạn", + "tooltip-publish": "Đăng các thay đổi của bạn", "tooltip-preview": "Xem trước những thay đổi, hãy dùng nó trước khi lưu!", "tooltip-diff": "Xem thay đổi bạn đã thực hiện.", "tooltip-compareselectedversions": "Xem khác biệt giữa hai phiên bản đã chọn của trang này.", @@ -2675,7 +2739,7 @@ "anonymous": "{{PLURAL:$1}}Người dùng vô danh của {{SITENAME}}", "siteuser": "thành viên $1 của {{SITENAME}}", "anonuser": "người dùng vô danh $1 tại {{SITENAME}}", - "lastmodifiedatby": "Trang này được $3 cập nhật lần cuối lúc $2 $1.", + "lastmodifiedatby": "Trang này được $3 sửa đổi lần cuối lúc $2 $1.", "othercontribs": "Dựa trên công trình của $1.", "others": "những người khác", "siteusers": "{{SITENAME}} {{PLURAL:$2|{{GENDER:$1|người dùng}}|users}} $1", @@ -2797,8 +2861,11 @@ "newimages-summary": "Trang đặc biệt này hiển thị các tập tin được tải lên gần đây nhất.", "newimages-legend": "Bộ lọc", "newimages-label": "Tên tập tin (hoặc một phần tên):", + "newimages-user": "Địa chỉ IP hoặc tên người dùng", + "newimages-newbies": "Chỉ hiển thị đóng góp của tài khoản mới", "newimages-showbots": "Xem các tập tin do bot tải lên", "newimages-hidepatrolled": "Ẩn tập tin tải lên đã tuần tra", + "newimages-mediatype": "Kiểu phương tiện:", "noimages": "Chưa có hình.", "gallery-slideshow-toggle": "Bật/tắt hình nhỏ", "ilsubmit": "Tìm kiếm", @@ -3431,7 +3498,7 @@ "fileduplicatesearch-noresults": "Không tìm thấy tập tin nào tên “$1”.", "specialpages": "Các trang đặc biệt", "specialpages-note-top": "Chú giải", - "specialpages-note": "* Trang đặc biệt thông thường.\n* Trang đặc biệt được hạn chế.", + "specialpages-note-restricted": "* Trang đặc biệt thông thường.\n* Trang đặc biệt được hạn chế.", "specialpages-group-maintenance": "Báo cáo bảo quản", "specialpages-group-other": "Trang đặc biệt khác", "specialpages-group-login": "Đăng nhập / Mở tài khoản", @@ -3452,8 +3519,8 @@ "tag-filter": "Bộ lọc [[Special:Tags|thẻ]]:", "tag-filter-submit": "Bộ lọc", "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1}}Thẻ]]: $2)", - "tag-mw-contentmodelchange": "thay đổi mô hình nội dung", - "tag-mw-contentmodelchange-description": "Sửa đổi [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:ChangeContentModel thay đổi mô hình nội dung] của trang", + "tag-mw-contentmodelchange": "thay đổi kiểu nội dung", + "tag-mw-contentmodelchange-description": "Sửa đổi [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:ChangeContentModel thay đổi kiểu nội dung] của trang", "tags-title": "Thẻ đánh dấu", "tags-intro": "Trang này liệt kê các thẻ đánh dấu mà phần mềm dùng nó để đánh dấu một sửa đổi, và ý nghĩa của nó.", "tags-tag": "Tên thẻ", @@ -3481,7 +3548,7 @@ "tags-create-reason": "Lý do:", "tags-create-submit": "Tạo mới", "tags-create-no-name": "Bạn phải chỉ định một tên thẻ.", - "tags-create-invalid-chars": "Tên thẻ không được chứa dấu phẩy (,) hoặc dấu gạch chéo lên (/).", + "tags-create-invalid-chars": "Tên thẻ không được chứa dấu phẩy (,), dấu sổ (|), hoặc dấu gạch chéo lên (/).", "tags-create-invalid-title-chars": "Tên thẻ không được chứa các ký tự mà không thể được sử dụng trong tiêu đề của trang .", "tags-create-already-exists": "Các từ khóa “$1” đã tồn tại.", "tags-create-warnings-above": "{{PLURAL:$2|Cảnh báo|Các cảnh báo}} sau gặp phải khi cố gắng để tạo ra thẻ “$1”:", @@ -3550,6 +3617,13 @@ "compare-invalid-title": "Tên trang chỉ định không hợp lệ.", "compare-title-not-exists": "Tên trang chỉ định không tồn tại.", "compare-revision-not-exists": "Phiên bản chỉ định không tồn tại.", + "diff-form": "Khác biệt", + "diff-form-oldid": "Số phiên bản cũ (tùy chọn)", + "diff-form-revid": "Số phiên bản của khác biệt", + "diff-form-submit": "Trình bày khác biệt", + "permanentlink": "Liên kết thường trực", + "permanentlink-revid": "Số phiên bản", + "permanentlink-submit": "Đi đến phiên bản", "dberr-problems": "Xin lỗi! Trang này đang gặp phải những khó khăn về kỹ thuật.", "dberr-again": "Xin thử đợi vài phút rồi tải lại trang.", "dberr-info": "(Không thể liên lạc với máy chủ cơ sở dữ liệu: $1)", @@ -3593,6 +3667,9 @@ "logentry-delete-delete": "$1 {{GENDER:$2}}đã xóa trang “$3”", "logentry-delete-delete_redir": "$1 {{GENDER:$2}}đã xóa trang đổi hướng $3 bằng cách ghi đè", "logentry-delete-restore": "$1 {{GENDER:$2}}đã phục hồi trang $3 ($4)", + "logentry-delete-restore-nocount": "$1 {{GENDER:$2}}đã phục hồi trang $3", + "restore-count-revisions": "$1 phiên bản", + "restore-count-files": "$1 tập tin", "logentry-delete-event": "$1 {{GENDER:$2}}đã thay đổi mức hiển thị của {{PLURAL:$5|một mục nhật trình|$5 mục nhật trình}} về $3: $4", "logentry-delete-revision": "$1 {{GENDER:$2}}đã thay đổi mức hiển thị của {{PLURAL:$5|một phiên bản|$5 phiên bản}} trang $3: $4", "logentry-delete-event-legacy": "$1 {{GENDER:$2}}đã thay đổi mức hiển thị của các mục nhật trình về $3", @@ -3799,6 +3876,7 @@ "special-characters-group-thai": "Thái", "special-characters-group-lao": "Lào", "special-characters-group-khmer": "Khơ-me", + "special-characters-group-canadianaboriginal": "Thổ dân Canada", "special-characters-title-endash": "dấu gạch en", "special-characters-title-emdash": "dấu gạch em", "special-characters-title-minus": "dấu trừ", @@ -3947,9 +4025,14 @@ "restrictionsfield-help": "Mỗi dòng một địa chỉ IP hoặc dải CIDR. Để kích hoạt tất cả mọi địa chỉ IP, sử dụng:
    0.0.0.0/0\n::/0
    ", "revid": "phiên bản $1", "pageid": "số trang $1", + "rawhtml-notallowed": "Không thể sử dụng thẻ <html> bên ngoài trang bình thường.", "gotointerwiki": "Rời khỏi {{SITENAME}}", "gotointerwiki-invalid": "Tên trang chỉ định không hợp lệ.", + "gotointerwiki-external": "Bạn sắp sửa thoát {{SITENAME}} để đi đến [[$2]], đó là trang Web riêng.\n\n'''[$1 Tiếp tục đi đến $1]'''", + "undelete-cantedit": "Bạn không thể phục hồi trang này vì bạn không có quyền sửa đổi trang.", + "undelete-cantcreate": "Bạn không thể phục hồi trang này vì không có trang nào với tên này và bạn không có quyền tạo ra trang này.", "pagedata-title": "Dữ liệu về trang", + "pagedata-text": "Trang này cung cấp giao diện dữ liệu cho các trang. Xin hãy cung cấp tên trang trong URL dùng cú pháp trang con.\n* Chế độ đàm phán nội dung được áp dụng tùy theo đầu đề Accept (chấp nhận) của trình khách của bạn. Điều này có nghĩa rằng dữ liệu trang được cung cấp dưới định dạng thích hợp nhất đối với trình khác của bạn.", "pagedata-not-acceptable": "Không tìm thấy định dạng phù hợp. Các kiểu MIME được hỗ trợ: $1", "pagedata-bad-title": "Tiêu đề không hợp lệ: $1." } diff --git a/languages/i18n/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/war.json b/languages/i18n/war.json index 3fd3cf94f9..dbc2206601 100644 --- a/languages/i18n/war.json +++ b/languages/i18n/war.json @@ -144,7 +144,7 @@ "category-file-count-limited": "An mga nasunod nga {{PLURAL:$1|ka fayl|$1 ka mga faly aada}} han yana nga kaarangay.", "listingcontinuesabbrev": "pdyn.", "index-category": "Mga nakatudlokan nga pagkli", - "noindex-category": "Mga diri nakatudlokan nga pagkli", + "noindex-category": "Mga waray nakaindex nga pakli", "broken-file-category": "Mga pakli nga mayda utod nga mga sumpay hin paypay", "about": "Mahitungod han", "article": "Pakli hin sulod", @@ -157,13 +157,7 @@ "anontalk": "Hiruhimangraw", "navigation": "Paglayag", "and": " ngan", - "qbfind": "Bilnga", - "qbbrowse": "Igdalikyat", - "qbedit": "Igliwat", - "qbpageoptions": "Ini nga pakli", - "qbmyoptions": "Akon mga pakli", "faq": "AGG", - "faqpage": "Project:AGG", "actions": "Mga buhat", "namespaces": "Mga ngaran-lat'ang", "variants": "Mga pagkadirudilain", @@ -188,29 +182,19 @@ "edit-local": "Igliwat an lokal nga pagpahayag", "create": "Himo-a", "create-local": "Igdugang an lokal nga pagpahayag", - "editthispage": "Igliwat ini nga pakli", - "create-this-page": "Himo-a ini nga pakli", "delete": "Para-a", - "deletethispage": "Para-a ini nga pakli", - "undeletethispage": "Igbalik an ini nga pakli nga napara", "undelete_short": "Igkansela an pagpara {{PLURAL:$1|usa nga pagliwat|$1 nga mga pagliwat}}", "viewdeleted_short": "{{PLURAL:$1|usa nga ginpara nga pagliwat|$1 ka ginpara nga mga pagliwat}}", "protect": "Panalipdi", "protect_change": "balyo-a", - "protectthispage": "Panalipdi ini nga pakli", "unprotect": "Liwani an panalipod", - "unprotectthispage": "Kuhaa an panalipod hini nga pakli", "newpage": "Bag-o nga pakli", - "talkpage": "Pakighimangraw hiunong hini nga pakli", "talkpagelinktext": "Hiruhimangraw", "specialpage": "Pinaurog nga pakli", "personaltools": "Mga pankalugaringon nga garamiton", - "articlepage": "Kitaa in may sulod nga pakli", "talk": "Hiruhimangraw", "views": "Mga paglantaw", "toolbox": "Mga higamit", - "userpage": "Kitaa in pakli hin gumaramit", - "projectpage": "Kitaa in pakli hin proyekto", "imagepage": "Kitaa in pakli hin paypay", "mediawikipage": "Kitaa in pakli hin mensahe", "templatepage": "Kitaa in pakli hin plantilya", @@ -221,7 +205,7 @@ "redirectedfrom": "(Ginredirekta tikang ha $1)", "redirectpagesub": "Redirek nga pakli", "redirectto": "Ig-redirect ngadto ha:", - "lastmodifiedat": "Ini nga pakli kataposan ginliwat dida han $1, han $2.", + "lastmodifiedat": "Ini nga pakli katapusan ginliwat dida han $1, han $2.", "viewcount": "Ini nga pakli ginkanhi hin {{PLURAL:$1|makausa|$1 ka beses}}.", "protectedpage": "Ginpanalipdan nga pakli", "jumpto": "Laktaw ngadto ha:", @@ -651,7 +635,7 @@ "permissionserrorstext": "Diri ka gintutugotan pagbuhat hito, mahitungod han mga nasunod nga {{PLURAL:$1|katadungan|mga katadungan}}:", "permissionserrorstext-withaction": "Waray ka permiso han $2, tungod han masunod nga {{PLURAL:$1|rason|mga rason}}:", "recreate-moveddeleted-warn": "'''Pahimatngon: Naghihimo ka hin pakli nga ginpara na.'''\n\nAngay mo hunahunaon kon naangay ba nga magpadayon hin pagliwat hini nga pakli.\nAn talaan hin pagpara ngan pagbalhin hini nga pakli ginhahatag dinhi para hin masayon nga pagkita:", - "moveddeleted-notice": "Ini nga pakli in ginpara.\nAn taramdan han pagpara ngan pagbalhin para han pakli in ginhahatag ha ubos para han kasarigan.", + "moveddeleted-notice": "Ginpara na inin nga pakli.\nAn talaan han pagpara, pagpanalipod ngan pagbalhin para han pakli in aada ha ubos para hit reperensya.", "log-fulllog": "Kitaa an bug-os nga taramdan", "edit-gone-missing": "Diri nakakaupdate han pakli.\nBaga inin ginpara na.", "edit-conflict": "Diri pagkakauroyon han pagliwat.", @@ -692,7 +676,7 @@ "page_first": "syahan", "page_last": "katapusan", "histlegend": "Kaibhan nga pirilion: Igmarka an mga radyo nga kahon han mga pagbag-o para maikumpara ngan igu-a an ''enter'' o an piridlitan ha ubos.
    \nLeyenda: '''({{int:cur}})''' = kaibhan ha giuurhii nga pag-bag-o, '''({{int:last}})''' = kaibhan ha nahiuna nga pag-bag-o, '''{{int:minoreditletter}}''' = gagmay nga pagliwat.", - "history-fieldset-title": "Kaagi han panngaykay", + "history-fieldset-title": "Pamiling hin mga rebisyon", "history-show-deleted": "Ginpara la", "histfirst": "Giunhani", "histlast": "Gibag-ohi", @@ -789,6 +773,7 @@ "search-redirect": "(Ginredirekta tikang ha $1)", "search-section": "(bahin $1)", "search-category": "(kaarangay $1)", + "search-file-match": "(nakaigo hin pareho nga file content)", "search-suggest": "Buot sidngon mo ba: $1", "search-interwiki-caption": "Mga bugto nga proyekto", "search-interwiki-default": "Mga resulta tikang han $1:", @@ -1252,6 +1237,7 @@ "sharedupload": "Ini nga fayl tikang han $1 ngan puyde magamit ha iba nga mga proyekto.", "sharedupload-desc-there": "Ini nga fayl tikang han $1 ngan puyde magamit ha iba nga mga proyekto.\nAlayon pagkita han [$2 nga pakli hin pagpahayag mahitungod hini nga fayl] para hin dugang nga kasayuran.", "sharedupload-desc-here": "An fayl in tikang ha $1 ngan puydi mahigamitan para han iba nga mga proyekto.\nAn paglaladawan han iya [$2 fayl han paglaladawan nga pakli] didto in ginpapakita ha sirong.", + "filepage-nofile": "Waray file nga may ngaran hini.", "uploadnewversion-linktext": "Igkarga-pasaka an ba-o nga bersyon hini nga paypay", "shared-repo-from": "tikang $1", "upload-disallowed-here": "Diri nimo masasapaw ini nga paypay.", @@ -1606,6 +1592,7 @@ "sp-contributions-search": "Pamiling hin mga ámot", "sp-contributions-username": "IP nga adres o nágámit:", "sp-contributions-toponly": "Igpakita la an mga pagliwat nga giuurhii an pagbag-o", + "sp-contributions-newonly": "Igpakita la an mga ginliwat nga nanhihimo hin pakli", "sp-contributions-submit": "Bilnga", "whatlinkshere": "Mga nasumpay dinhi", "whatlinkshere-title": "Mga pakli nga nasumpay ngadto ha \"$1\"", @@ -1659,6 +1646,7 @@ "ipblocklist-submit": "Bilnga", "ipblocklist-localblock": "Lokal nga pagpugong", "ipblocklist-otherblocks": "Iba {{PLURAL:$1|ka pagpugong|ka mga pagpugong}}", + "infiniteblock": "kanunay", "expiringblock": "diri madulot pag $1 han $2", "anononlyblock": "Waray nagpakilala la", "createaccountblock": "Diri ginpapagana an paghimo hin akawnt", @@ -2198,7 +2186,11 @@ "version-libraries-license": "Lisensya", "version-libraries-description": "Deskripsyon", "version-libraries-authors": "Mga awtor", + "redirect-summary": "Ini nga pinaurog nga pakli in nagredirect ngadto ha file (ginhatag an filename), usa ka pakli (ginhatag han ID han rebisyon o ID han pakli), usa ka pakli han gumaramit (ginhatag an numero nga ID han gumaramit), o usa ka entrada han log, (ginhatag an ID han log). Paggamit: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]], o [[{{#Special:Redirect}}/logid/186]].", "redirect-submit": "Kadtoa", + "redirect-user": "ID han gumaramit", + "redirect-page": "ID han pakli", + "redirect-revision": "Rebisyon han pakli", "redirect-file": "Ngaran han file", "fileduplicatesearch": "Pamiling hin nadoble nga mga paypay", "fileduplicatesearch-filename": "Ngaran han paypay:", @@ -2262,6 +2254,7 @@ "revdelete-summary-hid": "An halipotay nga masisiring hiton pagliwat in nakatago", "revdelete-uname-hid": "nakatago an agnay-hit-gumaramit", "logentry-move-move": "$1 {{GENDER:$2|ginbalhin}} an pakli nga $3 ngadto ha $4", + "logentry-move-move-noredirect": "Hi $1 {{GENDER:$2|ginbalhin}} an pakli nga $3 ngadto ha $4 nga diri nagpapabilin hin redirect", "logentry-newusers-newusers": "An gumaramit nga akawnt nga $1 {{GENDER:$2|ginhimo}}", "logentry-newusers-create": "An gumaramit nga akawnt nga $1 {{GENDER:$2|ginhimo}}", "logentry-newusers-create2": "An gumaramit nga akawnt nga $3 {{GENDER:$2|ginhimo}} ni $1", diff --git a/languages/i18n/wuu.json b/languages/i18n/wuu.json index 0c75fc587c..d921498b83 100644 --- a/languages/i18n/wuu.json +++ b/languages/i18n/wuu.json @@ -22,7 +22,8 @@ "反共复国", "姑苏小恐龙", "飞舞回堂前", - "Macofe" + "Macofe", + "Dcljr" ] }, "tog-underline": "鏈接下橫線:", @@ -167,13 +168,7 @@ "anontalk": "讲张", "navigation": "导航", "and": "搭仔", - "qbfind": "尋", - "qbbrowse": "浏览", - "qbedit": "编辑", - "qbpageoptions": "箇頁", - "qbmyoptions": "我个页面", "faq": "FAQ", - "faqpage": "Project:FAQ", "actions": "动作", "namespaces": "名字空间", "variants": "变量", @@ -198,29 +193,19 @@ "edit-local": "编辑本地说明", "create": "创建", "create-local": "添加本地说明", - "editthispage": "编辑该只页面", - "create-this-page": "建箇頁", "delete": "删除", - "deletethispage": "刪箇頁", - "undeletethispage": "还原箇页", "undelete_short": "还原{{PLURAL:$1|一趟编辑|$1趟编辑}}", "viewdeleted_short": "望{{PLURAL:$1|一只删脱个编辑|$1只删脱个编辑}}", "protect": "保", "protect_change": "改", - "protectthispage": "保护该个页面", "unprotect": "更改保护", - "unprotectthispage": "更改此页个保护", "newpage": "新页", - "talkpage": "探討箇頁", "talkpagelinktext": "讲张", "specialpage": "特別頁", "personaltools": "私人家伙", - "articlepage": "望内容页", "talk": "讨论", "views": "望", "toolbox": "家生", - "userpage": "望用戶頁", - "projectpage": "望計劃頁", "imagepage": "望文件頁", "mediawikipage": "望信息頁", "templatepage": "望模板頁", @@ -1267,6 +1252,7 @@ "watchlist-options": "关注表选项", "watching": "监控……", "unwatching": "解除监控……", + "enotif_body_intro_deleted": "{{SITENAME}}页面$1已于$PAGEEDITDATE被$2{{GENDER:$2|删除}},请见<$3>。", "created": "建立哉", "changed": "改变哉", "deletepage": "删脱页面", diff --git a/languages/i18n/xmf.json b/languages/i18n/xmf.json index 26dbb79b6c..908cba32b2 100644 --- a/languages/i18n/xmf.json +++ b/languages/i18n/xmf.json @@ -159,13 +159,7 @@ "anontalk": "ამ IP-ს განხილვა", "navigation": "ნავიგაცია", "and": " დო", - "qbfind": "დოგორი", - "qbbrowse": "დათვალიერება", - "qbedit": "რედაქტირება", - "qbpageoptions": "თე ხასჷლა", - "qbmyoptions": "ჩქიმი ხასჷლეფი", "faq": "ბხშირი კითხვეფი", - "faqpage": "Project:ხშირი შეკითხვები", "actions": "მოქმედალეფი", "namespaces": "ჯოხოეფიშ ოფირჩა", "variants": "ვარიანტეფი", @@ -190,29 +184,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": "გადახედე თარგის გვერდს", @@ -612,7 +596,6 @@ "explainconflict": "სხვა მომხმარებელმა შეცვალა ეს გვერდი მას შემდეგ რაც თქვენ დაიწყეთ მისი რედატირება.\nზედა ტექსტური ველი შეიცავს გვერდის შიგთავსს მისი ამჟამინდელი სახით.\nთქვენი ცვლილებები ნაჩვენებია ქვედა ტექსტურ ველში.\nთქვენ მოგიწევთ თქვენი ცვლილებების შერწყმა არსებულ ტექსტთან.\n'''მხოლოდ''' ზედა ველში არსებული ტექსტი იქნება შენახული, როდესაც „$1“ დააჭერთ.", "yourtext": "თქვან ტექსტი", "storedversion": "შენახული ვერსია", - "nonunicodebrowser": "გაფრთხილება: თქვენი ბრაუზერი უნიკოდთან თავსებადი არ არის. \nჩვენ ვცდილობთ ამ პრობლემის გადაჭრას, რათა თქვენ შეძლოთ უსაფრთხოდ შეიტანოთ ცვლილებები გვერდებზე: არა-ASCII ნიშნები რედაქტირების ფანჯარაში გამოჩნდება როგორც ჰექსადეციმალური კოდები.", "editingold": "ყურადღება: თქვენ ამუშავებთ ამ გვერდის მოძველებულ ვერსიას. გვერდის შენახვის შემდეგ მომდევნო ვერსიებში გაკეთებული ცვლილებები დაიკარგება.", "yourdiff": "განსხვავებები", "copyrightwarning": "გეთოლწონით, ნამდა {{SITENAME}} ხასილაშა თქვან ხეშე მიშაღალირ არძონერ თია იფორუ $2-ით (დეტალეფშო ქოძირით $1). \nვა გოკონა თქვან ნახანდაქ დუდშულო რედაქტირებულქ დო გიონოჯღონელქ იყ’უას–და, ვა მიშეყ’ონათ თინა თაქ.
    \nთქვა ხოლო პიჯალას დუთმოდვანთ, ნამდა თე ტექსტი თქვან ნაჭარა რე, ვარა გინოღალირ რე ოირკოჩე დომენშე დო ვარა თიშ მანგურ დუდიშულ წყუშე. \n'''ვა მიშეღათ ოავტორე ნებეფით თხილერ ნახანდი ავტორიშ ქოყ’იაშ უმშო!'''\"", @@ -1299,7 +1282,7 @@ "listfiles_size": "ზომა", "listfiles_description": "ეჭარუა", "listfiles_count": "ვერსიები", - "listfiles-show-all": "სურათების ძველი ვერსიების ჩართვა", + "listfiles-show-all": "სურათეფიშ ჯვეში ვერსიეფიშ მიშაძინა", "listfiles-latestversion": "მიმდინარე ვერსია", "listfiles-latestversion-yes": "ქო", "listfiles-latestversion-no": "არა", @@ -1542,7 +1525,7 @@ "watch": "გაკონტროლი", "watchthispage": "თე ხასილაშ კონტროლ", "unwatch": "კონტროლიშ გოუქვაფა", - "watchlist-details": "{{PLURAL:$1|$1 ხასილა|$1 ხასილეფ}} რე თქვან კონტროლიშ ერკებულს, სხუნუაშ ხასილეფიშ მეუკოროცხუო.", + "watchlist-details": "{{PLURAL:$1|$1 ხასჷლა|$1 ხასჷლა}} რე თქვან კონტროლიშ ერკებულს, სხუნუაშ ხასჷლეფიშ უმეუკოროცხუო.", "wlshowlast": "ეკონია $1 საათიშ $2 დღაშ ძირაფა", "watchlist-options": "კონტროლიშ ერკებულიშ ოფციეფ", "watching": "კონტროლირებად...", @@ -2212,7 +2195,6 @@ "fileduplicatesearch-submit": "გორუა", "specialpages": "გჷშაკერძაფილი ხასჷლეფი", "specialpages-note-top": "ლეგენდა", - "specialpages-note": "* ჩვეულებრივი სპეცგვერდები.\n* სპეცგვერდები შეზღუდული წვდომით.", "specialpages-group-maintenance": "ტექნიკური მომსახურების ანგარიშები", "specialpages-group-other": "სხვა სპეციალური გვერდები", "specialpages-group-login": "მიშულა/ანგარიშიშ გონწყუმა", diff --git a/languages/i18n/yi.json b/languages/i18n/yi.json index 4001765a16..5008d741b8 100644 --- a/languages/i18n/yi.json +++ b/languages/i18n/yi.json @@ -49,12 +49,13 @@ "tog-shownumberswatching": "ווייזן דעם נומער פון בלאט אויפֿפאסערס", "tog-oldsig": "אייער איצטיגער אונטערשריפֿט:", "tog-fancysig": "באַהאַנדלן אונטערשריפט אַלס וויקיטעקסט (אָן אויטאמאטישן לינק)", - "tog-uselivepreview": "באניצן זיך מיט גיכער פאראויסדיגער ווייזונג", + "tog-uselivepreview": "װייזן פאראויסדיגער ווייזונגען אָן װידערלאָדן דעם בלאַט", "tog-forceeditsummary": "ווארן מיך ווען איך לייג א ליידיג קורץ ווארט ענדערונג", "tog-watchlisthideown": "באהאלט מיינע ענדערונגען פון דער אויפפאסן ליסטע", "tog-watchlisthidebots": "באהאלט באט עדיטס פון אויפפאסן ליסטע", "tog-watchlisthideminor": "באהאלט קליינע ענדערונגען פון דער אויפפאסן ליסטע", "tog-watchlisthideliu": "באהאלטן רעדאקטירונגען פון איינלאגירטע באניצערס פון דער אויפֿפאסונג ליסטע", + "tog-watchlistreloadautomatically": "ווידערלאדן די אויפֿפאסונג־ליסטע אויטאמאטיש ווען א פֿילטער ווערט געענדערט (פֿאדערט JavaScript)", "tog-watchlisthideanons": "באהאלטן רעדאקטירונגען פון אנאנימע באניצערס פון דער אויפֿפאסונג ליסטע", "tog-watchlisthidepatrolled": "באַהאַלטן פאַטראלירטע רעדאַקטירונגען פֿון דער אויפֿפאַסונג ליסטע", "tog-watchlisthidecategorization": "באהאלטן קאעגאריזירן בלעטער", @@ -175,6 +176,7 @@ "tagline": "פֿון {{SITENAME}}", "help": "הילף", "search": "זוך", + "search-ignored-headings": " #
    \n# קעפלעך וואס דער זוך וועט אינגנארירן.\n# Changes to this take effect as soon as the page with the heading is indexed.\n# You can force page reindexing by doing a null edit.\n# דער סינטאקס איז אזוי:\n#   * אלץ פונעם כאראקטער \"#\" ביזן סוף פון דער שורה איז א הערה.\n#   * Every non-blank line is the exact title to ignore, case and everything.\nרעפערענצן\nוועבלינקען\nזעט אויך\n #
    ", "searchbutton": "זוך", "go": "גיין", "searcharticle": "גיין", @@ -691,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ס'ווייזט אויס אז ער איז אויסגעמעקט.", @@ -856,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 עקזיסטירט נישט.", @@ -952,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": "פֿאַרשידנס", @@ -1176,6 +1179,7 @@ "grant-editmywatchlist": "רעדאקטירן אײַער אויפֿפאסונג ליסטע", "grant-editpage": "רעדאקטירן עקזיסטירנדע בלעטער", "grant-editprotected": "רעדאקטירן געשיצטע בלעטער", + "grant-highvolume": "א סך באארבעטונגען", "grant-patrol": "פאטראלירן ענדערונגען צו בלעטער", "grant-sendemail": "שיקן ע-פאסט צו אנדערע באניצער", "grant-uploadeditmovefile": "ארויפֿלאדן, טוישן און באוועגן טעקעס", @@ -1251,7 +1255,16 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (זעט אויך [[Special:NewPages|די רשימה פון נייע בלעטער]])", "recentchanges-legend-plusminus": "(''±123'')", "recentchanges-submit": "ווייזן", + "rcfilters-legend-heading": "ליסטע פון ראשי תיבות:", + "rcfilters-other-review-tools": "אנדערע רעצענזיע ווערקצייג", "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-quickfilters": "אויפֿגעהיטענע פֿילטערס", "rcfilters-quickfilters-placeholder-title": "קיין לינקען נאך נישט אויפֿגעהיטן", "rcfilters-savedqueries-defaultlabel": "אױפֿגעהיטענע פֿילטערס", @@ -1259,20 +1272,23 @@ "rcfilters-savedqueries-setdefault": "האלטן ווי גרונט", "rcfilters-savedqueries-remove": "אראפנעמען", "rcfilters-savedqueries-new-name-label": "נאָמען", + "rcfilters-savedqueries-apply-label": "שאפן פילטער", "rcfilters-savedqueries-cancel-label": "אַנולירן", + "rcfilters-show-new-changes": "ווייזן די נייעסטע ענדערונגען", "rcfilters-search-placeholder": "פֿילטערן לעצטיקע ענדערונגען (דורכקוקן אדער אָנהייבן אַריינקלאַפן)", "rcfilters-invalid-filter": "אומגילטיגער פֿילטער", "rcfilters-empty-filter": "קיין אַקטיווע פילטערס. אלע ביישטייערונגען געוויזן.", "rcfilters-filterlist-title": "פֿילטערס", - "rcfilters-filterlist-whatsthis": "וואס איז דאס?", + "rcfilters-filterlist-whatsthis": "ווי ארבעט דאס?", + "rcfilters-highlightbutton-title": "ארויסשטאַרצן רעזולטאַטן", "rcfilters-highlightmenu-title": "אויסקלויבן א קאליר", "rcfilters-filterlist-noresults": "קיין פֿילטערס נישט געטראפֿן", - "rcfilters-filtergroup-registration": "באניצער איינשרייבונג", - "rcfilters-filter-registered-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-unregistered-label": "נישט אײַנגעשריבן", "rcfilters-filter-user-experience-level-learner-label": "לערנער", "rcfilters-filter-bots-label": "באט", "rcfilters-filter-humans-label": "מענטש (נישט קיין באט)", @@ -1280,14 +1296,21 @@ "rcfilters-filtergroup-reviewstatus": "רעצענזירונג־סטאטוס", "rcfilters-filter-patrolled-label": "פאטראלירט", "rcfilters-filter-unpatrolled-label": "אומפאטראלירט", + "rcfilters-filtergroup-significance": "באדייטונג", "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-filtergroup-lastRevision": "לעצטע ווערסיע", + "rcfilters-filter-categorization-label": "קאטעגאריע־ענדערונגען", + "rcfilters-filtergroup-lastRevision": "לעצטע ווערסיעס", "rcfilters-filter-lastrevision-label": "לעצטע ווערסיע", - "rcfilters-filter-previousrevision-label": "פֿריערדיקע ווערסיעס", + "rcfilters-filter-previousrevision-label": "נישט די לעצטע ווערסיעס", "rcfilters-filter-excluded": "אויסגעשלאסן", "rcfilters-tag-prefix-namespace-inverted": ":נישט $1", + "rcfilters-view-advanced-filters-label": "פֿארגעשריטענע פֿילטערס", + "rcfilters-liveupdates-button": "לעבעדיקע דערהיינטיקונגען", "rcnotefrom": "פֿאלגנד {{PLURAL:$5|איז די ענדערונג| זענען די ענדערונגען}} זײַט $3, $4 (ביז $1).", "rclistfrom": "װײַזן נײַע ענדערונגען פֿון $3 $2", "rcshowhideminor": "$1 מינערדיגע ענדערונגען", @@ -1898,7 +1921,7 @@ "delete-legend": "אויסמעקן", "historywarning": "אכטונג: איר גייט אויסמעקן א בלאט וואָס האט א היסטאריע מיט $1 {{PLURAL:$1|ווערסיע|ווערסיעס}}:", "historyaction-submit": "ווייזן", - "confirmdeletetext": "איר גייט איצט אויסמעקן א בלאט צוזאַמען מיט זײַן גאנצע היסטאריע.\n\nביטע באשטעטיגט אז דאס איז טאקע אייער כוונה, אז איר פארשטייט פולערהייט די קאנסקווענסן פון דעם אַקט, און אז דאס איז אין איינקלאנג מיט [[{{MediaWiki:Policy-url}}|דער פאליסי]].", + "confirmdeletetext": "איר גייט איצט אויסמעקן א בלאט צוזאַמען מיט זײן גאנצער היסטאריע.\n\nביטע באשטעטיגט אז דאס איז טאקע אייער כוונה, אז איר פארשטייט פולערהייט די קאנסקווענסן פון דעם אַקט, און אז דאס איז אין איינקלאנג מיט [[{{MediaWiki:Policy-url}}|דער פאליסי]].", "actioncomplete": "די אַקציע אָט זיך דורכגעפֿירט", "actionfailed": "אקציע דורכגעפאלן", "deletedtext": "\"$1\" אויסגעמעקט.\nזעט $2 פֿאַר א רשימה פֿון לעצטיגע אויסמעקונגען.", @@ -2010,7 +2033,7 @@ "undeletecomment": "אורזאַך:", "cannotundelete": "טייל אדער גארע צוריקשטעלונג איז דורכגעפאלן: $1", "undeletedpage": "'''דער בלאט $1 איז געווארן צוריקגעשטעלט.'''\n\nזעט דעם [[Special:Log/delete| אויסמעקן לאג]] פֿאר א ליסטע פון די לעצטע אויסגעמעקטע און צוריקגעשטעלטע בלעטער.", - "undelete-header": "זעט [[Special:Log/delete|דעם אויסמעקונג זשורנאַל]] פֿאַר בלעטער וואָס זענען לעצטנס געווארן אויסגעמעקט recently deleted pages.", + "undelete-header": "זעט [[Special:Log/delete|דעם אויסמעקונג זשורנאַל]] פֿאַר בלעטער וואָס זענען לעצטנס געווארן אויסגעמעקט.", "undelete-search-title": "זוכן אויסגעמעקטע בלעטער", "undelete-search-box": "זוכן אויסגעמעקטע בלעטער", "undelete-search-prefix": "ווײַז בלעטער וואס הייבן אן מיט:", @@ -2320,7 +2343,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\" האט מען נישט אימפארטירט ווייל איר האט נישט די רעכט צו שאפן אים.", @@ -2989,6 +3012,7 @@ "version-entrypoints-header-url": "URL", "version-libraries-library": "ביבליאטעק", "version-libraries-version": "ווערסיע", + "redirect": "ווייטערפֿירן לויט טעקע, באַניצער, בלאַט, ווערסיע אדער לאגבוך אידענטיפֿצירער", "redirect-submit": "גייט", "redirect-lookup": "זוכן:", "redirect-value": "ווערט:", @@ -3005,7 +3029,6 @@ "fileduplicatesearch-noresults": "קיין טעקע מיטן נאמען \"$1\" נישט געטראפֿן.", "specialpages": "ספעציעלע בלעטער", "specialpages-note-top": "לעגענדע", - "specialpages-note": "* נארמאַלע באַזונדערע בלעטער.\n* באַגרענעצטע באַזונדערע בלעטער.", "specialpages-group-maintenance": "אויפֿהאַלטונג באַריכטן", "specialpages-group-other": "אַנדערע ספעציעלע בלעטער", "specialpages-group-login": "ארײַנלאגירן / שאַפֿן קאנטע", @@ -3052,6 +3075,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/yue.json b/languages/i18n/yue.json index 8902585868..9714cd123b 100644 --- a/languages/i18n/yue.json +++ b/languages/i18n/yue.json @@ -31,7 +31,8 @@ "Tungakl", "Suzukaze-c", "Asdfugil", - "Deryck Chan" + "Deryck Chan", + "Hello903hello" ] }, "tog-underline": "連結加底線:", @@ -49,7 +50,7 @@ "tog-watchdefault": "將我修改嘅頁同檔案加入監視清單", "tog-watchmoves": "將我移動嘅頁同檔案加入監視清單", "tog-watchdeletion": "將我刪除嘅頁同檔案加入監視清單", - "tog-watchuploads": "將我上載嘅檔案加入監視清單", + "tog-watchuploads": "加入我監視清單入面上載嘅檔案", "tog-watchrollback": "將我反轉過嘅頁加落監視清單", "tog-minordefault": "預設全部編輯做小修改", "tog-previewontop": "喺修改欄上邊顯示預覽", @@ -146,12 +147,12 @@ "october-date": "10月$1號", "november-date": "11月$1號", "december-date": "12月$1號", - "period-am": "AM", - "period-pm": "PM", + "period-am": "上晝", + "period-pm": "下晝", "pagecategories": "屬於$1類", - "category_header": "\"$1\" 類中嘅版", + "category_header": "「$1」類中嘅版", "subcategories": "細類", - "category-media-header": " \"$1\" 類嘅媒體", + "category-media-header": "「$1」類嘅媒體", "category-empty": "呢類無任何版或媒體檔。", "hidden-categories": "屬於$1隱類", "hidden-category-category": "隱藏類", @@ -175,7 +176,7 @@ "mytalk": "傾偈", "anontalk": "傾偈", "navigation": "導覽", - "and": "同埋", + "and": " 同埋", "faq": "FAQ", "actions": "動作", "namespaces": "空間名", @@ -190,13 +191,13 @@ "go": "去", "searcharticle": "去", "history": "版史", - "history_short": "歷史", - "history_small": "歷史", + "history_short": "史", + "history_small": "史", "updatedmarker": "我上次來之後嘅修改", "printableversion": "可打印版本", "permalink": "固定連結", "print": "印", - "view": "去睇", + "view": "睇", "view-foreign": "用 $1 睇", "edit": "改", "edit-local": "改本地說明", @@ -1186,6 +1187,9 @@ "grant-editmywatchlist": "改你嘅監視清單", "grant-editpage": "改已經有嘅版", "grant-editprotected": "改保護咗嘅版", + "grant-uploadfile": "上載新檔案", + "grant-basic": "基本權利", + "grant-viewmywatchlist": "睇你嘅監視清單", "newuserlogpage": "使用者開戶記錄", "newuserlogpagetext": "呢個係一個使用者開戶嘅日誌", "rightslog": "用戶權限日誌", @@ -1250,16 +1254,18 @@ "recentchanges-legend-heading": "標記:", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (睇埋[[Special:NewPages|新開版]])", "recentchanges-submit": "顯示", - "rcfilters-filter-editsbyself-description": "你改嘅嘢。", + "rcfilters-limit-shownum": "顯示最後$1個修改", + "rcfilters-savedqueries-rename": "改名", + "rcfilters-filter-editsbyself-description": "你嘅貢獻。", "rcfilters-filter-editsbyother-label": "其他人改嘅嘢", - "rcfilters-filter-editsbyother-description": "其他人(唔係你)改嘅嘢", - "rcfilters-filtergroup-userExpLevel": "經驗級別(只限簽咗到嘅用戶)", + "rcfilters-filter-editsbyother-description": "所有改過嘅嘢(除咗你自己)", + "rcfilters-filtergroup-userExpLevel": "開戶口同經驗", "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-experienced-label": "老手", - "rcfilters-filter-user-experience-level-experienced-description": "超過30日同埋500次編輯", + "rcfilters-filter-user-experience-level-experienced-description": "超過30日同埋500次編輯嘅用戶", "rcfilters-filtergroup-automated": "自動貢獻", "rcfilters-filter-bots-label": "機械人", "rcfilters-filter-bots-description": "用自動工具做嘅貢獻", @@ -1676,6 +1682,7 @@ "usereditcount": "$1次編輯", "usercreated": "響$1 $2{{GENDER:$3|建立}}", "newpages": "新頁", + "newpages-submit": "顯示", "newpages-username": "用戶名:", "ancientpages": "舊頁面", "move": "移動", @@ -2929,7 +2936,6 @@ "fileduplicatesearch-result-n": "個檔案 \"$1\" 有$2項完全相同嘅重覆。", "fileduplicatesearch-noresults": "檔案名\"$1\"找不到", "specialpages": "特別頁", - "specialpages-note": "* 標準特別頁。\n* 有限制嘅特別頁。", "specialpages-group-maintenance": "維護報告", "specialpages-group-other": "其它特別頁", "specialpages-group-login": "簽到/開新戶口", diff --git a/languages/i18n/zh-hans.json b/languages/i18n/zh-hans.json index ac23388f17..da35427e77 100644 --- a/languages/i18n/zh-hans.json +++ b/languages/i18n/zh-hans.json @@ -96,7 +96,8 @@ "D41D8CD98F", "Wmr", "逆襲的天邪鬼", - "WhitePhosphorus" + "WhitePhosphorus", + "A2093064" ] }, "tog-underline": "链接下划线:", @@ -126,13 +127,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": "隐藏对页面的分类", @@ -141,7 +143,7 @@ "tog-showhiddencats": "显示隐藏分类", "tog-norollbackdiff": "执行回退后不显示差异", "tog-useeditwarning": "当我离开编辑页面时,如果有尚未保存的更改,请提醒我", - "tog-prefershttps": "在登录时总是使用安全连接", + "tog-prefershttps": "在登录后总是使用安全连接", "underline-always": "始终", "underline-never": "从不", "underline-default": "皮肤或浏览器默认设置", @@ -215,7 +217,7 @@ "period-am": "AM", "period-pm": "PM", "pagecategories": "{{PLURAL:$1|分类}}", - "category_header": "分类“$1”下的页面", + "category_header": "分类“$1”中的页面", "subcategories": "子分类", "category-media-header": "分类“$1”中的媒体文件", "category-empty": "本分类目前不含有任何页面或媒体文件。", @@ -245,7 +247,7 @@ "and": "和", "faq": "常见问题", "actions": "操作", - "namespaces": "命名空间", + "namespaces": "名字空间", "variants": "变种", "navigation-heading": "导航菜单", "errorpagetitle": "错误", @@ -564,7 +566,7 @@ "accountcreatedtext": "[[{{ns:User}}:$1|$1]]([[{{ns:User talk}}:$1|对话]])的账户已创建。", "createaccount-title": "在{{SITENAME}}创建新账户", "createaccount-text": "有人在{{SITENAME}}中利用您的邮箱创建了一个名为 \"$2\" 的新帐户($4),密码是 \"$3\" 。您应该立即登录并更改密码。\n\n如果该账户创建错误的话,您可以忽略此信息。", - "login-throttled": "你最近尝试登录的次数过多。请等待$1后再试。", + "login-throttled": "您最近尝试登录的次数过多。请等待$1后再试。", "login-abort-generic": "您的登录失败 - 已终止", "login-migrated-generic": "您的账户已被迁移,并且您的用户名在此wiki不再存在。", "loginlanguagelabel": "语言:$1", @@ -625,7 +627,7 @@ "resetpass-submit-cancel": "取消", "resetpass-wrong-oldpass": "临时密码或当前密码无效。您可能已经更改了您的密码,或者请求了新的临时密码。", "resetpass-recycled": "请重置您的密码为与当前密码不同的密码。", - "resetpass-temp-emailed": "您通过一个暂时电子邮件发送的代码登录。要完成登录,您必须在此设置一个新密码:", + "resetpass-temp-emailed": "您使用了通过电子邮件发送的临时密码登录。要完成登录,您必须在此设置一个新密码:", "resetpass-temp-password": "临时密码:", "resetpass-abort-generic": "密码更改已经被扩展程序中止。", "resetpass-expired": "您的密码已经到期。请设置新登录密码。", @@ -756,7 +758,6 @@ "explainconflict": "其他用户在您开始编辑后更改了该页面。上面的文字区含有该页面当前的文字。下面的文字区显示您的更改。您必须把您的更改合并至现有文字。只有当您单击“$1”后,上面的文字区中的文字才会被保存。", "yourtext": "您的文字", "storedversion": "已保存的版本", - "nonunicodebrowser": "警告:您的浏览器不兼容Unicode编码。这里有一个工作区将使您能安全地编辑页面:非ASCII字符将以十六进制编码方式出现在编辑框中。", "editingold": "警告:您正在编辑的是本页面的旧版本。如果您保存该编辑,该版本后的所有更改都会丢失。", "yourdiff": "差异", "copyrightwarning": "请注意您对{{SITENAME}}的所有贡献都被认为是在$2下发布,请查看在$1的细节。如果您不希望您的文字被任意修改和再散布,请不要提交。
    \n您同时也要向我们保证您所提交的内容是您自己所作,或得自一个不受版权保护或相似自由的来源。不要在未获授权的情况下发表!", @@ -784,8 +785,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它可能刚刚被删除。", @@ -824,6 +825,7 @@ "parser-template-loop-warning": "检查到模板循环:[[$1]]", "template-loop-category": "有模板循环的页面", "template-loop-category-desc": "页面存在模板循环,就是递归进行自我调用的模板。", + "template-loop-warning": "警告:此页面调用[[:$1]],这导致了模板循环(无限递归调用)。", "parser-template-recursion-depth-warning": "模板递归深度越限($1)", "language-converter-depth-warning": "字词转换器深度越限($1)", "node-count-exceeded-category": "页面的节点数超出限制", @@ -1053,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": "其他", @@ -1093,6 +1095,7 @@ "timezoneregion-indian": "印度洋", "timezoneregion-pacific": "太平洋", "allowemail": "启用来自其他用户的电子邮件", + "email-blacklist-label": "禁止这些用户给我发送电子邮件:", "prefs-searchoptions": "搜索", "prefs-namespaces": "名字空间", "default": "默认", @@ -1134,6 +1137,7 @@ "prefs-editor": "编辑", "prefs-preview": "预览", "prefs-advancedrc": "高级选项", + "prefs-opt-out": "关闭改进功能", "prefs-advancedrendering": "高级选项", "prefs-advancedsearchoptions": "高级选项", "prefs-advancedwatchlist": "高级选项", @@ -1369,9 +1373,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次更改}}", + "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": "要保存您的过滤器设置并供日后再利用,点击下方激活的过滤器区域内的书签图标。", @@ -1383,37 +1398,35 @@ "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-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-registration": "用户注册", - "rcfilters-filter-registered-label": "已注册", - "rcfilters-filter-registered-description": "登录编辑者。", - "rcfilters-filter-unregistered-label": "未注册", - "rcfilters-filter-unregistered-description": "未登录的编辑者。", - "rcfilters-filter-unregistered-conflicts-user-experience-level": "该过滤器与以下体验{{PLURAL:$2|过滤器}}相冲突,而它只{{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-filtergroup-user-experience-level-conflicts-unregistered": "体验过滤器只寻找注册用户,因此该过滤器与“未注册”过滤器相冲突。", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "“未注册”过滤器与一个或更多体验过滤器相冲突,而它只寻找注册用户。冲突过滤器已在上方激活过滤器区域中被标记。", + "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": "初学者", @@ -1442,6 +1455,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内容、讨论、分类描述等的编辑", @@ -1454,18 +1472,28 @@ "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-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": "实时更新", + "rcfilters-liveupdates-button-title-on": "关闭实时更新", + "rcfilters-liveupdates-button-title-off": "显示新更改(如有)", + "rcfilters-watchlist-markseen-button": "标记所有更改为已查看", + "rcfilters-watchlist-edit-watchlist-button": "编辑您的监视页面列表", + "rcfilters-watchlist-showupdated": "自更改发生以来,对您尚未访问的页面做出的更改以粗体显示,并带有实心圆形标记。", + "rcfilters-preference-label": "隐藏改进的最近更改版本", + "rcfilters-preference-help": "返回到2017年界面重新设计版,并重新添加这以后新增的工具。", "rcnotefrom": "下面{{PLURAL:$5|是}}$3 $4之后的更改(最多显示$1个)。", "rclistfromreset": "重置时间选择", "rclistfrom": "显示$3 $2之后的新更改", @@ -1522,6 +1550,7 @@ "uploadbtn": "上传文件", "reuploaddesc": "取消上传,返回上传表格", "upload-tryagain": "提交修改过的文件说明", + "upload-tryagain-nostash": "提交重新上传的文件并修改说明", "uploadnologin": "未登录", "uploadnologintext": "请$1以上传文件。", "upload_directory_missing": "上传目录($1)遗失,不能由网页服务器建立。", @@ -1581,6 +1610,7 @@ "file-deleted-duplicate-notitle": "之前有与此相同的文件被删除和取消标题。您应该询问查看过改文件数据的任何人以复查重新上传时的诸多问题。", "uploadwarning": "上传警告", "uploadwarning-text": "请修改下面的文件说明并重试。", + "uploadwarning-text-nostash": "请重新上传文件,在下方修改说明并重试。", "savefile": "保存文件", "uploaddisabled": "上传己停用。", "copyuploaddisabled": "URL上传已停用。", @@ -1743,7 +1773,7 @@ "listfiles_size": "尺寸", "listfiles_description": "说明", "listfiles_count": "版本", - "listfiles-show-all": "包括图片的旧版本", + "listfiles-show-all": "包括文件的旧版本", "listfiles-latestversion": "当前版本", "listfiles-latestversion-yes": "是", "listfiles-latestversion-no": "否", @@ -1847,6 +1877,8 @@ "pageswithprop-legend": "有页面属性的页面", "pageswithprop-text": "本页面列出使用特定页面属性的页面。", "pageswithprop-prop": "属性名称:", + "pageswithprop-reverse": "倒序排序", + "pageswithprop-sortbyvalue": "按属性值排序", "pageswithprop-submit": "提交", "pageswithprop-prophidden-long": "长文本属性值已隐藏($1)", "pageswithprop-prophidden-binary": "已隐藏二进制属性值($1)", @@ -2033,7 +2065,7 @@ "allpagesbadtitle": "给定的页面标题是非法的,或者具有一个内部语言或内部 wiki 的前缀。它可能包含一个或更多的不能用于标题的字符。", "allpages-bad-ns": "在{{SITENAME}}中没有一个叫做\"$1\"的名字空间。", "allpages-hide-redirects": "隐藏重定向", - "cachedspecial-viewing-cached-ttl": "你正在查看本页面至少$1前的缓存版本。", + "cachedspecial-viewing-cached-ttl": "您正在查看本页面至少$1前的缓存版本。", "cachedspecial-viewing-cached-ts": "您正浏览此页的缓存版本,不一定是最新的完整版本。", "cachedspecial-refresh-now": "查看最新的。", "categories": "分类", @@ -2149,7 +2181,7 @@ "unwatchthispage": "停止监视", "notanarticle": "非内容页面", "notvisiblerev": "上次由不同用户所作的版本已经删除", - "watchlist-details": "不计讨论页,您的监视列表中有$1个页面。", + "watchlist-details": "您的监视列表中有{{PLURAL:$1|$1个页面}}(包含讨论页)。", "wlheader-enotif": "已启用电子邮件通知。", "wlheader-showupdated": "您上次访问后发生更改的页面加粗显示。", "wlnote": "下面是{{PLURAL:$2|过去$2小时}}的{{PLURAL:$1|最后$1个更改}},截至$3 $4。", @@ -2184,6 +2216,7 @@ "enotif_lastdiff": "要浏览此次更改,请参见$1", "enotif_anon_editor": "匿名用户$1", "enotif_body": "亲爱的$WATCHINGUSERNAME:\n\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{{canonicalurl:{{#special:EditWatchlist}}}}\n从监视列表中删除该页面:\n$UNWATCHURL\n反馈与其他帮助:\n$HELPPAGE", + "enotif_minoredit": "这是一个小编辑", "created": "创建", "changed": "更改", "deletepage": "删除页面", @@ -2212,6 +2245,7 @@ "delete-warning-toobig": "此页面有大量的编辑历史,超过$1个版本。删除它可能会破坏{{SITENAME}}的数据库操作;请谨慎考虑是否执行。", "deleteprotected": "您不能删除此页面因为它被保护。", "deleting-backlinks-warning": "警告:有[[Special:WhatLinksHere/{{FULLPAGENAME}}|其他页面]]链接至或包含您要删除的页面。", + "deleting-subpages-warning": "警告:您要删除的页面有[[Special:PrefixIndex/{{FULLPAGENAME}}/|{{PLURAL:$1|$1个子页面|51=超过50个子页面}}]]。", "rollback": "回退编辑", "rollbacklink": "回退", "rollbacklinkcount": "回退$1次编辑", @@ -2378,6 +2412,7 @@ "sp-contributions-newonly": "仅显示创建页面的编辑", "sp-contributions-hideminor": "隐藏小编辑", "sp-contributions-submit": "搜索", + "sp-contributions-outofrange": "无法显示任何结果。请求的IP段大于CIDR限制/$1。", "whatlinkshere": "链入页面", "whatlinkshere-title": "链接至“$1”的页面", "whatlinkshere-page": "页面:", @@ -2646,7 +2681,7 @@ "import-mapping-subpage": "作为以下页面的子页面导入:", "import-upload-filename": "文件名:", "import-comment": "注释:", - "importtext": "请使用[[Special:Export|导出功能]]从源 wiki 导出文件,\n保存到您的电脑并上传到这里。", + "importtext": "请使用[[Special:Export|导出功能]]从源wiki导出文件,保存到您的电脑并上传到这里。", "importstart": "正在导入页面...", "import-revision-count": "$1个版本", "importnopages": "没有导入的页面。", @@ -2666,7 +2701,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”未导入,因为您不被允许创建它。", @@ -2695,7 +2730,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": "编辑本页", @@ -2884,10 +2919,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": "新文件图库", @@ -3322,7 +3357,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": "确定", @@ -3330,7 +3365,7 @@ "confirm-rollback-button": "确定", "confirm-rollback-top": "回退此页面的编辑么?", "semicolon-separator": ";", - "comma-separator": ",", + "comma-separator": "、", "colon-separator": ":", "pipe-separator": " | ", "word-separator": "", @@ -3461,7 +3496,7 @@ "fileduplicatesearch-noresults": "没有文件命名为\"$1\"发现。", "specialpages": "特殊页面", "specialpages-note-top": "说明", - "specialpages-note": "*普通特殊页面。\n*受限特殊页面。", + "specialpages-note-restricted": "* 普通特殊页面。\n* 受限特殊页面。", "specialpages-group-maintenance": "维护报告", "specialpages-group-other": "其它特殊页面", "specialpages-group-login": "登录/创建账户", @@ -3580,6 +3615,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)", @@ -3746,7 +3788,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": "结果", @@ -3792,7 +3834,7 @@ "mediastatistics-table-totalbytes": "组合尺寸", "mediastatistics-header-unknown": "未知", "mediastatistics-header-bitmap": "位图图像", - "mediastatistics-header-drawing": "图纸(矢量图像)", + "mediastatistics-header-drawing": "绘图(矢量图像)", "mediastatistics-header-audio": "音频", "mediastatistics-header-video": "视频", "mediastatistics-header-multimedia": "富媒体", diff --git a/languages/i18n/zh-hant.json b/languages/i18n/zh-hant.json index 9415770274..18c82746e2 100644 --- a/languages/i18n/zh-hant.json +++ b/languages/i18n/zh-hant.json @@ -285,7 +285,7 @@ "categorypage": "檢視分類頁面", "viewtalkpage": "檢視討論頁面", "otherlanguages": "其他語言", - "redirectedfrom": "(已重新導向自 $1)", + "redirectedfrom": "(已重新導向自 $1)", "redirectpagesub": "重新導向頁面", "redirectto": "重新導向至:", "lastmodifiedat": "此頁面最後編輯於 $1 $2。", @@ -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", @@ -616,7 +616,7 @@ "resetpass-submit-cancel": "取消", "resetpass-wrong-oldpass": "無效的臨時或現有密碼。\n您可能已經變更了密碼,或者已經請求一個新的臨時密碼。", "resetpass-recycled": "請重設您的密碼為一個與目前不同的密碼。", - "resetpass-temp-emailed": "您使用臨時電子郵件傳送的代碼登入。\n要完成登入,您必須在這裡設定一個新密碼:", + "resetpass-temp-emailed": "您使用臨時電子郵件傳送的密碼登入。\n要完成登入,您必須在這裡設定一個新密碼:", "resetpass-temp-password": "臨時密碼:", "resetpass-abort-generic": "擴充套件已中止了變更密碼的操作。", "resetpass-expired": "您的密碼已過期。請設定一個新的密碼以登入。", @@ -685,7 +685,7 @@ "savearticle": "儲存頁面", "savechanges": "儲存變更", "publishpage": "發佈頁面", - "publishchanges": "發布變更", + "publishchanges": "發佈變更", "preview": "預覽", "showpreview": "顯示預覽", "showdiff": "顯示變更", @@ -700,7 +700,7 @@ "subject-preview": "預覽主旨:", "previewerrortext": "嘗試預覽您的變更時發生錯誤。", "blockedtitle": "使用者已被封鎖", - "blockedtext": "您的使用者名稱或 IP 位址以被封鎖。\n\n您被 $1 封鎖,\n原因爲 $2。\n\n* 封鎖開始時間:$8\n* 封鎖結束時間:$6\n* 相關封鎖對象:$7\n\n您可以聯絡 $1 或其他的 [[{{MediaWiki:Grouppage-sysop}}|管理員]] 討論封鎖的相關問題。\n若您已在 [[Special:Preferences|偏好設定]] 中設定了一個有效的電子郵件地址,且尚未被封鎖郵件功能,則您可透過 \"Email 聯絡此使用者\" 的功能來聯絡相關管理員。\n您目前的 IP 位址是 $3,此次封鎖的 ID 為 #$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|偏好設定]] 中設定了一個有效的電子郵件地址,且尚未被封鎖郵件功能,則您可透過 \"Email 聯絡此使用者\" 的功能來聯絡相關管理員。\n您目前的 IP 位址是 $3,此次封鎖的 ID 為 #$5。\n請您在詢問時附註以上詳細訊息。", "autoblockedtext": "因先前的另一位使用者被 $1 封鎖,您的 IP 位址已被自動封鎖。\n原因是:\n\n:$2\n\n* 封鎖開始時間:$8\n* 封鎖結束時間:$6\n* 相關封鎖對象:$7\n\n您可以聯絡 $1 或其他的 [[{{MediaWiki:Grouppage-sysop}}|管理員]] 討論封鎖的相關問題。\n若您已在 [[Special:Preferences|偏好設定]] 中設定了一個有效的電子郵件地址,且尚未被封鎖郵件功能,則您可透過 \"Email 聯絡此使用者\" 的功能來聯絡相關管理員。\n您目前的 IP 位址是 $3,此次封鎖的 ID 為 #$5。\n請您在詢問時附註以上詳細資料。", "systemblockedtext": "您的使用者名稱或 IP 位址已被 MediaWiki 自動封鎖,原因如下:\n\n:$2\n\n* 封鎖開始時間:$8\n* 封鎖結束時間:$6\n* 被封鎖的使用者:$7\n\n您目前的 IP 位址為 $3。\n請在做詢問時附上以上資訊。", "blockednoreason": "未說明原因", @@ -719,7 +719,7 @@ "noarticletext": "此頁面目前沒有內容,您可以在其它頁面中[[Special:Search/{{PAGENAME}}|搜尋此頁面標題]]、[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 搜尋相關日誌]或[{{fullurl:{{FULLPAGENAME}}|action=edit}} 建立此頁面]。", "noarticletext-nopermission": "此頁面目前沒有內容,\n您可以在其它頁面中 [[Special:Search/{{PAGENAME}}|搜尋此頁面標題]],或 [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 搜尋相關日誌],但您沒有權限建立此頁面。", "missing-revision": "頁面名稱 \"{{FULLPAGENAME}}\" 的 #$1 修訂版本不存在。\n\n通常是因連結到過期的歷史頁面,該頁面已被刪除。\n詳情請參考 [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 刪除日誌]。", - "userpage-userdoesnotexist": "使用者帳號 \"$1\" 尚未註冊。\n若您要建立/編輯此頁面,請先檢查是否正確。", + "userpage-userdoesnotexist": "使用者帳號 \"$1\" 尚未註冊。\n若要建立或編輯此頁面,請先檢查清楚。", "userpage-userdoesnotexist-view": "使用者帳號 \"$1\" 尚未註冊。", "blocked-notice-logextract": "此使用者目前已被封鎖。\n以下為最近的封鎖紀錄以供參考:", "clearyourcache": "注意:在您儲存之後您必須清除瀏覽器快取才可看到最新的變更。\n* Firefox / Safari:按住 Shift 時點選 重新整理,或按 Ctrl-F5 或 Ctrl-R (Mac 則為 ⌘-R) \n* Google Chrome:按 Ctrl-Shift-R (Mac 則為 ⌘-Shift-R) \n* Internet Explorer:按住 Ctrl 時點選 重新整理,或按 Ctrl-F5\n* Opera:前往 選單 → 設定 (在 Mac 為 Opera → 偏好設定) 然後再到 隱私 & 安全性 → 清除瀏覽資料 → 已快取的圖片與檔案。", @@ -747,7 +747,6 @@ "explainconflict": "在您開始編輯之後已有其他人儲存了此頁面。\n上方的文字框內顯示了目前頁面中的文字內容,\n您所變更的文字內容顯示在下方文字框中。\n您須要將您所變更的文字內容合併到已儲存的文字內容當中。\n若您直接點選 \"$1\" 只有 上方文字框中的內容會被儲存。", "yourtext": "您的文字", "storedversion": "已儲存修訂", - "nonunicodebrowser": "警告:您的瀏覽器與 Unicode 不相容。\n暫時解決的方式是先在您可安全編輯頁面的地方編輯:非 ASCII 字元在編輯框中會以 16 進位編碼顯示。", "editingold": "警告:您目前正編輯頁面的舊修訂版本。\n若您儲存,在此修訂之後變更的任何內容將會遺失。", "yourdiff": "差異", "copyrightwarning": "請注意,所有於 {{SITENAME}} 所做的貢獻會依據 $2 授權條款發佈 (詳情請見 $1)。\n若您不希望您的著作被任意修改與散佈,請勿在此發表文章。
    \n您同時向我們保証在此的著作內容是您自行撰寫,或是取自不受版權保護的公開領域或自由資源。\n請勿在未經授權的情況下發表文章!", @@ -775,7 +774,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 +1359,8 @@ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (請參考[[Special:NewPages|新頁面]])", "recentchanges-legend-plusminus": "(±123)", "recentchanges-submit": "顯示", + "rcfilters-legend-heading": "縮寫列表:", + "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": "沒有使用中的過濾條件。已顯示所有的貢獻。", @@ -1390,20 +1392,16 @@ "rcfilters-noresults-conflict": "因搜尋條件衝突,查無結果", "rcfilters-state-message-subset": "此過濾條件沒有效果,因其結果包含了以下範圍更廣的{{PLURAL:$2|過濾條件|過濾條件}}其中之一 (嘗試以明顯標示來區別它):$1", "rcfilters-state-message-fullcoverage": "選擇在群組中的所有過濾條件與沒選擇時相同,代表此過濾條件沒有效果。群組包含了:$1", - "rcfilters-filtergroup-registration": "使用者註冊", - "rcfilters-filter-registered-label": "已註冊", - "rcfilters-filter-registered-description": "已登入的編輯者。", - "rcfilters-filter-unregistered-label": "未註冊", - "rcfilters-filter-unregistered-description": "尚未登入的編輯者。", - "rcfilters-filter-unregistered-conflicts-user-experience-level": "此過濾條件與以下經歷{{PLURAL:$2|過濾條件|過濾條件}}衝突,因其只會{{PLURAL:$2|尋找|尋找}}已註冊的使用者:$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-user-experience-level-conflicts-unregistered": "經歷過濾條件只會尋找已註冊的使用者,所以此過濾條件會與 \"未註冊\" 的過濾條件衝突。", - "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "\"未註冊\" 的過濾條件與一個或多個經歷過濾條件衝突,該過濾條件只會尋找已註冊使用者。衝突的過濾條件已在上方使用的過濾條件區域中標示。", + "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": "初學者", @@ -1450,8 +1448,10 @@ "rcfilters-filter-previousrevision-label": "早期版本", "rcfilters-filter-previousrevision-description": "所有除了頁面近期變更的變更。", "rcfilters-filter-excluded": "已排除", - "rcfilters-tag-prefix-namespace-inverted": ":not $1", + "rcfilters-tag-prefix-namespace-inverted": ":不是$1", "rcfilters-view-tags": "標記的編輯", + "rcfilters-liveupdates-button": "實時更新", + "rcfilters-watchlist-showupdated": "自更改發生以來,對您尚未訪問的頁面做出的更改以粗體顯示,並帶有實心圓形標記。", "rcnotefrom": "以下{{PLURAL:$5|為}}自 $3 $4 以來的變更 (最多顯示 $1 筆)。", "rclistfromreset": "重設日期選擇", "rclistfrom": "顯示自 $3 $2 以來的新變更", @@ -1718,7 +1718,7 @@ "listfiles-delete": "刪除", "listfiles-summary": "此特殊頁面顯示所有已上傳的檔案。", "listfiles_search_for": "搜尋媒體名稱:", - "listfiles-userdoesnotexist": "使用者帳號 \"$1\" 尚未被註冊。", + "listfiles-userdoesnotexist": "使用者帳號 \"$1\" 尚未註冊。", "imgfile": "檔案", "listfiles": "檔案清單", "listfiles_thumb": "縮圖", @@ -2132,10 +2132,10 @@ "unwatchthispage": "停止監視", "notanarticle": "非內容的頁面", "notvisiblerev": "最後一次由其他使用者所作的修訂已經被刪除", - "watchlist-details": "您的監視清單上共有 $1 個頁面 (不包含對話頁面)。", + "watchlist-details": "您的監視清單上共有 $1 個頁面(包含對話頁面)。", "wlheader-enotif": "已開啟電子郵件通知功能。", "wlheader-showupdated": "在您最後一次檢視過後修改的頁面會以 粗體 顯示。", - "wlnote": "以下為自 $3 $4 之後的 $2 小時內所做的 $1 次變更。", + "wlnote": "以下為自 $3 $4 之前的 $2 小時內所做的 $1 次變更。", "wlshowlast": "顯示最近 $1 小時 $2 天", "watchlist-hide": "隱藏", "watchlist-submit": "顯示", @@ -2648,7 +2648,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,10 +3290,10 @@ "confirmrecreate": "在您編輯的同時,使用者 [[User:$1|$1]] ([[User talk:$1|對話]]) 刪除了此頁面,原因為:\n: $2\n請確認您是否真的要重新建立此頁面。", "confirmrecreate-noreason": "在您編輯的同時,使用者 [[User:$1|$1]] ([[User talk:$1|對話]]) 刪除了此頁面,請確認您是否真的要重新建立此頁面。", "recreate": "重新建立", - "confirm-purge-title": "刪除此頁", + "confirm-purge-title": "清除此頁快取", "confirm_purge_button": "確定", "confirm-purge-top": "要清除此頁面的快取嗎?", - "confirm-purge-bottom": "清除頁面會清空頁面的快取記錄並強制顯示最近的頁面修訂。", + "confirm-purge-bottom": "清除頁面會清除快取紀錄並強制顯示最近的頁面修訂。", "confirm-watch-button": "確定", "confirm-watch-top": "新增此頁面至您的監視清單?", "confirm-unwatch-button": "確定", @@ -3301,7 +3301,7 @@ "confirm-rollback-button": "確定", "confirm-rollback-top": "還原編輯到此頁面?", "semicolon-separator": ";", - "comma-separator": ",", + "comma-separator": "、", "colon-separator": ":", "word-separator": "", "ellipsis": "…", @@ -3431,7 +3431,6 @@ "fileduplicatesearch-noresults": "查無名稱為 \"$1\" 的檔案。", "specialpages": "特殊頁面", "specialpages-note-top": "說明", - "specialpages-note": "* 一般特殊頁面。\n* 受限制的特殊頁面。", "specialpages-group-maintenance": "維護報表", "specialpages-group-other": "其它特殊頁面", "specialpages-group-login": "登入 / 建立帳號", @@ -3481,7 +3480,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|警告}}:", @@ -3550,6 +3549,11 @@ "compare-invalid-title": "您所指定的標題無效。", "compare-title-not-exists": "您所指定的標題不存在。", "compare-revision-not-exists": "您所指定的修訂不存在。", + "diff-form": "差異", + "diff-form-oldid": "舊修訂版本ID(可選)", + "diff-form-revid": "差異的修訂版本ID", + "permanentlink": "固定連結", + "permanentlink-revid": "修訂版本ID", "dberr-problems": "抱歉!這個網站出現了一些技術上的問題。", "dberr-again": "請稍後數分鐘後再試。", "dberr-info": "(無法存取資料庫:$1)", @@ -3814,7 +3818,7 @@ "mw-widgets-usersmultiselect-placeholder": "加入更多...", "date-range-from": "開始日期:", "date-range-to": "結束日期:", - "sessionmanager-tie": "無法合併多個請求認証類型:$1。", + "sessionmanager-tie": "無法合併多個請求認證類型:$1。", "sessionprovider-generic": "$1 連線階段", "sessionprovider-mediawiki-session-cookiesessionprovider": "以 cookie 為基礎的連線階段", "sessionprovider-nocookies": "Cookie 功能可能已被關閉,請確認您改開啟 Cookie 功能並重新啟動。", @@ -3869,7 +3873,7 @@ "log-action-filter-suppress-reblock": "由重新封鎖禁止顯示使用者", "log-action-filter-upload-upload": "新上傳", "log-action-filter-upload-overwrite": "重新上傳", - "authmanager-authn-not-in-progress": "認証尚未進行或連線階段資料已遺失,請重頭再開始。", + "authmanager-authn-not-in-progress": "認證尚未進行或連線階段資料已遺失,請重頭再開始。", "authmanager-authn-no-primary": "提供的憑證無法用來認証。", "authmanager-authn-no-local-user": "提供的憑證沒有與任何在此 wiki 上的使用者相關聯。", "authmanager-authn-no-local-user-link": "提供的憑證有效但沒有與任何在此 wiki 上的使用者相關聯。請採用其他方式登入,或建立新使用者,您將會有選項可以連結您先前的憑證到新帳號。", @@ -3890,16 +3894,16 @@ "authmanager-autocreate-exception": "自動帳號建立因發生錯誤臨時關閉。", "authmanager-userdoesnotexist": "使用者帳號 \"$1\" 尚未註冊。", "authmanager-userlogin-remembermypassword-help": "是否要記住密碼來取得更長的連線階段時間。", - "authmanager-username-help": "認証用的使用者名稱。", - "authmanager-password-help": "認証用的密碼。", - "authmanager-domain-help": "外部認証用的網域。", + "authmanager-username-help": "認證用的使用者名稱。", + "authmanager-password-help": "認證用的密碼。", + "authmanager-domain-help": "外部認證用的網域。", "authmanager-retype-help": "再輸入一次密碼確認。", "authmanager-email-label": "電子郵件", "authmanager-email-help": "電子郵件地址", "authmanager-realname-label": "真實姓名", "authmanager-realname-help": "使用者的真實姓名", - "authmanager-provider-password": "Password-based 認証", - "authmanager-provider-password-domain": "Password- 及 domain-based 認証", + "authmanager-provider-password": "Password-based 認證", + "authmanager-provider-password-domain": "Password- 及 domain-based 認證", "authmanager-provider-temporarypassword": "臨時密碼", "authprovider-confirmlink-message": "根據您最近的登入嘗試次數,以下帳號可以被連結至您的 wiki 帳號。連結帳號可以讓您使用這些帳號登入。請選擇一個您想連結的帳號。", "authprovider-confirmlink-request-label": "應連結的帳號", @@ -3908,7 +3912,7 @@ "authprovider-confirmlink-ok-help": "顯示連結失敗訊息後繼續。", "authprovider-resetpass-skip-label": "略過", "authprovider-resetpass-skip-help": "略過重設密碼。", - "authform-nosession-login": "已成功認証,但您的瀏覽器無法 \"記住\" 登入資訊。\n\n$1", + "authform-nosession-login": "已成功認證,但您的瀏覽器無法 \"記住\" 登入資訊。\n\n$1", "authform-nosession-signup": "已建立帳號,但您的瀏覽器無法 \"記住\" 登入資訊。\n\n$1", "authform-newtoken": "缺少密鑰。$1", "authform-notoken": "缺少密鑰", @@ -3923,15 +3927,15 @@ "authpage-cannot-link-continue": "無法繼續帳號連結,您的連線階段似乎已逾時。", "cannotauth-not-allowed-title": "權限不足", "cannotauth-not-allowed": "您不被允許使用此頁面", - "changecredentials": "變更憑証", + "changecredentials": "變更憑證", "changecredentials-submit": "變更認證", "changecredentials-invalidsubpage": "$1 不是有效的憑証類型。", "changecredentials-success": "已變更您的認證。", - "removecredentials": "移除憑証", + "removecredentials": "移除憑證", "removecredentials-submit": "移除認證", "removecredentials-invalidsubpage": "$1 不是有效的憑証類型。", "removecredentials-success": "已移除您的憑證。", - "credentialsform-provider": "憑証類型:", + "credentialsform-provider": "憑證類型:", "credentialsform-account": "帳號名稱:", "cannotlink-no-provider-title": "沒有可連結的帳號", "cannotlink-no-provider": "沒有可連結的帳號。", @@ -3940,7 +3944,7 @@ "linkaccounts-submit": "連結帳號", "unlinkaccounts": "取消連結帳號", "unlinkaccounts-success": "已取消連結帳號。", - "authenticationdatachange-ignored": "認証資料變更未被處理,可能未設定提供者?", + "authenticationdatachange-ignored": "認證資料變更未被處理,可能未設定提供者?", "userjsispublic": "請注意:JavaScript 子頁面可被其他使用者檢視,不應包含機密資料。", "usercssispublic": "請注意:CSS 子頁面可被其他使用者檢視,不應包含機密資料。", "restrictionsfield-badip": "無效的 IP 位址或範圍:$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/MessagesSkr.php b/languages/messages/MessagesSkr.php new file mode 100644 index 0000000000..2072b8d817 --- /dev/null +++ b/languages/messages/MessagesSkr.php @@ -0,0 +1,11 @@ +getSiteStore(); diff --git a/maintenance/archives/patch-bot_passwords-bp_user-unsigned.sql b/maintenance/archives/patch-bot_passwords-bp_user-unsigned.sql new file mode 100644 index 0000000000..163609abe5 --- /dev/null +++ b/maintenance/archives/patch-bot_passwords-bp_user-unsigned.sql @@ -0,0 +1 @@ +ALTER TABLE /*_*/bot_passwords MODIFY bp_user int unsigned NOT NULL; \ No newline at end of file diff --git a/maintenance/archives/patch-categorylinks-fix-pk.sql b/maintenance/archives/patch-categorylinks-fix-pk.sql new file mode 100644 index 0000000000..20bc7160f6 --- /dev/null +++ b/maintenance/archives/patch-categorylinks-fix-pk.sql @@ -0,0 +1 @@ +ALTER TABLE /*_*/categorylinks DROP KEY /*i*/cl_from, ADD PRIMARY KEY (cl_from,cl_to); diff --git a/maintenance/archives/patch-change_tag-ct_log_id-unsigned.sql b/maintenance/archives/patch-change_tag-ct_log_id-unsigned.sql new file mode 100644 index 0000000000..1371c474f3 --- /dev/null +++ b/maintenance/archives/patch-change_tag-ct_log_id-unsigned.sql @@ -0,0 +1 @@ +ALTER TABLE /*_*/change_tag MODIFY ct_log_id int unsigned NULL; \ No newline at end of file diff --git a/maintenance/archives/patch-change_tag-ct_rev_id-unsigned.sql b/maintenance/archives/patch-change_tag-ct_rev_id-unsigned.sql new file mode 100644 index 0000000000..b7e1f02e21 --- /dev/null +++ b/maintenance/archives/patch-change_tag-ct_rev_id-unsigned.sql @@ -0,0 +1 @@ +ALTER TABLE /*_*/change_tag MODIFY ct_rev_id int unsigned NULL; \ No newline at end of file diff --git a/maintenance/archives/patch-comment-table.sql b/maintenance/archives/patch-comment-table.sql new file mode 100644 index 0000000000..c8bf958036 --- /dev/null +++ b/maintenance/archives/patch-comment-table.sql @@ -0,0 +1,59 @@ +-- +-- patch-comment-table.sql +-- +-- T166732. Add a `comment` table and various columns (and temporary tables) to reference it. + +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 /*_*/revision + ALTER COLUMN rev_comment SET DEFAULT ''; + +ALTER TABLE /*_*/archive + ALTER COLUMN ar_comment SET DEFAULT '', + ADD COLUMN ar_comment_id bigint unsigned NOT NULL DEFAULT 0 AFTER ar_comment; + +ALTER TABLE /*_*/ipblocks + ALTER COLUMN ipb_reason SET DEFAULT '', + ADD COLUMN ipb_reason_id bigint unsigned NOT NULL DEFAULT 0 AFTER ipb_reason; + +ALTER TABLE /*_*/image + ALTER COLUMN img_description SET DEFAULT ''; + +ALTER TABLE /*_*/oldimage + ALTER COLUMN oi_description SET DEFAULT '', + ADD COLUMN oi_description_id bigint unsigned NOT NULL DEFAULT 0 AFTER oi_description; + +ALTER TABLE /*_*/filearchive + ADD COLUMN fa_deleted_reason_id bigint unsigned NOT NULL DEFAULT 0 AFTER fa_deleted_reason, + ALTER COLUMN fa_description SET DEFAULT '', + ADD COLUMN fa_description_id bigint unsigned NOT NULL DEFAULT 0 AFTER fa_description; + +ALTER TABLE /*_*/recentchanges + ADD COLUMN rc_comment_id bigint unsigned NOT NULL DEFAULT 0 AFTER rc_comment; + +ALTER TABLE /*_*/logging + ADD COLUMN log_comment_id bigint unsigned NOT NULL DEFAULT 0 AFTER log_comment; + +ALTER TABLE /*_*/protected_titles + ALTER COLUMN pt_reason SET DEFAULT '', + ADD COLUMN pt_reason_id bigint unsigned NOT NULL DEFAULT 0 AFTER pt_reason; diff --git a/maintenance/archives/patch-editsummary-length.sql b/maintenance/archives/patch-editsummary-length.sql index c8ac1adfb9..996d562d95 100644 --- a/maintenance/archives/patch-editsummary-length.sql +++ b/maintenance/archives/patch-editsummary-length.sql @@ -1,11 +1,11 @@ -ALTER TABLE /*_*/revision MODIFY rev_comment varbinary(767) NOT NULL; -ALTER TABLE /*_*/archive MODIFY ar_comment varbinary(767) NOT NULL; -ALTER TABLE /*_*/image MODIFY img_description varbinary(767) NOT NULL; -ALTER TABLE /*_*/oldimage MODIFY oi_description varbinary(767) NOT NULL; -ALTER TABLE /*_*/filearchive MODIFY fa_description varbinary(767); +ALTER TABLE /*_*/revision MODIFY rev_comment varbinary(767) NOT NULL default ''; +ALTER TABLE /*_*/archive MODIFY ar_comment varbinary(767) NOT NULL default ''; +ALTER TABLE /*_*/image MODIFY img_description varbinary(767) NOT NULL default ''; +ALTER TABLE /*_*/oldimage MODIFY oi_description varbinary(767) NOT NULL default ''; +ALTER TABLE /*_*/filearchive MODIFY fa_description varbinary(767) default ''; ALTER TABLE /*_*/filearchive MODIFY fa_deleted_reason varbinary(767) default ''; ALTER TABLE /*_*/recentchanges MODIFY rc_comment varbinary(767) NOT NULL default ''; ALTER TABLE /*_*/logging MODIFY log_comment varbinary(767) NOT NULL default ''; -ALTER TABLE /*_*/ipblocks MODIFY ipb_reason varbinary(767) NOT NULL; -ALTER TABLE /*_*/protected_titles MODIFY pt_reason varbinary(767); +ALTER TABLE /*_*/ipblocks MODIFY ipb_reason varbinary(767) NOT NULL default ''; +ALTER TABLE /*_*/protected_titles MODIFY pt_reason varbinary(767) default ''; diff --git a/maintenance/archives/patch-imagelinks-fix-pk.sql b/maintenance/archives/patch-imagelinks-fix-pk.sql new file mode 100644 index 0000000000..e66500f79f --- /dev/null +++ b/maintenance/archives/patch-imagelinks-fix-pk.sql @@ -0,0 +1 @@ +ALTER TABLE /*_*/imagelinks DROP KEY /*i*/il_from, ADD PRIMARY KEY (il_from,il_to); diff --git a/maintenance/archives/patch-ip_changes.sql b/maintenance/archives/patch-ip_changes.sql new file mode 100644 index 0000000000..5f05672e84 --- /dev/null +++ b/maintenance/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/archives/patch-iwlinks-fix-pk.sql b/maintenance/archives/patch-iwlinks-fix-pk.sql new file mode 100644 index 0000000000..1dd5220d96 --- /dev/null +++ b/maintenance/archives/patch-iwlinks-fix-pk.sql @@ -0,0 +1 @@ +ALTER TABLE /*_*/iwlinks DROP KEY /*i*/iwl_from, ADD PRIMARY KEY (iwl_from,iwl_prefix,iwl_title); diff --git a/maintenance/archives/patch-l10n_cache-primary-key.sql b/maintenance/archives/patch-l10n_cache-primary-key.sql new file mode 100644 index 0000000000..d583039677 --- /dev/null +++ b/maintenance/archives/patch-l10n_cache-primary-key.sql @@ -0,0 +1,8 @@ +-- +-- patch-l10n_cache-primary-key.sql +-- +-- Bug T146591. Add l10n_cache primary key + +DELETE FROM /*$wgDBprefix*/l10n_cache; + +ALTER TABLE /*$wgDBprefix*/l10n_cache DROP KEY /*i*/lc_lang_key, ADD PRIMARY KEY(lc_lang, lc_key); diff --git a/maintenance/archives/patch-langlinks-fix-pk.sql b/maintenance/archives/patch-langlinks-fix-pk.sql new file mode 100644 index 0000000000..e3ac31251c --- /dev/null +++ b/maintenance/archives/patch-langlinks-fix-pk.sql @@ -0,0 +1 @@ +ALTER TABLE /*_*/langlinks DROP KEY /*i*/ll_from, ADD PRIMARY KEY (ll_from,ll_lang); diff --git a/maintenance/archives/patch-log_search-fix-pk.sql b/maintenance/archives/patch-log_search-fix-pk.sql new file mode 100644 index 0000000000..51bfdf59d3 --- /dev/null +++ b/maintenance/archives/patch-log_search-fix-pk.sql @@ -0,0 +1 @@ +ALTER TABLE /*_*/log_search DROP KEY /*i*/ls_field_val, ADD PRIMARY KEY (ls_field,ls_value,ls_log_id); diff --git a/maintenance/archives/patch-log_search-rename-index.sql b/maintenance/archives/patch-log_search-rename-index.sql deleted file mode 100644 index 7e1113e6e2..0000000000 --- a/maintenance/archives/patch-log_search-rename-index.sql +++ /dev/null @@ -1,7 +0,0 @@ --- Rename the primary unique index from PRIMARY to ls_field_val --- This is for MySQL only and is necessary only for databases which were updated --- between MW 1.16 development revisions r50567 and r51465. -ALTER TABLE /*_*/log_search - DROP PRIMARY KEY, - ADD UNIQUE INDEX ls_field_val (ls_field,ls_value,ls_log_id); - diff --git a/maintenance/archives/patch-module_deps-fix-pk.sql b/maintenance/archives/patch-module_deps-fix-pk.sql new file mode 100644 index 0000000000..2338df0ac5 --- /dev/null +++ b/maintenance/archives/patch-module_deps-fix-pk.sql @@ -0,0 +1 @@ +ALTER TABLE /*_*/module_deps DROP KEY /*i*/md_module_skin, ADD PRIMARY KEY (md_module,md_skin); diff --git a/maintenance/archives/patch-objectcache-fix-pk.sql b/maintenance/archives/patch-objectcache-fix-pk.sql new file mode 100644 index 0000000000..cd55716094 --- /dev/null +++ b/maintenance/archives/patch-objectcache-fix-pk.sql @@ -0,0 +1 @@ +ALTER TABLE /*_*/objectcache DROP KEY /*i*/keyname, ADD PRIMARY KEY (keyname); diff --git a/maintenance/archives/patch-page_restrictions-pr_user-unsigned.sql b/maintenance/archives/patch-page_restrictions-pr_user-unsigned.sql new file mode 100644 index 0000000000..2337ff0ce5 --- /dev/null +++ b/maintenance/archives/patch-page_restrictions-pr_user-unsigned.sql @@ -0,0 +1 @@ +ALTER TABLE /*_*/page_restrictions MODIFY pr_user int unsigned NULL; diff --git a/maintenance/archives/patch-pagelinks-fix-pk.sql b/maintenance/archives/patch-pagelinks-fix-pk.sql new file mode 100644 index 0000000000..e26914397c --- /dev/null +++ b/maintenance/archives/patch-pagelinks-fix-pk.sql @@ -0,0 +1 @@ +ALTER TABLE /*_*/pagelinks DROP INDEX /*i*/pl_from, ADD PRIMARY KEY (pl_from,pl_namespace,pl_title); diff --git a/maintenance/archives/patch-querycache_info-fix-pk.sql b/maintenance/archives/patch-querycache_info-fix-pk.sql new file mode 100644 index 0000000000..94f3c1d6a0 --- /dev/null +++ b/maintenance/archives/patch-querycache_info-fix-pk.sql @@ -0,0 +1 @@ +ALTER TABLE /*_*/querycache_info DROP KEY /*i*/qci_type, ADD PRIMARY KEY (qci_type); diff --git a/maintenance/archives/patch-site_stats-fix-pk.sql b/maintenance/archives/patch-site_stats-fix-pk.sql new file mode 100644 index 0000000000..d32adf34e3 --- /dev/null +++ b/maintenance/archives/patch-site_stats-fix-pk.sql @@ -0,0 +1 @@ +ALTER TABLE /*_*/site_stats DROP KEY /*i*/ss_row_id, ADD PRIMARY KEY (ss_row_id); diff --git a/maintenance/archives/patch-tag_summary-ts_log_id-unsigned.sql b/maintenance/archives/patch-tag_summary-ts_log_id-unsigned.sql new file mode 100644 index 0000000000..617073dbf2 --- /dev/null +++ b/maintenance/archives/patch-tag_summary-ts_log_id-unsigned.sql @@ -0,0 +1 @@ +ALTER TABLE /*_*/tag_summary MODIFY ts_log_id int unsigned NULL; \ No newline at end of file diff --git a/maintenance/archives/patch-tag_summary-ts_rev_id-unsigned.sql b/maintenance/archives/patch-tag_summary-ts_rev_id-unsigned.sql new file mode 100644 index 0000000000..e6a5bcde01 --- /dev/null +++ b/maintenance/archives/patch-tag_summary-ts_rev_id-unsigned.sql @@ -0,0 +1 @@ +ALTER TABLE /*_*/tag_summary MODIFY ts_rev_id int unsigned NULL; \ No newline at end of file diff --git a/maintenance/archives/patch-templatelinks-fix-pk.sql b/maintenance/archives/patch-templatelinks-fix-pk.sql new file mode 100644 index 0000000000..8aca5105b7 --- /dev/null +++ b/maintenance/archives/patch-templatelinks-fix-pk.sql @@ -0,0 +1 @@ +ALTER TABLE /*_*/templatelinks DROP INDEX /*i*/tl_from, ADD PRIMARY KEY (tl_from,tl_namespace,tl_title); diff --git a/maintenance/archives/patch-text-fix-pk.sql b/maintenance/archives/patch-text-fix-pk.sql new file mode 100644 index 0000000000..b546333b22 --- /dev/null +++ b/maintenance/archives/patch-text-fix-pk.sql @@ -0,0 +1 @@ +ALTER TABLE /*_*/text DROP KEY /*i*/old_id, ADD PRIMARY KEY (old_id); diff --git a/maintenance/archives/patch-transcache-fix-pk.sql b/maintenance/archives/patch-transcache-fix-pk.sql new file mode 100644 index 0000000000..2e8fea1ba9 --- /dev/null +++ b/maintenance/archives/patch-transcache-fix-pk.sql @@ -0,0 +1 @@ +ALTER TABLE /*_*/transcache DROP KEY /*i*/tc_url_idx, ADD PRIMARY KEY (tc_url); diff --git a/maintenance/archives/patch-user-newtalk-userid-unsigned.sql b/maintenance/archives/patch-user-newtalk-userid-unsigned.sql deleted file mode 100644 index a83e03b9d2..0000000000 --- a/maintenance/archives/patch-user-newtalk-userid-unsigned.sql +++ /dev/null @@ -1 +0,0 @@ -ALTER TABLE /*_*/user_newtalk MODIFY user_id int unsigned NOT NULL default 0; diff --git a/maintenance/archives/patch-user_former_groups-fix-pk.sql b/maintenance/archives/patch-user_former_groups-fix-pk.sql new file mode 100644 index 0000000000..9a776caf65 --- /dev/null +++ b/maintenance/archives/patch-user_former_groups-fix-pk.sql @@ -0,0 +1 @@ +ALTER TABLE /*_*/user_former_groups DROP KEY /*i*/ufg_user_group, ADD PRIMARY KEY (ufg_user,ufg_group); diff --git a/maintenance/archives/patch-user_newtalk-user_id-unsigned.sql b/maintenance/archives/patch-user_newtalk-user_id-unsigned.sql new file mode 100644 index 0000000000..a83e03b9d2 --- /dev/null +++ b/maintenance/archives/patch-user_newtalk-user_id-unsigned.sql @@ -0,0 +1 @@ +ALTER TABLE /*_*/user_newtalk MODIFY user_id int unsigned NOT NULL default 0; diff --git a/maintenance/archives/patch-user_properties-fix-pk.sql b/maintenance/archives/patch-user_properties-fix-pk.sql new file mode 100644 index 0000000000..5d51b78575 --- /dev/null +++ b/maintenance/archives/patch-user_properties-fix-pk.sql @@ -0,0 +1 @@ +ALTER TABLE /*_*/user_properties DROP KEY /*i*/user_properties_user_property, ADD PRIMARY KEY (up_user,up_property); diff --git a/maintenance/archives/patch-user_properties-up_user-unsigned.sql b/maintenance/archives/patch-user_properties-up_user-unsigned.sql new file mode 100644 index 0000000000..f4f563f8bf --- /dev/null +++ b/maintenance/archives/patch-user_properties-up_user-unsigned.sql @@ -0,0 +1 @@ +ALTER TABLE /*_*/user_properties MODIFY up_user int unsigned NOT NULL; \ No newline at end of file diff --git a/maintenance/backup.inc b/maintenance/backup.inc index 60b8a7a9bb..f1cd2b965b 100644 --- a/maintenance/backup.inc +++ b/maintenance/backup.inc @@ -25,7 +25,6 @@ */ require_once __DIR__ . '/Maintenance.php'; -require_once __DIR__ . '/../includes/export/DumpFilter.php'; use Wikimedia\Rdbms\LoadBalancer; use Wikimedia\Rdbms\IDatabase; diff --git a/maintenance/benchmarks/benchmarkLruHash.php b/maintenance/benchmarks/benchmarkLruHash.php new file mode 100644 index 0000000000..1541f827fe --- /dev/null +++ b/maintenance/benchmarks/benchmarkLruHash.php @@ -0,0 +1,97 @@ +addDescription( 'Benchmarks HashBagOStuff and MapCacheLRU.' ); + $this->addOption( 'construct', 'Run construct only', false, false ); + $this->addOption( 'fill', 'Run fill only', false, false ); + } + + public function execute() { + $exampleKeys = []; + $max = 100; + $count = 500; + while ( $count-- ) { + $exampleKeys[] = wfRandomString(); + } + // 1000 keys (1...500, 500...1) + $keys = array_merge( $exampleKeys, array_reverse( $exampleKeys ) ); + + $fill = $this->hasOption( 'fill' ) || !$this->hasOption( 'construct' ); + $construct = $this->hasOption( 'construct' ) || !$this->hasOption( 'fill' ); + $benches = []; + + if ( $construct ) { + $benches['HashBagOStuff-construct'] = [ + 'function' => function () use ( $max ) { + $obj = new HashBagOStuff( [ 'maxKeys' => $max ] ); + }, + ]; + $benches['MapCacheLRU-construct'] = [ + 'function' => function () use ( $max ) { + $obj = new MapCacheLRU( $max ); + }, + ]; + } + + if ( $fill ) { + // For the fill bechmark, ensure object creation is not measured. + $hObj = null; + $benches['HashBagOStuff-fill'] = [ + 'setup' => function () use ( &$hObj, $max ) { + $hObj = new HashBagOStuff( [ 'maxKeys' => $max ] ); + }, + 'function' => function () use ( &$hObj, &$keys ) { + foreach ( $keys as $i => $key ) { + $hObj->set( $key, $i ); + } + } + ]; + $mObj = null; + $benches['MapCacheLRU-fill'] = [ + 'setup' => function () use ( &$mObj, $max ) { + $mObj = new MapCacheLRU( $max ); + }, + 'function' => function () use ( &$mObj, &$keys ) { + foreach ( $keys as $i => $key ) { + $mObj->set( $key, $i ); + } + } + ]; + } + + $this->bench( $benches ); + } +} + +$maintClass = BenchmarkLruHash::class; +require_once RUN_MAINTENANCE_IF_MAIN; diff --git a/maintenance/benchmarks/cssmin/circle.svg b/maintenance/benchmarks/cssmin/circle.svg index 6b7d1afd87..4f7af21799 100644 --- a/maintenance/benchmarks/cssmin/circle.svg +++ b/maintenance/benchmarks/cssmin/circle.svg @@ -1,4 +1,4 @@ - + diff --git a/maintenance/compareParserCache.php b/maintenance/compareParserCache.php index 8bd060f324..504c7d7ace 100644 --- a/maintenance/compareParserCache.php +++ b/maintenance/compareParserCache.php @@ -21,6 +21,8 @@ require_once __DIR__ . '/Maintenance.php'; +use MediaWiki\MediaWikiServices; + /** * @ingroup Maintenance */ @@ -41,6 +43,7 @@ class CompareParserCache extends Maintenance { $scanned = 0; $withcache = 0; $withdiff = 0; + $parserCache = MediaWikiServices::getInstance()->getParserCache(); while ( $pages-- > 0 ) { $row = $dbr->selectRow( 'page', '*', [ @@ -66,7 +69,7 @@ class CompareParserCache extends Maintenance { $parserOptions = $page->makeParserOptions( 'canonical' ); - $parserOutputOld = ParserCache::singleton()->get( $page, $parserOptions ); + $parserOutputOld = $parserCache->get( $page, $parserOptions ); if ( $parserOutputOld ) { $t1 = microtime( true ); diff --git a/maintenance/deleteDefaultMessages.php b/maintenance/deleteDefaultMessages.php index 69f4f893fc..ba8662ac2e 100644 --- a/maintenance/deleteDefaultMessages.php +++ b/maintenance/deleteDefaultMessages.php @@ -35,6 +35,7 @@ class DeleteDefaultMessages extends Maintenance { parent::__construct(); $this->addDescription( 'Deletes all pages in the MediaWiki namespace' . ' which were last edited by "MediaWiki default"' ); + $this->addOption( 'dry-run', 'Perform a dry run, delete nothing' ); } public function execute() { @@ -52,14 +53,23 @@ class DeleteDefaultMessages extends Maintenance { ); if ( $dbr->numRows( $res ) == 0 ) { - # No more messages left + // No more messages left $this->output( "done.\n" ); + return; + } + $dryrun = $this->hasOption( 'dry-run' ); + if ( $dryrun ) { + foreach ( $res as $row ) { + $title = Title::makeTitle( $row->page_namespace, $row->page_title ); + $this->output( "\n* [[$title]]" ); + } + $this->output( "\n\nRun again without --dry-run to delete these pages.\n" ); return; } - # Deletions will be made by $user temporarly added to the bot group - # in order to hide it in RecentChanges. + // Deletions will be made by $user temporarly added to the bot group + // in order to hide it in RecentChanges. $user = User::newFromName( 'MediaWiki default' ); if ( !$user ) { $this->error( "Invalid username", true ); @@ -67,7 +77,7 @@ class DeleteDefaultMessages extends Maintenance { $user->addGroup( 'bot' ); $wgUser = $user; - # Handle deletion + // Handle deletion $this->output( "\n...deleting old default messages (this may take a long time!)...", 'msg' ); $dbw = $this->getDB( DB_MASTER ); diff --git a/maintenance/deleteOldRevisions.php b/maintenance/deleteOldRevisions.php index 9559623830..aa11cd96d0 100644 --- a/maintenance/deleteOldRevisions.php +++ b/maintenance/deleteOldRevisions.php @@ -86,6 +86,7 @@ class DeleteOldRevisions extends Maintenance { if ( $delete && $count ) { $this->output( "Deleting..." ); $dbw->delete( 'revision', [ 'rev_id' => $oldRevs ], __METHOD__ ); + $dbw->delete( 'ip_changes', [ 'ipc_rev_id' => $oldRevs ], __METHOD__ ); $this->output( "done.\n" ); } diff --git a/maintenance/deleteOrphanedRevisions.php b/maintenance/deleteOrphanedRevisions.php index e99f2b0d5b..4d6007063a 100644 --- a/maintenance/deleteOrphanedRevisions.php +++ b/maintenance/deleteOrphanedRevisions.php @@ -92,6 +92,9 @@ class DeleteOrphanedRevisions extends Maintenance { $id = [ $id ]; } $dbw->delete( 'revision', [ 'rev_id' => $id ], __METHOD__ ); + + // Delete from ip_changes should a record exist. + $dbw->delete( 'ip_changes', [ 'ipc_rev_id' => $id ], __METHOD__ ); } } diff --git a/maintenance/deleteRevision.php b/maintenance/deleteRevision.php deleted file mode 100644 index 3abbdab99b..0000000000 --- a/maintenance/deleteRevision.php +++ /dev/null @@ -1,110 +0,0 @@ -addDescription( 'Delete one or more revisions by moving them to the archive table' ); - } - - public function execute() { - if ( count( $this->mArgs ) == 0 ) { - $this->error( "No revisions specified", true ); - } - - $this->output( "Deleting revision(s) " . implode( ',', $this->mArgs ) . - " from " . wfWikiID() . "...\n" ); - $dbw = $this->getDB( DB_MASTER ); - - $affected = 0; - foreach ( $this->mArgs as $revID ) { - $dbw->insertSelect( 'archive', [ 'page', 'revision' ], - [ - 'ar_namespace' => 'page_namespace', - 'ar_title' => 'page_title', - 'ar_page_id' => 'page_id', - 'ar_comment' => 'rev_comment', - 'ar_user' => 'rev_user', - 'ar_user_text' => 'rev_user_text', - 'ar_timestamp' => 'rev_timestamp', - 'ar_minor_edit' => 'rev_minor_edit', - 'ar_rev_id' => 'rev_id', - 'ar_text_id' => 'rev_text_id', - 'ar_deleted' => 'rev_deleted', - 'ar_len' => 'rev_len', - ], - [ - 'rev_id' => $revID, - 'page_id = rev_page' - ], - __METHOD__ - ); - if ( !$dbw->affectedRows() ) { - $this->output( "Revision $revID not found\n" ); - } else { - $affected += $dbw->affectedRows(); - $pageID = $dbw->selectField( - 'revision', - 'rev_page', - [ 'rev_id' => $revID ], - __METHOD__ - ); - $pageLatest = $dbw->selectField( - 'page', - 'page_latest', - [ 'page_id' => $pageID ], - __METHOD__ - ); - $dbw->delete( 'revision', [ 'rev_id' => $revID ] ); - if ( $pageLatest == $revID ) { - $newLatest = $dbw->selectField( - 'revision', - 'rev_id', - [ 'rev_page' => $pageID ], - __METHOD__, - [ 'ORDER BY' => 'rev_timestamp DESC' ] - ); - $dbw->update( - 'page', - [ 'page_latest' => $newLatest ], - [ 'page_id' => $pageID ], - __METHOD__ - ); - } - } - } - $this->output( "Deleted $affected revisions\n" ); - } -} - -$maintClass = "DeleteRevision"; -require_once RUN_MAINTENANCE_IF_MAIN; diff --git a/maintenance/dictionary/mediawiki.dic b/maintenance/dictionary/mediawiki.dic index e7ba8faf20..7c3c95d712 100644 --- a/maintenance/dictionary/mediawiki.dic +++ b/maintenance/dictionary/mediawiki.dic @@ -3181,7 +3181,7 @@ prefixsearchdisabled prefs prefsection prefsnologintext2 -prefsubmit +prefcontrol preload preloads preloadtitle 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/findDeprecated.php b/maintenance/findDeprecated.php index 94b7fb4429..6128d2386d 100644 --- a/maintenance/findDeprecated.php +++ b/maintenance/findDeprecated.php @@ -69,6 +69,8 @@ class DeprecatedInterfaceFinder extends FileAwareNodeVisitor { /** * Check whether a function or method includes a call to wfDeprecated(), * indicating that it is a hard-deprecated interface. + * @param PhpParser\Node $node + * @return bool */ public function isHardDeprecated( PhpParser\Node $node ) { if ( !$node->stmts ) { diff --git a/maintenance/findHooks.php b/maintenance/findHooks.php index 81e18c993b..fd36db1dd2 100644 --- a/maintenance/findHooks.php +++ b/maintenance/findHooks.php @@ -79,6 +79,9 @@ class FindHooks extends Maintenance { $nonRecurseDirs = [ "$IP/", ]; + $extraFiles = [ + "$IP/tests/phpunit/MediaWikiTestCase.php", + ]; foreach ( $recurseDirs as $dir ) { $ret = $this->getHooksFromDir( $dir, self::FIND_RECURSIVE ); @@ -90,6 +93,10 @@ class FindHooks extends Maintenance { $potentialHooks = array_merge( $potentialHooks, $ret['good'] ); $badHooks = array_merge( $badHooks, $ret['bad'] ); } + foreach ( $extraFiles as $file ) { + $potentialHooks = array_merge( $potentialHooks, $this->getHooksFromFile( $file ) ); + $badHooks = array_merge( $badHooks, $this->getBadHooksFromFile( $file ) ); + } $documented = array_keys( $documentedHooks ); $potential = array_keys( $potentialHooks ); @@ -262,6 +269,8 @@ class FindHooks extends Maintenance { $n = []; if ( preg_match_all( '/((?:[^,\(\)]|\([^\(\)]*\))+)/', $match[4], $n ) ) { $args = array_map( 'trim', $n[1] ); + // remove empty entries from trailing spaces + $args = array_filter( $args ); } } elseif ( isset( $match[3] ) ) { // Found a parameter for Hooks::run, diff --git a/maintenance/fixDoubleRedirects.php b/maintenance/fixDoubleRedirects.php index 79f75ef7ed..8c9faca2ee 100644 --- a/maintenance/fixDoubleRedirects.php +++ b/maintenance/fixDoubleRedirects.php @@ -42,8 +42,8 @@ class FixDoubleRedirects extends Maintenance { } public function execute() { - $async = $this->getOption( 'async', false ); - $dryrun = $this->getOption( 'dry-run', false ); + $async = $this->hasOption( 'async' ); + $dryrun = $this->hasOption( 'dry-run' ); if ( $this->hasOption( 'title' ) ) { $title = Title::newFromText( $this->getOption( 'title' ) ); diff --git a/maintenance/fixExtLinksProtocolRelative.php b/maintenance/fixExtLinksProtocolRelative.php index 0fae63c3bf..97cd37e07e 100644 --- a/maintenance/fixExtLinksProtocolRelative.php +++ b/maintenance/fixExtLinksProtocolRelative.php @@ -68,13 +68,11 @@ class FixExtLinksProtocolRelative extends LoggedUpdateMaintenance { $db->insert( 'externallinks', [ [ - 'el_id' => $db->nextSequenceValue( 'externallinks_el_id_seq' ), 'el_from' => $row->el_from, 'el_to' => $row->el_to, 'el_index' => "http:{$row->el_index}", ], [ - 'el_id' => $db->nextSequenceValue( 'externallinks_el_id_seq' ), 'el_from' => $row->el_from, 'el_to' => $row->el_to, 'el_index' => "https:{$row->el_index}", diff --git a/maintenance/generateSitemap.php b/maintenance/generateSitemap.php index fb00bede07..26a9c39935 100644 --- a/maintenance/generateSitemap.php +++ b/maintenance/generateSitemap.php @@ -140,9 +140,6 @@ class GenerateSitemap extends Maintenance { */ private $identifier; - /** - * Constructor - */ public function __construct() { parent::__construct(); $this->addDescription( 'Creates a sitemap for the site' ); @@ -195,7 +192,7 @@ class GenerateSitemap extends Maintenance { } $this->identifier = $this->getOption( 'identifier', wfWikiID() ); $this->compress = $this->getOption( 'compress', 'yes' ) !== 'no'; - $this->skipRedirects = $this->getOption( 'skip-redirects', false ) !== false; + $this->skipRedirects = $this->hasOption( 'skip-redirects' ); $this->dbr = $this->getDB( DB_REPLICA ); $this->generateNamespaces(); $this->timestamp = wfTimestamp( TS_ISO_8601, wfTimestampNow() ); @@ -413,7 +410,7 @@ class GenerateSitemap extends Maintenance { /** * gzwrite() / fwrite() wrapper * - * @param resource $handle + * @param resource &$handle * @param string $str */ function write( &$handle, $str ) { @@ -430,7 +427,7 @@ class GenerateSitemap extends Maintenance { /** * gzclose() / fclose() wrapper * - * @param resource $handle + * @param resource &$handle */ function close( &$handle ) { if ( $this->compress ) { 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/jsduck/categories.json b/maintenance/jsduck/categories.json index 2c8c8b0f2f..899d80daa7 100644 --- a/maintenance/jsduck/categories.json +++ b/maintenance/jsduck/categories.json @@ -66,7 +66,8 @@ "mw.Upload*", "mw.ForeignUpload", "mw.ForeignStructuredUpload*", - "mw.GallerySlideshow" + "mw.GallerySlideshow", + "mw.rcfilters*" ] }, { diff --git a/maintenance/language/checkLanguage.inc b/maintenance/language/checkLanguage.inc index cf0acdeaad..9e9fd3eeec 100644 --- a/maintenance/language/checkLanguage.inc +++ b/maintenance/language/checkLanguage.inc @@ -40,7 +40,6 @@ class CheckLanguageCLI { private $includeExif = false; /** - * Constructor. * @param array $options Options for script. */ public function __construct( array $options ) { @@ -557,7 +556,6 @@ class CheckExtensionsCLI extends CheckLanguageCLI { private $extensions; /** - * Constructor. * @param array $options Options for script. * @param string $extension The extension name (or names). */ diff --git a/maintenance/language/zhtable/toCN.manual b/maintenance/language/zhtable/toCN.manual index 6975e2503c..a63149e6a4 100644 --- a/maintenance/language/zhtable/toCN.manual +++ b/maintenance/language/zhtable/toCN.manual @@ -2269,6 +2269,7 @@ 行動電話 移动电话 流動電話 移动电话 數據機 调制解调器 +網域名稱 域名 葉門 也门 貝里斯 伯利兹 維德角 佛得角 @@ -2343,6 +2344,7 @@ 馬爾地夫 马尔代夫 馬爾他 马耳他 馬利共和國 马里共和国 +汕埠 圣佩德罗苏拉 笨豬跳 蹦极跳 绑紧跳 蹦极跳 狗隻 犬只 @@ -2400,6 +2402,9 @@ 賓拉登 本拉登 賓·拉登 本·拉登 歐巴馬 奥巴马 +唐納·川普 唐纳德·特朗普 +當勞·特朗普 唐纳德·特朗普 +當奴·特朗普 唐纳德·特朗普 北韓 北朝鲜 台北韓 台北韩 寮人民民主共和國 老挝人民民主共和国 @@ -2480,6 +2485,8 @@ 百慕達 百慕大 三藩市 旧金山 荷里活 好莱坞 +荷里活道 荷里活道 +荷里活廣場 荷里活广场 麻薩諸塞 马萨诸塞 伊利諾 伊利诺伊 伊利諾伊 伊利诺伊 @@ -2501,6 +2508,8 @@ 韌體 固件 唯讀 只读 作業系統 操作系统 +行動作業系統 移动操作系统 +流動作業系統 移动操作系统 外掛程式 插件 電晶體 晶体管 顯示卡 显卡 @@ -2576,7 +2585,6 @@ A型肝炎 甲型肝炎 芮氏規模 里氏震级 芮氏地震規模 里氏地震规模 黎克特制 里氏 -機率 概率 行政總裁 首席执行官 執行長, 首席执行官, 執行長、 首席执行官、 @@ -2624,6 +2632,7 @@ A型肝炎 甲型肝炎 數位技術 数字技术 數位訊號 数字信号 數碼訊號 数字信号 +數位音樂 数字音乐 數位化 数字化 行動網路 移动网络 流動網絡 移动网络 @@ -2672,3 +2681,4 @@ A型肝炎 甲型肝炎 行人路权 行人路权 塑膠袋 塑料袋 烏龍麵 乌冬面 +披索 比索 diff --git a/maintenance/language/zhtable/toHK.manual b/maintenance/language/zhtable/toHK.manual index 7a07259eec..b71764ad7c 100644 --- a/maintenance/language/zhtable/toHK.manual +++ b/maintenance/language/zhtable/toHK.manual @@ -14,7 +14,6 @@ 妆台 妝枱 弹珠台 彈珠枱 折台 摺枱 -台布 枱布 台历 枱曆 台灯 枱燈 写字台 寫字枱 @@ -2664,6 +2663,9 @@ 機器人 機械人 移动电话 流動電話 行動電話 流動電話 +操作系统 作業系統 +移动操作系统 流動作業系統 +行動作業系統 流動作業系統 數據機 調制解調器 短信 短訊 簡訊 短訊 @@ -2896,6 +2898,8 @@ 賓拉登 本拉登 賓·拉登 本·拉登 歐巴馬 奧巴馬 +唐納·川普 當勞·特朗普 +唐纳德·特朗普 當勞·特朗普 戈登·布朗 白高敦 狂牛症 瘋牛症 A肝 甲肝 @@ -3007,6 +3011,8 @@ IP地址 IP位址 數位技術 數碼技術 数字信号 數碼訊號 數碼訊號 數碼訊號 +数字音乐 數碼音樂 +數位音樂 數碼音樂 数字化 數碼化 數位化 數碼化 行動網路 流動網絡 diff --git a/maintenance/language/zhtable/toSimp.manual b/maintenance/language/zhtable/toSimp.manual index 6f3304fce8..56400c35d4 100644 --- a/maintenance/language/zhtable/toSimp.manual +++ b/maintenance/language/zhtable/toSimp.manual @@ -184,6 +184,7 @@ 崑腔 昆腔 崑蘇 昆苏 崑調 昆调 +崑島 昆岛 諠譁 喧哗 慫慂 怂恿 陈元扞 陈元扞 diff --git a/maintenance/language/zhtable/toTW.manual b/maintenance/language/zhtable/toTW.manual index d983932fe4..16e275168d 100644 --- a/maintenance/language/zhtable/toTW.manual +++ b/maintenance/language/zhtable/toTW.manual @@ -508,7 +508,8 @@ 馬利蘭 馬里蘭 里士满 里奇蒙 荷里活 好萊塢 -荷李活道 荷李活道 +荷里活道 荷里活道 +荷里活廣場 荷里活廣場 维尔京群岛 維京群島 維爾京群島 維京群島 纽黑文 紐哈芬 @@ -533,6 +534,7 @@ 蒙特利爾 蒙特婁 斯堪的纳维亚 斯堪地那維亞 斯堪的納維亞 斯堪地那維亞 +圣佩德罗苏拉 汕埠 麦克尔 麥可 迈克尔 麥可 魯賓斯·巴里切羅 魯本·巴瑞切羅 @@ -604,6 +606,10 @@ 肯尼迪 甘迺迪 奥巴马 歐巴馬 奧巴馬 歐巴馬 +特朗普 川普 +唐纳德·特朗普 唐納·川普 +當勞·特朗普 唐納·川普 +當奴·特朗普 唐納·川普 概率 機率 疯牛症 狂牛症 甲肝 A肝 @@ -619,6 +625,8 @@ 智能卡 智慧卡 數據庫 資料庫 操作系统 作業系統 +移动操作系统 行動作業系統 +流動作業系統 行動作業系統 人机交互 人機互動 交互设计 互動設計 互联网络 網際網路 diff --git a/maintenance/language/zhtable/trad2simp.manual b/maintenance/language/zhtable/trad2simp.manual index e5b05ffec2..1912bcf240 100644 --- a/maintenance/language/zhtable/trad2simp.manual +++ b/maintenance/language/zhtable/trad2simp.manual @@ -135,6 +135,7 @@ U+056D9囙|U+056E0因| U+05705圅|U+051FD函| U+0577F坿|U+09644附| U+0579C垜|U+0579B垛| +U+057BB垻|U+0575D坝| U+0585A塚|U+051A2冢| U+0585F塟|U+0846C葬| U+05872塲|U+0573A场| diff --git a/maintenance/language/zhtable/tradphrases.manual b/maintenance/language/zhtable/tradphrases.manual index 9b2e081019..c5d5fd7350 100644 --- a/maintenance/language/zhtable/tradphrases.manual +++ b/maintenance/language/zhtable/tradphrases.manual @@ -776,6 +776,7 @@ 雪窗螢几 燕几 隱几 +几筵 饑饉 乾薑 毛薑 @@ -1095,6 +1096,7 @@ 上簽發 上簽約 上簽了 +上簽證 中簽名 中簽字 中簽收 @@ -1105,6 +1107,7 @@ 中簽發 中簽約 中簽了 +中簽證 下簽名 下簽字 下簽收 @@ -1115,6 +1118,7 @@ 下簽發 下簽約 下簽了 +下簽證 犖确 磽确 确瘠 @@ -1868,6 +1872,7 @@ 山谷 #分詞用 溝谷 曼谷 +星露谷物語 于美人 緊緻 曰云 @@ -2364,7 +2369,6 @@ 可自制 台子女 台子孫 -台布景 台州 台風穩健 穩健的台風 @@ -2393,6 +2397,7 @@ 尸鳩 尸佼 尸子 +尸羅 尸羅精舍 毗婆尸佛 尸棄佛 @@ -3682,6 +3687,7 @@ 蛋白發 發狀態 發狀況 +染發生 古人有云 昔人有云 云敞 @@ -3710,3 +3716,7 @@ 性別扭曲 箇舊市 雲南箇舊 +關系列 +關系統 +關系所 +關系科 diff --git a/maintenance/language/zhtable/tradphrases_exclude.manual b/maintenance/language/zhtable/tradphrases_exclude.manual index c622560176..3ab14eb199 100644 --- a/maintenance/language/zhtable/tradphrases_exclude.manual +++ b/maintenance/language/zhtable/tradphrases_exclude.manual @@ -776,3 +776,5 @@ 關于 難于 箇舊 +條幹 +檯布 diff --git a/maintenance/migrateComments.php b/maintenance/migrateComments.php new file mode 100644 index 0000000000..9d4e2615c0 --- /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 $table 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/moveBatch.php b/maintenance/moveBatch.php index 3c2968988a..d578a49642 100644 --- a/maintenance/moveBatch.php +++ b/maintenance/moveBatch.php @@ -64,7 +64,7 @@ class MoveBatch extends Maintenance { $user = $this->getOption( 'u', false ); $reason = $this->getOption( 'r', '' ); $interval = $this->getOption( 'i', 0 ); - $noredirects = $this->getOption( 'noredirects', false ); + $noredirects = $this->hasOption( 'noredirects' ); if ( $this->hasArg() ) { $file = fopen( $this->getArg(), 'r' ); } else { diff --git a/maintenance/mssql/archives/patch-add-3d.sql b/maintenance/mssql/archives/patch-add-3d.sql new file mode 100644 index 0000000000..51d2775f28 --- /dev/null +++ b/maintenance/mssql/archives/patch-add-3d.sql @@ -0,0 +1,27 @@ +ALTER TABLE /*$wgDBprefix*/image + DROP CONSTRAINT img_media_type_ckc; + +ALTER TABLE /*$wgDBprefix*/image + ADD CONSTRAINT img_media_type_ckc + CHECK (img_media_type IN("UNKNOWN", "BITMAP", "DRAWING", "AUDIO", "VIDEO", "MULTIMEDIA", "OFFICE", "TEXT", "EXECUTABLE", "ARCHIVE", "3D")); + +ALTER TABLE /*$wgDBprefix*/oldimage + DROP CONSTRAINT oi_media_type_ckc; + +ALTER TABLE /*$wgDBprefix*/oldimage + ADD CONSTRAINT oi_media_type_ckc + CHECK (oi_media_type IN("UNKNOWN", "BITMAP", "DRAWING", "AUDIO", "VIDEO", "MULTIMEDIA", "OFFICE", "TEXT", "EXECUTABLE", "ARCHIVE", "3D")); + +ALTER TABLE /*$wgDBprefix*/filearchive + DROP CONSTRAINT fa_media_type_ckc; + +ALTER TABLE /*$wgDBprefix*/filearchive + ADD CONSTRAINT fa_media_type_ckc + CHECK (fa_media_type IN("UNKNOWN", "BITMAP", "DRAWING", "AUDIO", "VIDEO", "MULTIMEDIA", "OFFICE", "TEXT", "EXECUTABLE", "ARCHIVE", "3D")); + +ALTER TABLE /*$wgDBprefix*/uploadstash + DROP CONSTRAINT us_media_type_ckc; + +ALTER TABLE /*$wgDBprefix*/uploadstash + ADD CONSTRAINT us_media_type_ckc + CHECK (us_media_type IN("UNKNOWN", "BITMAP", "DRAWING", "AUDIO", "VIDEO", "MULTIMEDIA", "OFFICE", "TEXT", "EXECUTABLE", "ARCHIVE", "3D")); diff --git a/maintenance/mssql/tables.sql b/maintenance/mssql/tables.sql index 3babb393fb..2a672945ea 100644 --- a/maintenance/mssql/tables.sql +++ b/maintenance/mssql/tables.sql @@ -610,7 +610,7 @@ CREATE TABLE /*_*/image ( img_sha1 nvarchar(32) NOT NULL default '', CONSTRAINT img_major_mime_ckc check (img_major_mime IN('unknown', 'application', 'audio', 'image', 'text', 'video', 'message', 'model', 'multipart', 'chemical')), - CONSTRAINT img_media_type_ckc check (img_media_type in('UNKNOWN', 'BITMAP', 'DRAWING', 'AUDIO', 'VIDEO', 'MULTIMEDIA', 'OFFICE', 'TEXT', 'EXECUTABLE', 'ARCHIVE')) + CONSTRAINT img_media_type_ckc check (img_media_type in('UNKNOWN', 'BITMAP', 'DRAWING', 'AUDIO', 'VIDEO', 'MULTIMEDIA', 'OFFICE', 'TEXT', 'EXECUTABLE', 'ARCHIVE','3D')) ); CREATE INDEX /*i*/img_usertext_timestamp ON /*_*/image (img_user_text,img_timestamp); @@ -656,7 +656,7 @@ CREATE TABLE /*_*/oldimage ( oi_sha1 nvarchar(32) NOT NULL default '', CONSTRAINT oi_major_mime_ckc check (oi_major_mime IN('unknown', 'application', 'audio', 'image', 'text', 'video', 'message', 'model', 'multipart', 'chemical')), - CONSTRAINT oi_media_type_ckc check (oi_media_type IN('UNKNOWN', 'BITMAP', 'DRAWING', 'AUDIO', 'VIDEO', 'MULTIMEDIA', 'OFFICE', 'TEXT', 'EXECUTABLE', 'ARCHIVE')) + CONSTRAINT oi_media_type_ckc check (oi_media_type IN('UNKNOWN', 'BITMAP', 'DRAWING', 'AUDIO', 'VIDEO', 'MULTIMEDIA', 'OFFICE', 'TEXT', 'EXECUTABLE', 'ARCHIVE','3D')) ); CREATE INDEX /*i*/oi_usertext_timestamp ON /*_*/oldimage (oi_user_text,oi_timestamp); @@ -715,7 +715,7 @@ CREATE TABLE /*_*/filearchive ( fa_sha1 nvarchar(32) NOT NULL default '', CONSTRAINT fa_major_mime_ckc check (fa_major_mime in('unknown', 'application', 'audio', 'image', 'text', 'video', 'message', 'model', 'multipart', 'chemical')), - CONSTRAINT fa_media_type_ckc check (fa_media_type in('UNKNOWN', 'BITMAP', 'DRAWING', 'AUDIO', 'VIDEO', 'MULTIMEDIA', 'OFFICE', 'TEXT', 'EXECUTABLE', 'ARCHIVE')) + CONSTRAINT fa_media_type_ckc check (fa_media_type in('UNKNOWN', 'BITMAP', 'DRAWING', 'AUDIO', 'VIDEO', 'MULTIMEDIA', 'OFFICE', 'TEXT', 'EXECUTABLE', 'ARCHIVE','3D')) ); -- pick out by image name @@ -776,7 +776,7 @@ CREATE TABLE /*_*/uploadstash ( us_image_height int, us_image_bits smallint, - CONSTRAINT us_media_type_ckc check (us_media_type in('UNKNOWN', 'BITMAP', 'DRAWING', 'AUDIO', 'VIDEO', 'MULTIMEDIA', 'OFFICE', 'TEXT', 'EXECUTABLE', 'ARCHIVE')) + CONSTRAINT us_media_type_ckc check (us_media_type in('UNKNOWN', 'BITMAP', 'DRAWING', 'AUDIO', 'VIDEO', 'MULTIMEDIA', 'OFFICE', 'TEXT', 'EXECUTABLE', 'ARCHIVE', '3D')) ); -- sometimes there's a delete for all of a user's stuff. 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/nukeNS.php b/maintenance/nukeNS.php index 0326e02308..e735aed00f 100644 --- a/maintenance/nukeNS.php +++ b/maintenance/nukeNS.php @@ -52,8 +52,8 @@ class NukeNS extends Maintenance { public function execute() { $ns = $this->getOption( 'ns', NS_MEDIAWIKI ); - $delete = $this->getOption( 'delete', false ); - $all = $this->getOption( 'all', false ); + $delete = $this->hasOption( 'delete' ); + $all = $this->hasOption( 'all' ); $dbw = $this->getDB( DB_MASTER ); $this->beginTransaction( $dbw, __METHOD__ ); diff --git a/maintenance/nukePage.php b/maintenance/nukePage.php index ff821cc5e3..e27324a758 100644 --- a/maintenance/nukePage.php +++ b/maintenance/nukePage.php @@ -40,7 +40,7 @@ class NukePage extends Maintenance { public function execute() { $name = $this->getArg(); - $delete = $this->getOption( 'delete', false ); + $delete = $this->hasOption( 'delete' ); $dbw = $this->getDB( DB_MASTER ); $this->beginTransaction( $dbw, __METHOD__ ); diff --git a/maintenance/oracle/archives/patch-auto_increment_triggers.sql b/maintenance/oracle/archives/patch-auto_increment_triggers.sql new file mode 100644 index 0000000000..6b471b04b7 --- /dev/null +++ b/maintenance/oracle/archives/patch-auto_increment_triggers.sql @@ -0,0 +1,144 @@ +define mw_prefix='{$wgDBprefix}'; + +-- Package to help with making Oracle more like other DBs with respect to +-- auto-incrementing columns. +/*$mw$*/ +CREATE PACKAGE &mw_prefix.lastval_pkg IS + lastval NUMBER; + PROCEDURE setLastval(val IN NUMBER, field OUT NUMBER); + FUNCTION getLastval RETURN NUMBER; +END; +/*$mw$*/ + +/*$mw$*/ +CREATE PACKAGE BODY &mw_prefix.lastval_pkg IS + PROCEDURE setLastval(val IN NUMBER, field OUT NUMBER) IS BEGIN + lastval := val; + field := val; + END; + + FUNCTION getLastval RETURN NUMBER IS BEGIN + RETURN lastval; + END; +END; +/*$mw$*/ + +/*$mw$*/ +CREATE TRIGGER &mw_prefix.mwuser_default_user_id BEFORE INSERT ON &mw_prefix.mwuser + FOR EACH ROW WHEN (new.user_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(user_user_id_seq.nextval, :new.user_id); +END; +/*$mw$*/ + +/*$mw$*/ +CREATE TRIGGER &mw_prefix.page_default_page_id BEFORE INSERT ON &mw_prefix.page + FOR EACH ROW WHEN (new.page_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(page_page_id_seq.nextval, :new.page_id); +END; +/*$mw$*/ + +/*$mw$*/ +CREATE TRIGGER &mw_prefix.revision_default_rev_id BEFORE INSERT ON &mw_prefix.revision + FOR EACH ROW WHEN (new.rev_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(revision_rev_id_seq.nextval, :new.rev_id); +END; +/*$mw$*/ + +/*$mw$*/ +CREATE TRIGGER &mw_prefix.text_default_old_id BEFORE INSERT ON &mw_prefix.text + FOR EACH ROW WHEN (new.old_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(text_old_id_seq.nextval, :new.old_id); +END; +/*$mw$*/ + +/*$mw$*/ +CREATE TRIGGER &mw_prefix.archive_default_ar_id BEFORE INSERT ON &mw_prefix.archive + FOR EACH ROW WHEN (new.ar_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(archive_ar_id_seq.nextval, :new.ar_id); +END; +/*$mw$*/ + +/*$mw$*/ +CREATE TRIGGER &mw_prefix.category_default_cat_id BEFORE INSERT ON &mw_prefix.category + FOR EACH ROW WHEN (new.cat_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(category_cat_id_seq.nextval, :new.cat_id); +END; +/*$mw$*/ + +/*$mw$*/ +CREATE TRIGGER &mw_prefix.externallinks_default_el_id BEFORE INSERT ON &mw_prefix.externallinks + FOR EACH ROW WHEN (new.el_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(externallinks_el_id_seq.nextval, :new.el_id); +END; +/*$mw$*/ + +/*$mw$*/ +CREATE TRIGGER &mw_prefix.ipblocks_default_ipb_id BEFORE INSERT ON &mw_prefix.ipblocks + FOR EACH ROW WHEN (new.ipb_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(ipblocks_ipb_id_seq.nextval, :new.ipb_id); +END; +/*$mw$*/ + +/*$mw$*/ +CREATE TRIGGER &mw_prefix.filearchive_default_fa_id BEFORE INSERT ON &mw_prefix.filearchive + FOR EACH ROW WHEN (new.fa_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(filearchive_fa_id_seq.nextval, :new.fa_id); +END; +/*$mw$*/ + +/*$mw$*/ +CREATE TRIGGER &mw_prefix.uploadstash_default_us_id BEFORE INSERT ON &mw_prefix.uploadstash + FOR EACH ROW WHEN (new.us_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(uploadstash_us_id_seq.nextval, :new.us_id); +END; +/*$mw$*/ + +/*$mw$*/ +CREATE TRIGGER &mw_prefix.recentchanges_default_rc_id BEFORE INSERT ON &mw_prefix.recentchanges + FOR EACH ROW WHEN (new.rc_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(recentchanges_rc_id_seq.nextval, :new.rc_id); +END; +/*$mw$*/ + +/*$mw$*/ +CREATE TRIGGER &mw_prefix.logging_default_log_id BEFORE INSERT ON &mw_prefix.logging + FOR EACH ROW WHEN (new.log_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(logging_log_id_seq.nextval, :new.log_id); +END; +/*$mw$*/ + +/*$mw$*/ +CREATE TRIGGER &mw_prefix.job_default_job_id BEFORE INSERT ON &mw_prefix.job + FOR EACH ROW WHEN (new.job_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(job_job_id_seq.nextval, :new.job_id); +END; +/*$mw$*/ + +/*$mw$*/ +CREATE TRIGGER &mw_prefix.page_restrictions_default_pr_id BEFORE INSERT ON &mw_prefix.page_restrictions + FOR EACH ROW WHEN (new.pr_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(page_restrictions_pr_id_seq.nextval, :new.pr_id); +END; +/*$mw$*/ + +/*$mw$*/ +CREATE TRIGGER &mw_prefix.sites_default_site_id BEFORE INSERT ON &mw_prefix.sites + FOR EACH ROW WHEN (new.site_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(sites_site_id_seq.nextval, :new.site_id); +END; +/*$mw$*/ diff --git a/maintenance/oracle/tables.sql b/maintenance/oracle/tables.sql index fc3c696a6c..44c907c4d4 100644 --- a/maintenance/oracle/tables.sql +++ b/maintenance/oracle/tables.sql @@ -1,6 +1,28 @@ -- defines must comply with ^define\s*([^\s=]*)\s*=\s?'\{\$([^\}]*)\}'; define mw_prefix='{$wgDBprefix}'; +-- Package to help with making Oracle more like other DBs with respect to +-- auto-incrementing columns. +/*$mw$*/ +CREATE PACKAGE &mw_prefix.lastval_pkg IS + lastval NUMBER; + PROCEDURE setLastval(val IN NUMBER, field OUT NUMBER); + FUNCTION getLastval RETURN NUMBER; +END; +/*$mw$*/ + +/*$mw$*/ +CREATE PACKAGE BODY &mw_prefix.lastval_pkg IS + PROCEDURE setLastval(val IN NUMBER, field OUT NUMBER) IS BEGIN + lastval := val; + field := val; + END; + + FUNCTION getLastval RETURN NUMBER IS BEGIN + RETURN lastval; + END; +END; +/*$mw$*/ CREATE SEQUENCE user_user_id_seq; CREATE TABLE &mw_prefix.mwuser ( -- replace reserved word 'user' @@ -25,6 +47,13 @@ ALTER TABLE &mw_prefix.mwuser ADD CONSTRAINT &mw_prefix.mwuser_pk PRIMARY KEY (u CREATE UNIQUE INDEX &mw_prefix.mwuser_u01 ON &mw_prefix.mwuser (user_name); CREATE INDEX &mw_prefix.mwuser_i01 ON &mw_prefix.mwuser (user_email_token); CREATE INDEX &mw_prefix.mwuser_i02 ON &mw_prefix.mwuser (user_email, user_name); +/*$mw$*/ +CREATE TRIGGER &mw_prefix.mwuser_default_user_id BEFORE INSERT ON &mw_prefix.mwuser + FOR EACH ROW WHEN (new.user_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(user_user_id_seq.nextval, :new.user_id); +END; +/*$mw$*/ -- Create a dummy user to satisfy fk contraints especially with revisions INSERT INTO &mw_prefix.mwuser @@ -86,6 +115,13 @@ CREATE UNIQUE INDEX &mw_prefix.page_u01 ON &mw_prefix.page (page_namespace,page_ CREATE INDEX &mw_prefix.page_i01 ON &mw_prefix.page (page_random); CREATE INDEX &mw_prefix.page_i02 ON &mw_prefix.page (page_len); CREATE INDEX &mw_prefix.page_i03 ON &mw_prefix.page (page_is_redirect, page_namespace, page_len); +/*$mw$*/ +CREATE TRIGGER &mw_prefix.page_default_page_id BEFORE INSERT ON &mw_prefix.page + FOR EACH ROW WHEN (new.page_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(page_page_id_seq.nextval, :new.page_id); +END; +/*$mw$*/ -- Create a dummy page to satisfy fk contraints especially with revisions INSERT INTO &mw_prefix.page @@ -125,6 +161,13 @@ CREATE INDEX &mw_prefix.revision_i02 ON &mw_prefix.revision (rev_page,rev_timest CREATE INDEX &mw_prefix.revision_i03 ON &mw_prefix.revision (rev_user,rev_timestamp); CREATE INDEX &mw_prefix.revision_i04 ON &mw_prefix.revision (rev_user_text,rev_timestamp); CREATE INDEX &mw_prefix.revision_i05 ON &mw_prefix.revision (rev_page,rev_user,rev_timestamp); +/*$mw$*/ +CREATE TRIGGER &mw_prefix.revision_default_rev_id BEFORE INSERT ON &mw_prefix.revision + FOR EACH ROW WHEN (new.rev_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(revision_rev_id_seq.nextval, :new.rev_id); +END; +/*$mw$*/ CREATE SEQUENCE text_old_id_seq; CREATE TABLE &mw_prefix.pagecontent ( -- replaces reserved word 'text' @@ -133,6 +176,13 @@ CREATE TABLE &mw_prefix.pagecontent ( -- replaces reserved word 'text' old_flags VARCHAR2(255) ); ALTER TABLE &mw_prefix.pagecontent ADD CONSTRAINT &mw_prefix.pagecontent_pk PRIMARY KEY (old_id); +/*$mw$*/ +CREATE TRIGGER &mw_prefix.text_default_old_id BEFORE INSERT ON &mw_prefix.text + FOR EACH ROW WHEN (new.old_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(text_old_id_seq.nextval, :new.old_id); +END; +/*$mw$*/ CREATE SEQUENCE archive_ar_id_seq; CREATE TABLE &mw_prefix.archive ( @@ -161,6 +211,13 @@ ALTER TABLE &mw_prefix.archive ADD CONSTRAINT &mw_prefix.archive_fk1 FOREIGN KEY CREATE INDEX &mw_prefix.archive_i01 ON &mw_prefix.archive (ar_namespace,ar_title,ar_timestamp); CREATE INDEX &mw_prefix.archive_i02 ON &mw_prefix.archive (ar_user_text,ar_timestamp); CREATE INDEX &mw_prefix.archive_i03 ON &mw_prefix.archive (ar_rev_id); +/*$mw$*/ +CREATE TRIGGER &mw_prefix.archive_default_ar_id BEFORE INSERT ON &mw_prefix.archive + FOR EACH ROW WHEN (new.ar_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(archive_ar_id_seq.nextval, :new.ar_id); +END; +/*$mw$*/ CREATE TABLE &mw_prefix.pagelinks ( pl_from NUMBER NOT NULL, @@ -215,6 +272,13 @@ CREATE TABLE &mw_prefix.category ( ALTER TABLE &mw_prefix.category ADD CONSTRAINT &mw_prefix.category_pk PRIMARY KEY (cat_id); CREATE UNIQUE INDEX &mw_prefix.category_u01 ON &mw_prefix.category (cat_title); CREATE INDEX &mw_prefix.category_i01 ON &mw_prefix.category (cat_pages); +/*$mw$*/ +CREATE TRIGGER &mw_prefix.category_default_cat_id BEFORE INSERT ON &mw_prefix.category + FOR EACH ROW WHEN (new.cat_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(category_cat_id_seq.nextval, :new.cat_id); +END; +/*$mw$*/ CREATE SEQUENCE externallinks_el_id_seq; CREATE TABLE &mw_prefix.externallinks ( @@ -231,6 +295,13 @@ CREATE INDEX &mw_prefix.externallinks_i02 ON &mw_prefix.externallinks (el_to, el CREATE INDEX &mw_prefix.externallinks_i03 ON &mw_prefix.externallinks (el_index); CREATE INDEX &mw_prefix.externallinks_i04 ON &mw_prefix.externallinks (el_index_60, el_id); CREATE INDEX &mw_prefix.externallinks_i05 ON &mw_prefix.externallinks (el_from, el_index_60, el_id); +/*$mw$*/ +CREATE TRIGGER &mw_prefix.externallinks_default_el_id BEFORE INSERT ON &mw_prefix.externallinks + FOR EACH ROW WHEN (new.el_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(externallinks_el_id_seq.nextval, :new.el_id); +END; +/*$mw$*/ CREATE TABLE &mw_prefix.langlinks ( ll_from NUMBER NOT NULL, @@ -290,6 +361,13 @@ CREATE INDEX &mw_prefix.ipblocks_i02 ON &mw_prefix.ipblocks (ipb_range_start, ip CREATE INDEX &mw_prefix.ipblocks_i03 ON &mw_prefix.ipblocks (ipb_timestamp); CREATE INDEX &mw_prefix.ipblocks_i04 ON &mw_prefix.ipblocks (ipb_expiry); CREATE INDEX &mw_prefix.ipblocks_i05 ON &mw_prefix.ipblocks (ipb_parent_block_id); +/*$mw$*/ +CREATE TRIGGER &mw_prefix.ipblocks_default_ipb_id BEFORE INSERT ON &mw_prefix.ipblocks + FOR EACH ROW WHEN (new.ipb_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(ipblocks_ipb_id_seq.nextval, :new.ipb_id); +END; +/*$mw$*/ CREATE TABLE &mw_prefix.image ( img_name VARCHAR2(255) NOT NULL, @@ -374,6 +452,13 @@ CREATE INDEX &mw_prefix.filearchive_i02 ON &mw_prefix.filearchive (fa_storage_gr CREATE INDEX &mw_prefix.filearchive_i03 ON &mw_prefix.filearchive (fa_deleted_timestamp); CREATE INDEX &mw_prefix.filearchive_i04 ON &mw_prefix.filearchive (fa_user_text,fa_timestamp); CREATE INDEX &mw_prefix.filearchive_i05 ON &mw_prefix.filearchive (fa_sha1); +/*$mw$*/ +CREATE TRIGGER &mw_prefix.filearchive_default_fa_id BEFORE INSERT ON &mw_prefix.filearchive + FOR EACH ROW WHEN (new.fa_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(filearchive_fa_id_seq.nextval, :new.fa_id); +END; +/*$mw$*/ CREATE SEQUENCE uploadstash_us_id_seq; CREATE TABLE &mw_prefix.uploadstash ( @@ -400,6 +485,13 @@ ALTER TABLE &mw_prefix.uploadstash ADD CONSTRAINT &mw_prefix.uploadstash_fk1 FOR CREATE INDEX &mw_prefix.uploadstash_i01 ON &mw_prefix.uploadstash (us_user); CREATE INDEX &mw_prefix.uploadstash_i02 ON &mw_prefix.uploadstash (us_timestamp); CREATE UNIQUE INDEX &mw_prefix.uploadstash_u01 ON &mw_prefix.uploadstash (us_key); +/*$mw$*/ +CREATE TRIGGER &mw_prefix.uploadstash_default_us_id BEFORE INSERT ON &mw_prefix.uploadstash + FOR EACH ROW WHEN (new.us_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(uploadstash_us_id_seq.nextval, :new.us_id); +END; +/*$mw$*/ CREATE SEQUENCE recentchanges_rc_id_seq; CREATE TABLE &mw_prefix.recentchanges ( @@ -440,6 +532,13 @@ CREATE INDEX &mw_prefix.recentchanges_i05 ON &mw_prefix.recentchanges (rc_ip); CREATE INDEX &mw_prefix.recentchanges_i06 ON &mw_prefix.recentchanges (rc_namespace, rc_user_text); CREATE INDEX &mw_prefix.recentchanges_i07 ON &mw_prefix.recentchanges (rc_user_text, rc_timestamp); CREATE INDEX &mw_prefix.recentchanges_i08 ON &mw_prefix.recentchanges (rc_namespace, rc_type, rc_patrolled, rc_timestamp); +/*$mw$*/ +CREATE TRIGGER &mw_prefix.recentchanges_default_rc_id BEFORE INSERT ON &mw_prefix.recentchanges + FOR EACH ROW WHEN (new.rc_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(recentchanges_rc_id_seq.nextval, :new.rc_id); +END; +/*$mw$*/ CREATE TABLE &mw_prefix.watchlist ( wl_id NUMBER NOT NULL, @@ -518,6 +617,13 @@ CREATE INDEX &mw_prefix.logging_i04 ON &mw_prefix.logging (log_timestamp); CREATE INDEX &mw_prefix.logging_i05 ON &mw_prefix.logging (log_type, log_action, log_timestamp); CREATE INDEX &mw_prefix.logging_i06 ON &mw_prefix.logging (log_user_text, log_type, log_timestamp); CREATE INDEX &mw_prefix.logging_i07 ON &mw_prefix.logging (log_user_text, log_timestamp); +/*$mw$*/ +CREATE TRIGGER &mw_prefix.logging_default_log_id BEFORE INSERT ON &mw_prefix.logging + FOR EACH ROW WHEN (new.log_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(logging_log_id_seq.nextval, :new.log_id); +END; +/*$mw$*/ CREATE TABLE &mw_prefix.log_search ( ls_field VARCHAR2(32) NOT NULL, @@ -548,6 +654,13 @@ CREATE INDEX &mw_prefix.job_i02 ON &mw_prefix.job (job_timestamp); CREATE INDEX &mw_prefix.job_i03 ON &mw_prefix.job (job_sha1); CREATE INDEX &mw_prefix.job_i04 ON &mw_prefix.job (job_cmd,job_token,job_random); CREATE INDEX &mw_prefix.job_i05 ON &mw_prefix.job (job_attempts); +/*$mw$*/ +CREATE TRIGGER &mw_prefix.job_default_job_id BEFORE INSERT ON &mw_prefix.job + FOR EACH ROW WHEN (new.job_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(job_job_id_seq.nextval, :new.job_id); +END; +/*$mw$*/ CREATE TABLE &mw_prefix.querycache_info ( qci_type VARCHAR2(32) NOT NULL, @@ -593,6 +706,13 @@ CREATE UNIQUE INDEX &mw_prefix.page_restrictions_u01 ON &mw_prefix.page_restrict CREATE INDEX &mw_prefix.page_restrictions_i01 ON &mw_prefix.page_restrictions (pr_type,pr_level); CREATE INDEX &mw_prefix.page_restrictions_i02 ON &mw_prefix.page_restrictions (pr_level); CREATE INDEX &mw_prefix.page_restrictions_i03 ON &mw_prefix.page_restrictions (pr_cascade); +/*$mw$*/ +CREATE TRIGGER &mw_prefix.page_restrictions_default_pr_id BEFORE INSERT ON &mw_prefix.page_restrictions + FOR EACH ROW WHEN (new.pr_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(page_restrictions_pr_id_seq.nextval, :new.pr_id); +END; +/*$mw$*/ CREATE TABLE &mw_prefix.protected_titles ( pt_namespace NUMBER DEFAULT 0 NOT NULL, @@ -701,6 +821,13 @@ CREATE INDEX &mw_prefix.sites_i04 ON &mw_prefix.sites (site_language); CREATE INDEX &mw_prefix.sites_i05 ON &mw_prefix.sites (site_protocol); CREATE INDEX &mw_prefix.sites_i06 ON &mw_prefix.sites (site_domain); CREATE INDEX &mw_prefix.sites_i07 ON &mw_prefix.sites (site_forward); +/*$mw$*/ +CREATE TRIGGER &mw_prefix.sites_default_site_id BEFORE INSERT ON &mw_prefix.sites + FOR EACH ROW WHEN (new.site_id IS NULL) +BEGIN + &mw_prefix.lastval_pkg.setLastval(sites_site_id_seq.nextval, :new.site_id); +END; +/*$mw$*/ CREATE TABLE &mw_prefix.site_identifiers ( si_site NUMBER NOT NULL, diff --git a/maintenance/orphans.php b/maintenance/orphans.php index e36c5b67dd..644fb958df 100644 --- a/maintenance/orphans.php +++ b/maintenance/orphans.php @@ -75,20 +75,24 @@ class Orphans extends Maintenance { */ private function checkOrphans( $fix ) { $dbw = $this->getDB( DB_MASTER ); - $page = $dbw->tableName( 'page' ); - $revision = $dbw->tableName( 'revision' ); + $commentStore = new CommentStore( 'rev_comment' ); if ( $fix ) { $this->lockTables( $dbw ); } + $commentQuery = $commentStore->getJoin(); + $this->output( "Checking for orphan revision table entries... " . "(this may take a while on a large wiki)\n" ); - $result = $dbw->query( " - SELECT * - FROM $revision LEFT OUTER JOIN $page ON rev_page=page_id - WHERE page_id IS NULL - " ); + $result = $dbw->select( + [ 'revision', 'page' ] + $commentQuery['tables'], + [ 'rev_id', 'rev_page', 'rev_timestamp', 'rev_user_text' ] + $commentQuery['fields'], + [ 'page_id' => null ], + __METHOD__, + [], + [ 'page' => [ 'LEFT JOIN', [ 'rev_page=page_id' ] ] ] + $commentQuery['joins'] + ); $orphans = $result->numRows(); if ( $orphans > 0 ) { global $wgContLang; @@ -100,9 +104,10 @@ class Orphans extends Maintenance { ) ); foreach ( $result as $row ) { - $comment = ( $row->rev_comment == '' ) - ? '' - : '(' . $wgContLang->truncate( $row->rev_comment, 40 ) . ')'; + $comment = $commentStore->getComment( $row )->text; + if ( $comment !== '' ) { + $comment = '(' . $wgContLang->truncate( $comment, 40 ) . ')'; + } $this->output( sprintf( "%10d %10d %14s %20s %s\n", $row->rev_id, $row->rev_page, diff --git a/maintenance/populateCategory.php b/maintenance/populateCategory.php index 87a46998e2..5dccdd65ec 100644 --- a/maintenance/populateCategory.php +++ b/maintenance/populateCategory.php @@ -71,7 +71,7 @@ TEXT public function execute() { $begin = $this->getOption( 'begin', '' ); $throttle = $this->getOption( 'throttle', 0 ); - $force = $this->getOption( 'force', false ); + $force = $this->hasOption( 'force' ); $dbw = $this->getDB( DB_MASTER ); diff --git a/maintenance/populateInterwiki.php b/maintenance/populateInterwiki.php index 8f7a918ae9..1b05e1ed03 100644 --- a/maintenance/populateInterwiki.php +++ b/maintenance/populateInterwiki.php @@ -56,7 +56,7 @@ TEXT } public function execute() { - $force = $this->getOption( 'force', false ); + $force = $this->hasOption( 'force' ); $this->source = $this->getOption( 'source', 'https://en.wikipedia.org/w/api.php' ); $data = $this->fetchLinks(); diff --git a/maintenance/populateIpChanges.php b/maintenance/populateIpChanges.php new file mode 100644 index 0000000000..40a596c8f2 --- /dev/null +++ b/maintenance/populateIpChanges.php @@ -0,0 +1,136 @@ +addDescription( <<addOption( 'rev-id', 'The rev_id to start copying from. Default: 0', false, true ); + $this->addOption( + 'max-rev-id', + 'The rev_id to stop at. Default: result of MAX(rev_id)', + false, + true + ); + $this->addOption( + 'throttle', + 'Wait this many milliseconds after copying each batch of revisions. Default: 0', + false, + true + ); + $this->addOption( 'force', 'Run regardless of whether the database says it\'s been run already' ); + } + + public function doDBUpdates() { + $lbFactory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory(); + $dbr = $this->getDB( DB_REPLICA, [ 'vslow' ] ); + $dbw = $this->getDB( DB_MASTER ); + $throttle = intval( $this->getOption( 'throttle', 0 ) ); + $maxRevId = intval( $this->getOption( 'max-rev-id', 0 ) ); + $start = $this->getOption( 'rev-id', 0 ); + $end = $maxRevId > 0 + ? $maxRevId + : $dbw->selectField( 'revision', 'MAX(rev_id)', false, __METHOD__ ); + $blockStart = $start; + $attempted = 0; + $inserted = 0; + + $this->output( "Copying IP revisions to ip_changes, from rev_id $start to rev_id $end\n" ); + + while ( $blockStart <= $end ) { + $blockEnd = min( $blockStart + $this->mBatchSize, $end ); + $rows = $dbr->select( + 'revision', + [ 'rev_id', 'rev_timestamp', 'rev_user_text' ], + [ "rev_id BETWEEN $blockStart AND $blockEnd", 'rev_user' => 0 ], + __METHOD__ + ); + + $numRows = $rows->numRows(); + + if ( !$rows || $numRows === 0 ) { + $blockStart = $blockEnd + 1; + continue; + } + + $this->output( "...checking $numRows revisions for IP edits that need copying, " . + "between rev_ids $blockStart and $blockEnd\n" ); + + $insertRows = []; + foreach ( $rows as $row ) { + // Make sure this is really an IP, e.g. not maintenance user or imported revision. + if ( IP::isValid( $row->rev_user_text ) ) { + $insertRows[] = [ + 'ipc_rev_id' => $row->rev_id, + 'ipc_rev_timestamp' => $row->rev_timestamp, + 'ipc_hex' => IP::toHex( $row->rev_user_text ), + ]; + + $attempted++; + } + } + + if ( $insertRows ) { + $dbw->insert( 'ip_changes', $insertRows, __METHOD__, 'IGNORE' ); + + $inserted += $dbw->affectedRows(); + } + + $lbFactory->waitForReplication(); + usleep( $throttle * 1000 ); + + $blockStart = $blockEnd + 1; + } + + $this->output( "Attempted to insert $attempted IP revisions, $inserted actually done.\n" ); + + return true; + } + + protected function getUpdateKey() { + return 'populate ip_changes'; + } +} + +$maintClass = "PopulateIpChanges"; +require_once RUN_MAINTENANCE_IF_MAIN; diff --git a/maintenance/populatePPSortKey.php b/maintenance/populatePPSortKey.php new file mode 100644 index 0000000000..7e3c2c3d25 --- /dev/null +++ b/maintenance/populatePPSortKey.php @@ -0,0 +1,106 @@ +addDescription( 'Populate the pp_sortkey field' ); + $this->setBatchSize( 100 ); + } + + protected function doDBUpdates() { + $dbw = $this->getDB( DB_MASTER ); + + $lastProp = null; + $lastPageValue = 0; + $editedRowCount = 0; + + $this->output( "Populating page_props.pp_sortkey...\n" ); + while ( true ) { + $conditions = [ 'pp_sortkey IS NULL' ]; + if ( $lastPageValue !== 0 ) { + $conditions[] = 'pp_page > ' . $dbw->addQuotes( $lastPageValue ) . ' OR ' . + '( pp_page = ' . $dbw->addQuotes( $lastPageValue ) . + ' AND pp_propname > ' . $dbw->addQuotes( $lastProp ) . ' )'; + } + + $res = $dbw->select( + 'page_props', + [ 'pp_propname', 'pp_page', 'pp_sortkey', 'pp_value' ], + $conditions, + __METHOD__, + [ + 'ORDER BY' => 'pp_page, pp_propname', + 'LIMIT' => $this->mBatchSize + ] + ); + + if ( $res->numRows() === 0 ) { + break; + } + + $this->beginTransaction( $dbw, __METHOD__ ); + + foreach ( $res as $row ) { + if ( !is_numeric( $row->pp_value ) ) { + continue; + } + $dbw->update( + 'page_props', + [ 'pp_sortkey' => $row->pp_value ], + [ + 'pp_page' => $row->pp_page, + 'pp_propname' => $row->pp_propname + ], + __METHOD__ + ); + $editedRowCount++; + } + + $this->output( "Updated " . $editedRowCount . " rows\n" ); + $this->commitTransaction( $dbw, __METHOD__ ); + + // We need to get the last element's page ID + $lastPageValue = $row->pp_page; + // And the propname... + $lastProp = $row->pp_propname; + } + + $this->output( "Populating page_props.pp_sortkey complete.\n" ); + } + + protected function getUpdateKey() { + return 'populate pp_sortkey'; + } +} + +$maintClass = 'PopulatePPSortKey'; +require_once RUN_MAINTENANCE_IF_MAIN; diff --git a/maintenance/postgres/archives/patch-add-3d.sql b/maintenance/postgres/archives/patch-add-3d.sql new file mode 100644 index 0000000000..f8927557c3 --- /dev/null +++ b/maintenance/postgres/archives/patch-add-3d.sql @@ -0,0 +1 @@ +ALTER TYPE media_type ADD VALUE '3D'; 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 e19c447a65..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, @@ -393,7 +422,7 @@ CREATE INDEX fa_nouser ON filearchive (fa_deleted_user); CREATE INDEX fa_sha1 ON filearchive (fa_sha1); CREATE SEQUENCE uploadstash_us_id_seq; -CREATE TYPE media_type AS ENUM ('UNKNOWN','BITMAP','DRAWING','AUDIO','VIDEO','MULTIMEDIA','OFFICE','TEXT','EXECUTABLE','ARCHIVE'); +CREATE TYPE media_type AS ENUM ('UNKNOWN','BITMAP','DRAWING','AUDIO','VIDEO','MULTIMEDIA','OFFICE','TEXT','EXECUTABLE','ARCHIVE','3D'); CREATE TABLE uploadstash ( us_id INTEGER PRIMARY KEY NOT NULL DEFAULT nextval('uploadstash_us_id_seq'), @@ -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/rebuildFileCache.php b/maintenance/rebuildFileCache.php index 04ac9678d9..fe3944c876 100644 --- a/maintenance/rebuildFileCache.php +++ b/maintenance/rebuildFileCache.php @@ -78,7 +78,7 @@ class RebuildFileCache extends Maintenance { $this->output( "Building content page file cache from page {$start}!\n" ); $dbr = $this->getDB( DB_REPLICA ); - $overwrite = $this->getOption( 'overwrite', false ); + $overwrite = $this->hasOption( 'overwrite' ); $start = ( $start > 0 ) ? $start : $dbr->selectField( 'page', 'MIN(page_id)', false, __METHOD__ ); diff --git a/maintenance/rebuildrecentchanges.php b/maintenance/rebuildrecentchanges.php index 142a4e5f2f..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,12 +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 - ? $dbw->addQuotes( RecentChange::SRC_NEW ) - : $dbw->addQuotes( 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 ) { @@ -239,9 +241,7 @@ class RebuildRecentchanges extends Maintenance { 'rc_last_oldid' => $lastOldId, 'rc_new' => $new, 'rc_type' => $new ? RC_NEW : RC_EDIT, - 'rc_source' => $new === 1 - ? $dbw->addQuotes( RecentChange::SRC_NEW ) - : $dbw->addQuotes( RecentChange::SRC_EDIT ), + 'rc_source' => $new === 1 ? RecentChange::SRC_NEW : RecentChange::SRC_EDIT, 'rc_old_len' => $lastSize, 'rc_new_len' => $size, ], @@ -270,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 ) ), @@ -302,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', [ @@ -317,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, @@ -325,7 +327,7 @@ class RebuildRecentchanges extends Maintenance { 'rc_this_oldid' => 0, 'rc_last_oldid' => 0, 'rc_type' => RC_LOG, - 'rc_source' => $dbw->addQuotes( RecentChange::SRC_LOG ), + 'rc_source' => RecentChange::SRC_LOG, 'rc_cur_id' => $field->isNullable() ? $row->page_id : (int)$row->page_id, // NULL => 0, @@ -334,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/recountCategories.php b/maintenance/recountCategories.php new file mode 100644 index 0000000000..a4bfa98992 --- /dev/null +++ b/maintenance/recountCategories.php @@ -0,0 +1,172 @@ +addDescription( <<<'TEXT' +This script refreshes the category membership counts stored in the category +table. As time passes, these counts often drift from the actual number of +category members. The script identifies rows where the value in the category +table does not match the number of categorylinks rows for that category, and +updates the category table accordingly. + +To fully refresh the data in the category table, you need to run this script +three times: once in each mode. Alternatively, just one mode can be run if +required. +TEXT + ); + $this->addOption( + 'mode', + '(REQUIRED) Which category count column to recompute: "pages", "subcats" or "files".', + true, + true + ); + $this->addOption( + 'begin', + 'Only recount categories with cat_id greater than the given value', + false, + true + ); + $this->addOption( + 'throttle', + 'Wait this many milliseconds after each batch. Default: 0', + false, + true + ); + + $this->setBatchSize( 500 ); + } + + public function execute() { + $this->mode = $this->getOption( 'mode' ); + if ( !in_array( $this->mode, [ 'pages', 'subcats', 'files' ] ) ) { + $this->error( 'Please specify a valid mode: one of "pages", "subcats" or "files".', 1 ); + } + + $this->minimumId = intval( $this->getOption( 'begin', 0 ) ); + + // do the work, batch by batch + $affectedRows = 0; + while ( ( $result = $this->doWork() ) !== false ) { + $affectedRows += $result; + usleep( $this->getOption( 'throttle', 0 ) * 1000 ); + } + + $this->output( "Done! Updated the {$this->mode} counts of $affectedRows categories.\n" . + "Now run the script using the other --mode options if you haven't already.\n" ); + if ( $this->mode === 'pages' ) { + $this->output( + "Also run 'php cleanupEmptyCategories.php --mode remove' to remove empty,\n" . + "nonexistent categories from the category table.\n\n" ); + } + } + + protected function doWork() { + $this->output( "Finding up to {$this->mBatchSize} drifted rows " . + "starting at cat_id {$this->minimumId}...\n" ); + + $countingConds = [ 'cl_to = cat_title' ]; + if ( $this->mode === 'subcats' ) { + $countingConds['cl_type'] = 'subcat'; + } elseif ( $this->mode === 'files' ) { + $countingConds['cl_type'] = 'file'; + } + + $dbr = $this->getDB( DB_REPLICA, 'vslow' ); + $countingSubquery = $dbr->selectSQLText( 'categorylinks', + 'COUNT(*)', + $countingConds, + __METHOD__ ); + + // First, let's find out which categories have drifted and need to be updated. + // The query counts the categorylinks for each category on the replica DB, + // but this data can't be used for updating the master, so we don't include it + // in the results. + $idsToUpdate = $dbr->selectFieldValues( 'category', + 'cat_id', + [ + 'cat_id > ' . $this->minimumId, + "cat_{$this->mode} != ($countingSubquery)" + ], + __METHOD__, + [ 'LIMIT' => $this->mBatchSize ] + ); + if ( !$idsToUpdate ) { + return false; + } + $this->output( "Updating cat_{$this->mode} field on " . + count( $idsToUpdate ) . " rows...\n" ); + + // In the next batch, start where this query left off. The rows selected + // in this iteration shouldn't be selected again after being updated, but + // we still keep track of where we are up to, as extra protection against + // infinite loops. + $this->minimumId = end( $idsToUpdate ); + + // Now, on master, find the correct counts for these categories. + $dbw = $this->getDB( DB_MASTER ); + $res = $dbw->select( 'category', + [ 'cat_id', 'count' => "($countingSubquery)" ], + [ 'cat_id' => $idsToUpdate ], + __METHOD__ ); + + // Update the category counts on the rows we just identified. + // This logic is equivalent to Category::refreshCounts, except here, we + // don't remove rows when cat_pages is zero and the category description page + // doesn't exist - instead we print a suggestion to run + // cleanupEmptyCategories.php. + $affectedRows = 0; + foreach ( $res as $row ) { + $dbw->update( 'category', + [ "cat_{$this->mode}" => $row->count ], + [ + 'cat_id' => $row->cat_id, + "cat_{$this->mode} != {$row->count}", + ], + __METHOD__ ); + $affectedRows += $dbw->affectedRows(); + } + + MediaWikiServices::getInstance()->getDBLoadBalancerFactory()->waitForReplication(); + + return $affectedRows; + } +} + +$maintClass = 'RecountCategories'; +require_once RUN_MAINTENANCE_IF_MAIN; diff --git a/maintenance/refreshFileHeaders.php b/maintenance/refreshFileHeaders.php index bca1c96435..fd3faeb622 100644 --- a/maintenance/refreshFileHeaders.php +++ b/maintenance/refreshFileHeaders.php @@ -37,6 +37,9 @@ class RefreshFileHeaders extends Maintenance { $this->addOption( 'verbose', 'Output information about each file.', false, false, 'v' ); $this->addOption( 'start', 'Name of file to start with', false, true ); $this->addOption( 'end', 'Name of file to end with', false, true ); + $this->addOption( 'media_type', 'Media type to filter for', false, true ); + $this->addOption( 'major_mime', 'Major mime type to filter for', false, true ); + $this->addOption( 'minor_mime', 'Minor mime type to filter for', false, true ); $this->setBatchSize( 200 ); } @@ -44,6 +47,12 @@ class RefreshFileHeaders extends Maintenance { $repo = RepoGroup::singleton()->getLocalRepo(); $start = str_replace( ' ', '_', $this->getOption( 'start', '' ) ); // page on img_name $end = str_replace( ' ', '_', $this->getOption( 'end', '' ) ); // page on img_name + // filter by img_media_type + $media_type = str_replace( ' ', '_', $this->getOption( 'media_type', '' ) ); + // filter by img_major_mime + $major_mime = str_replace( ' ', '_', $this->getOption( 'major_mime', '' ) ); + // filter by img_minor_mime + $minor_mime = str_replace( ' ', '_', $this->getOption( 'minor_mime', '' ) ); $count = 0; $dbr = $this->getDB( DB_REPLICA ); @@ -55,6 +64,18 @@ class RefreshFileHeaders extends Maintenance { $conds[] = "img_name <= {$dbr->addQuotes( $end )}"; } + if ( strlen( $media_type ) ) { + $conds[] = "img_media_type = {$dbr->addQuotes( $media_type )}"; + } + + if ( strlen( $major_mime ) ) { + $conds[] = "img_major_mime = {$dbr->addQuotes( $major_mime )}"; + } + + if ( strlen( $minor_mime ) ) { + $conds[] = "img_minor_mime = {$dbr->addQuotes( $minor_mime )}"; + } + $res = $dbr->select( 'image', '*', $conds, __METHOD__, [ 'LIMIT' => $this->mBatchSize, 'ORDER BY' => 'img_name ASC' ] ); diff --git a/maintenance/refreshLinks.php b/maintenance/refreshLinks.php index facc5064c1..b099aff44f 100644 --- a/maintenance/refreshLinks.php +++ b/maintenance/refreshLinks.php @@ -72,13 +72,13 @@ class RefreshLinks extends Maintenance { if ( !$title ) { $this->error( "'$category' is an invalid category name!\n", true ); } - $this->refreshCategory( $category ); + $this->refreshCategory( $title ); } elseif ( ( $category = $this->getOption( 'tracking-category', false ) ) !== false ) { $this->refreshTrackingCategory( $category ); } elseif ( !$this->hasOption( 'dfn-only' ) ) { - $new = $this->getOption( 'new-only', false ); - $redir = $this->getOption( 'redirects-only', false ); - $oldRedir = $this->getOption( 'old-redirects-only', false ); + $new = $this->hasOption( 'new-only' ); + $redir = $this->hasOption( 'redirects-only' ); + $oldRedir = $this->hasOption( 'old-redirects-only' ); $this->doRefreshLinks( $start, $new, $end, $redir, $oldRedir ); $this->deleteLinksFromNonexistent( null, null, $this->mBatchSize, $dfnChunkSize ); } else { @@ -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.inc b/maintenance/sqlite.inc index 117e9cc4b0..f14856a5b2 100644 --- a/maintenance/sqlite.inc +++ b/maintenance/sqlite.inc @@ -48,7 +48,7 @@ class Sqlite { * @return bool True if no error or error string in case of errors */ public static function checkSqlSyntax( $files ) { - if ( !Sqlite::isPresent() ) { + if ( !self::isPresent() ) { throw new MWException( "Can't check SQL syntax: SQLite not found" ); } if ( !is_array( $files ) ) { diff --git a/maintenance/sqlite/archives/patch-add-3d.sql b/maintenance/sqlite/archives/patch-add-3d.sql new file mode 100644 index 0000000000..10d74fb99e --- /dev/null +++ b/maintenance/sqlite/archives/patch-add-3d.sql @@ -0,0 +1,249 @@ +-- image + +CREATE TABLE /*_*/image_tmp ( + -- Filename. + -- This is also the title of the associated description page, + -- which will be in namespace 6 (NS_FILE). + img_name varchar(255) binary NOT NULL default '' PRIMARY KEY, + + -- File size in bytes. + img_size int unsigned NOT NULL default 0, + + -- For images, size in pixels. + img_width int NOT NULL default 0, + img_height int NOT NULL default 0, + + -- Extracted Exif metadata stored as a serialized PHP array. + img_metadata mediumblob NOT NULL, + + -- For images, bits per pixel if known. + img_bits int NOT NULL default 0, + + -- Media type as defined by the MEDIATYPE_xxx constants + img_media_type ENUM("UNKNOWN", "BITMAP", "DRAWING", "AUDIO", "VIDEO", "MULTIMEDIA", "OFFICE", "TEXT", "EXECUTABLE", "ARCHIVE", "3D") default NULL, + + -- major part of a MIME media type as defined by IANA + -- see https://www.iana.org/assignments/media-types/ + -- for "chemical" cf. http://dx.doi.org/10.1021/ci9803233 by the ACS + img_major_mime ENUM("unknown", "application", "audio", "image", "text", "video", "message", "model", "multipart", "chemical") NOT NULL default "unknown", + + -- minor part of a MIME media type as defined by IANA + -- the minor parts are not required to adher to any standard + -- but should be consistent throughout the database + -- see https://www.iana.org/assignments/media-types/ + img_minor_mime varbinary(100) NOT NULL default "unknown", + + -- Description field as entered by the uploader. + -- This is displayed in image upload history and logs. + img_description varbinary(767) NOT NULL, + + -- user_id and user_name of uploader. + img_user int unsigned NOT NULL default 0, + img_user_text varchar(255) binary NOT NULL, + + -- Time of the upload. + img_timestamp varbinary(14) NOT NULL default '', + + -- SHA-1 content hash in base-36 + img_sha1 varbinary(32) NOT NULL default '' +) /*$wgDBTableOptions*/; + +INSERT INTO /*_*/image_tmp + 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; + +-- Used by Special:Newimages and ApiQueryAllImages +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); +-- Used by Special:ListFiles for sort-by-size +CREATE INDEX /*i*/img_size ON /*_*/image (img_size); +-- Used by Special:Newimages and Special:ListFiles +CREATE INDEX /*i*/img_timestamp ON /*_*/image (img_timestamp); +-- Used in API and duplicate search +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); + +-- oldimage + +CREATE TABLE /*_*/oldimage_tmp ( + -- Base filename: key to image.img_name + oi_name varchar(255) binary NOT NULL default '', + + -- Filename of the archived file. + -- This is generally a timestamp and '!' prepended to the base name. + oi_archive_name varchar(255) binary NOT NULL default '', + + -- Other fields as in image... + 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, + 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", "3D") 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 INTO /*_*/oldimage_tmp + 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); +-- oi_archive_name truncated to 14 to avoid key length overflow +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)); + +-- filearchive + +CREATE TABLE /*_*/filearchive_tmp ( + -- Unique row id + fa_id int NOT NULL PRIMARY KEY AUTO_INCREMENT, + + -- Original base filename; key to image.img_name, page.page_title, etc + fa_name varchar(255) binary NOT NULL default '', + + -- Filename of archived file, if an old revision + fa_archive_name varchar(255) binary default '', + + -- Which storage bin (directory tree or object store) the file data + -- is stored in. Should be 'deleted' for files that have been deleted; + -- any other bin is not yet in use. + fa_storage_group varbinary(16), + + -- SHA-1 of the file contents plus extension, used as a key for storage. + -- eg 8f8a562add37052a1848ff7771a2c515db94baa9.jpg + -- + -- If NULL, the file was missing at deletion time or has been purged + -- from the archival storage. + fa_storage_key varbinary(64) default '', + + -- Deletion information, if this file is deleted. + fa_deleted_user int, + fa_deleted_timestamp binary(14) default '', + fa_deleted_reason varbinary(767) default '', + + -- Duped fields from image + 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", "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_user int unsigned default 0, + fa_user_text varchar(255) binary, + fa_timestamp binary(14) default '', + + -- Visibility of deleted revisions, bitfield + fa_deleted tinyint unsigned NOT NULL default 0, + + -- sha1 hash of file content + fa_sha1 varbinary(32) NOT NULL default '' +) /*$wgDBTableOptions*/; + +INSERT INTO /*_*/filearchive_tmp + 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; + +-- pick out by image name +CREATE INDEX /*i*/fa_name ON /*_*/filearchive (fa_name, fa_timestamp); +-- pick out dupe files +CREATE INDEX /*i*/fa_storage_group ON /*_*/filearchive (fa_storage_group, fa_storage_key); +-- sort by deletion time +CREATE INDEX /*i*/fa_deleted_timestamp ON /*_*/filearchive (fa_deleted_timestamp); +-- sort by uploader +CREATE INDEX /*i*/fa_user_timestamp ON /*_*/filearchive (fa_user_text,fa_timestamp); +-- find file by sha1, 10 bytes will be enough for hashes to be indexed +CREATE INDEX /*i*/fa_sha1 ON /*_*/filearchive (fa_sha1(10)); + +-- uploadstash + +CREATE TABLE /*_*/uploadstash_tmp ( + us_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT, + + -- the user who uploaded the file. + us_user int unsigned NOT NULL, + + -- file key. this is how applications actually search for the file. + -- this might go away, or become the primary key. + us_key varchar(255) NOT NULL, + + -- the original path + us_orig_path varchar(255) NOT NULL, + + -- the temporary path at which the file is actually stored + us_path varchar(255) NOT NULL, + + -- which type of upload the file came from (sometimes) + us_source_type varchar(50), + + -- the date/time on which the file was added + us_timestamp varbinary(14) NOT NULL, + + us_status varchar(50) NOT NULL, + + -- chunk counter starts at 0, current offset is stored in us_size + us_chunk_inx int unsigned NULL, + + -- Serialized file properties from FSFile::getProps() + us_props blob, + + -- file size in bytes + us_size int unsigned NOT NULL, + -- this hash comes from FSFile::getSha1Base36(), and is 31 characters + us_sha1 varchar(31) NOT NULL, + us_mime varchar(255), + -- Media type as defined by the MEDIATYPE_xxx constants, should duplicate definition in the image table + us_media_type ENUM("UNKNOWN", "BITMAP", "DRAWING", "AUDIO", "VIDEO", "MULTIMEDIA", "OFFICE", "TEXT", "EXECUTABLE", "ARCHIVE", "3D") default NULL, + -- image-specific properties + us_image_width int unsigned, + us_image_height int unsigned, + us_image_bits smallint unsigned + +) /*$wgDBTableOptions*/; + +INSERT INTO /*_*/uploadstash_tmp + SELECT us_id, us_user, us_key, us_orig_path, us_path, us_source_type, + us_timestamp, us_status, us_chunk_inx, us_props, us_size, us_sha1, us_mime, + us_media_type, us_image_width, us_image_height, us_image_bits + FROM /*_*/uploadstash; + +DROP TABLE uploadstash; + +ALTER TABLE /*_*/uploadstash_tmp RENAME TO /*_*/uploadstash; + +-- sometimes there's a delete for all of a user's stuff. +CREATE INDEX /*i*/us_user ON /*_*/uploadstash (us_user); +-- pick out files by key, enforce key uniqueness +CREATE UNIQUE INDEX /*i*/us_key ON /*_*/uploadstash (us_key); +-- the abandoned upload cleanup script needs this +CREATE INDEX /*i*/us_timestamp ON /*_*/uploadstash (us_timestamp); 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-l10n_cache-primary-key.sql b/maintenance/sqlite/archives/patch-l10n_cache-primary-key.sql new file mode 100644 index 0000000000..55df392cdf --- /dev/null +++ b/maintenance/sqlite/archives/patch-l10n_cache-primary-key.sql @@ -0,0 +1,12 @@ +-- +-- patch-l10n_cache-primary-key.sql +-- +-- Bug T146591. Add l10n_cache primary key +DROP TABLE IF EXISTS /*_*/l10n_cache; + +CREATE TABLE /*$wgDBprefix*/l10n_cache ( + lc_lang varbinary(32) NOT NULL, + lc_key varchar(255) NOT NULL, + lc_value mediumblob NOT NULL, + PRIMARY KEY (lc_lang, lc_key) +) /*$wgDBTableOptions*/; diff --git a/maintenance/sqlite/archives/patch-langlinks-fix-pk.sql b/maintenance/sqlite/archives/patch-langlinks-fix-pk.sql new file mode 100644 index 0000000000..da096aceb0 --- /dev/null +++ b/maintenance/sqlite/archives/patch-langlinks-fix-pk.sql @@ -0,0 +1,21 @@ +CREATE TABLE /*_*/langlinks_tmp ( + -- page_id of the referring page + ll_from int unsigned NOT NULL default 0, + + -- Language code of the target + ll_lang varbinary(20) NOT NULL default '', + + -- Title of the target, including namespace + ll_title varchar(255) binary NOT NULL default '', + PRIMARY KEY (ll_from,ll_lang) +) /*$wgDBTableOptions*/; + +INSERT INTO /*_*/langlinks_tmp + SELECT * FROM /*_*/langlinks; + +DROP TABLE /*_*/langlinks; + +ALTER TABLE /*_*/langlinks_tmp RENAME TO /*_*/langlinks; + +-- Index for ApiQueryLangbacklinks +CREATE INDEX /*i*/ll_lang ON /*_*/langlinks (ll_lang, ll_title); \ No newline at end of file diff --git a/maintenance/sqlite/archives/patch-log_search-fix-pk.sql b/maintenance/sqlite/archives/patch-log_search-fix-pk.sql new file mode 100644 index 0000000000..153e415014 --- /dev/null +++ b/maintenance/sqlite/archives/patch-log_search-fix-pk.sql @@ -0,0 +1,18 @@ +CREATE TABLE /*_*/log_search_tmp ( + -- The type of ID (rev ID, log ID, rev timestamp, username) + ls_field varbinary(32) NOT NULL, + -- The value of the ID + ls_value varchar(255) NOT NULL, + -- Key to log_id + ls_log_id int unsigned NOT NULL default 0, + PRIMARY KEY (ls_field,ls_value,ls_log_id) +) /*$wgDBTableOptions*/; + +INSERT INTO /*_*/log_search_tmp + SELECT * FROM /*_*/log_search; + +DROP TABLE /*_*/log_search; + +ALTER TABLE /*_*/log_search_tmp RENAME TO /*_*/log_search; + +CREATE INDEX /*i*/ls_log_id ON /*_*/log_search (ls_log_id); \ No newline at end of file diff --git a/maintenance/sqlite/archives/patch-log_search-rename-index.sql b/maintenance/sqlite/archives/patch-log_search-rename-index.sql deleted file mode 100644 index 4b98a0f2ef..0000000000 --- a/maintenance/sqlite/archives/patch-log_search-rename-index.sql +++ /dev/null @@ -1 +0,0 @@ -CREATE UNIQUE INDEX ls_field_val ON /*_*/log_search (ls_field,ls_value,ls_log_id); diff --git a/maintenance/sqlite/archives/patch-module_deps-fix-pk.sql b/maintenance/sqlite/archives/patch-module_deps-fix-pk.sql new file mode 100644 index 0000000000..73bcbe23f4 --- /dev/null +++ b/maintenance/sqlite/archives/patch-module_deps-fix-pk.sql @@ -0,0 +1,16 @@ +CREATE TABLE /*_*/module_deps_tmp ( + -- Module name + md_module varbinary(255) NOT NULL, + -- Module context vary (includes skin and language; called "md_skin" for legacy reasons) + md_skin varbinary(32) NOT NULL, + -- JSON blob with file dependencies + md_deps mediumblob NOT NULL, + PRIMARY KEY (md_module,md_skin) +) /*$wgDBTableOptions*/; + +INSERT INTO /*_*/module_deps_tmp + SELECT * FROM /*_*/module_deps; + +DROP TABLE /*_*/module_deps; + +ALTER TABLE /*_*/module_deps_tmp RENAME TO /*_*/module_deps; \ No newline at end of file diff --git a/maintenance/sqlite/archives/patch-objectcache-fix-pk.sql b/maintenance/sqlite/archives/patch-objectcache-fix-pk.sql new file mode 100644 index 0000000000..f2bef5838d --- /dev/null +++ b/maintenance/sqlite/archives/patch-objectcache-fix-pk.sql @@ -0,0 +1,14 @@ +CREATE TABLE /*_*/objectcache_tmp ( + keyname varbinary(255) NOT NULL default '' PRIMARY KEY, + value mediumblob, + exptime datetime +) /*$wgDBTableOptions*/; + +INSERT INTO /*_*/objectcache_tmp + SELECT * FROM /*_*/objectcache; + +DROP TABLE /*_*/objectcache; + +ALTER TABLE /*_*/objectcache_tmp RENAME TO /*_*/objectcache; + +CREATE INDEX /*i*/exptime ON /*_*/objectcache (exptime); \ No newline at end of file diff --git a/maintenance/sqlite/archives/patch-pagelinks-fix-pk.sql b/maintenance/sqlite/archives/patch-pagelinks-fix-pk.sql new file mode 100644 index 0000000000..0e845865dc --- /dev/null +++ b/maintenance/sqlite/archives/patch-pagelinks-fix-pk.sql @@ -0,0 +1,27 @@ +CREATE TABLE /*_*/pagelinks_tmp ( + -- Key to the page_id of the page containing the link. + pl_from int unsigned NOT NULL default 0, + -- Namespace for this page + pl_from_namespace int NOT NULL default 0, + + -- Key to page_namespace/page_title of the target page. + -- The target page may or may not exist, and due to renames + -- and deletions may refer to different page records as time + -- goes by. + pl_namespace int NOT NULL default 0, + pl_title varchar(255) binary NOT NULL default '', + PRIMARY KEY (pl_from,pl_namespace,pl_title) +) /*$wgDBTableOptions*/; + +INSERT INTO /*_*/pagelinks_tmp + SELECT * FROM /*_*/pagelinks; + +DROP TABLE /*_*/pagelinks; + +ALTER TABLE /*_*/pagelinks_tmp RENAME TO /*_*/pagelinks; + +-- Reverse index, for Special:Whatlinkshere +CREATE INDEX /*i*/pl_namespace ON /*_*/pagelinks (pl_namespace,pl_title,pl_from); + +-- Index for Special:Whatlinkshere with namespace filter +CREATE INDEX /*i*/pl_backlinks_namespace ON /*_*/pagelinks (pl_from_namespace,pl_namespace,pl_title,pl_from); diff --git a/maintenance/sqlite/archives/patch-querycache_info-fix-pk.sql b/maintenance/sqlite/archives/patch-querycache_info-fix-pk.sql new file mode 100644 index 0000000000..d9483be4e9 --- /dev/null +++ b/maintenance/sqlite/archives/patch-querycache_info-fix-pk.sql @@ -0,0 +1,15 @@ +CREATE TABLE /*_*/querycache_info_tmp ( + -- Special page name + -- Corresponds to a qc_type value + qci_type varbinary(32) NOT NULL default '' PRIMARY KEY, + + -- Timestamp of last update + qci_timestamp binary(14) NOT NULL default '19700101000000' +) /*$wgDBTableOptions*/; + +INSERT INTO /*_*/querycache_info_tmp + SELECT * FROM /*_*/querycache_info; + +DROP TABLE /*_*/querycache_info; + +ALTER TABLE /*_*/querycache_info_tmp RENAME TO /*_*/querycache_info; \ No newline at end of file diff --git a/maintenance/sqlite/archives/patch-site_stats-fix-pk.sql b/maintenance/sqlite/archives/patch-site_stats-fix-pk.sql new file mode 100644 index 0000000000..d785e9841c --- /dev/null +++ b/maintenance/sqlite/archives/patch-site_stats-fix-pk.sql @@ -0,0 +1,33 @@ +CREATE TABLE /*_*/site_stats_tmp ( + -- The single row should contain 1 here. + ss_row_id int unsigned NOT NULL PRIMARY KEY, + + -- Total number of edits performed. + ss_total_edits bigint unsigned default 0, + + -- An approximate count of pages matching the following criteria: + -- * in namespace 0 + -- * not a redirect + -- * contains the text '[[' + -- See Article::isCountable() in includes/Article.php + ss_good_articles bigint unsigned default 0, + + -- Total pages, theoretically equal to SELECT COUNT(*) FROM page; except faster + ss_total_pages bigint default '-1', + + -- Number of users, theoretically equal to SELECT COUNT(*) FROM user; + ss_users bigint default '-1', + + -- Number of users that still edit + ss_active_users bigint default '-1', + + -- Number of images, equivalent to SELECT COUNT(*) FROM image + ss_images int default 0 +) /*$wgDBTableOptions*/; + +INSERT INTO /*_*/site_stats_tmp + SELECT * FROM /*_*/site_stats; + +DROP TABLE /*_*/site_stats; + +ALTER TABLE /*_*/site_stats_tmp RENAME TO /*_*/site_stats; \ No newline at end of file diff --git a/maintenance/sqlite/archives/patch-templatelinks-fix-pk.sql b/maintenance/sqlite/archives/patch-templatelinks-fix-pk.sql new file mode 100644 index 0000000000..5f09f60d3a --- /dev/null +++ b/maintenance/sqlite/archives/patch-templatelinks-fix-pk.sql @@ -0,0 +1,27 @@ +CREATE TABLE /*_*/templatelinks_tmp ( + -- Key to the page_id of the page containing the link. + tl_from int unsigned NOT NULL default 0, + -- Namespace for this page + tl_from_namespace int NOT NULL default 0, + + -- Key to page_namespace/page_title of the target page. + -- The target page may or may not exist, and due to renames + -- and deletions may refer to different page records as time + -- goes by. + tl_namespace int NOT NULL default 0, + tl_title varchar(255) binary NOT NULL default '', + PRIMARY KEY (tl_from,tl_namespace,tl_title) +) /*$wgDBTableOptions*/; + +INSERT INTO /*_*/templatelinks_tmp + SELECT * FROM /*_*/templatelinks; + +DROP TABLE /*_*/templatelinks; + +ALTER TABLE /*_*/templatelinks_tmp RENAME TO /*_*/templatelinks; + +-- Reverse index, for Special:Whatlinkshere +CREATE INDEX /*i*/tl_namespace ON /*_*/templatelinks (tl_namespace,tl_title,tl_from); + +-- Index for Special:Whatlinkshere with namespace filter +CREATE INDEX /*i*/tl_backlinks_namespace ON /*_*/templatelinks (tl_from_namespace,tl_namespace,tl_title,tl_from); diff --git a/maintenance/sqlite/archives/patch-text-fix-pk.sql b/maintenance/sqlite/archives/patch-text-fix-pk.sql new file mode 100644 index 0000000000..380887b179 --- /dev/null +++ b/maintenance/sqlite/archives/patch-text-fix-pk.sql @@ -0,0 +1,37 @@ +CREATE TABLE /*_*/text_tmp ( + -- Unique text storage key number. + -- Note that the 'oldid' parameter used in URLs does *not* + -- refer to this number anymore, but to rev_id. + -- + -- revision.rev_text_id is a key to this column + old_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT, + + -- Depending on the contents of the old_flags field, the text + -- may be convenient plain text, or it may be funkily encoded. + old_text mediumblob NOT NULL, + + -- Comma-separated list of flags: + -- gzip: text is compressed with PHP's gzdeflate() function. + -- utf-8: text was stored as UTF-8. + -- If $wgLegacyEncoding option is on, rows *without* this flag + -- will be converted to UTF-8 transparently at load time. Note + -- that due to a bug in a maintenance script, this flag may + -- have been stored as 'utf8' in some cases (T18841). + -- object: text field contained a serialized PHP object. + -- The object either contains multiple versions compressed + -- together to achieve a better compression ratio, or it refers + -- to another row where the text can be found. + -- external: text was stored in an external location specified by old_text. + -- Any additional flags apply to the data stored at that URL, not + -- the URL itself. The 'object' flag is *not* set for URLs of the + -- form 'DB://cluster/id/itemid', because the external storage + -- system itself decompresses these. + old_flags tinyblob NOT NULL +) /*$wgDBTableOptions*/ MAX_ROWS=10000000 AVG_ROW_LENGTH=10240; + +INSERT INTO /*_*/text_tmp + SELECT * FROM /*_*/text; + +DROP TABLE /*_*/text; + +ALTER TABLE /*_*/text_tmp RENAME TO /*_*/text; \ No newline at end of file diff --git a/maintenance/sqlite/archives/patch-transcache-fix-pk.sql b/maintenance/sqlite/archives/patch-transcache-fix-pk.sql new file mode 100644 index 0000000000..53f83e1f02 --- /dev/null +++ b/maintenance/sqlite/archives/patch-transcache-fix-pk.sql @@ -0,0 +1,12 @@ +CREATE TABLE /*_*/transcache_tmp ( + tc_url varbinary(255) NOT NULL PRIMARY KEY, + tc_contents text, + tc_time binary(14) NOT NULL +) /*$wgDBTableOptions*/; + +INSERT INTO /*_*/transcache_tmp + SELECT * FROM /*_*/transcache; + +DROP TABLE /*_*/transcache; + +ALTER TABLE /*_*/transcache_tmp RENAME TO /*_*/transcache; \ No newline at end of file diff --git a/maintenance/sqlite/archives/patch-user_former_groups-fix-pk.sql b/maintenance/sqlite/archives/patch-user_former_groups-fix-pk.sql new file mode 100644 index 0000000000..4f5d62253a --- /dev/null +++ b/maintenance/sqlite/archives/patch-user_former_groups-fix-pk.sql @@ -0,0 +1,13 @@ +CREATE TABLE /*_*/user_former_groups_tmp ( + -- Key to user_id + ufg_user int unsigned NOT NULL default 0, + ufg_group varbinary(255) NOT NULL default '', + PRIMARY KEY (ufg_user,ufg_group) +) /*$wgDBTableOptions*/; + +INSERT INTO /*_*/user_former_groups_tmp + SELECT * FROM /*_*/user_former_groups; + +DROP TABLE /*_*/user_former_groups; + +ALTER TABLE /*_*/user_former_groups_tmp RENAME TO /*_*/user_former_groups; \ No newline at end of file diff --git a/maintenance/sqlite/archives/patch-user_properties-fix-pk.sql b/maintenance/sqlite/archives/patch-user_properties-fix-pk.sql new file mode 100644 index 0000000000..8362d23365 --- /dev/null +++ b/maintenance/sqlite/archives/patch-user_properties-fix-pk.sql @@ -0,0 +1,20 @@ +CREATE TABLE /*_*/user_properties_tmp ( + -- Foreign key to user.user_id + up_user int NOT NULL, + + -- Name of the option being saved. This is indexed for bulk lookup. + up_property varbinary(255) NOT NULL, + + -- Property value as a string. + up_value blob, + PRIMARY KEY (up_user,up_property) +) /*$wgDBTableOptions*/; + +INSERT INTO /*_*/user_properties_tmp + SELECT * FROM /*_*/user_properties; + +DROP TABLE /*_*/user_properties; + +ALTER TABLE /*_*/user_properties_tmp RENAME TO /*_*/user_properties; + +CREATE INDEX /*i*/user_properties_property ON /*_*/user_properties (up_property); \ No newline at end of file diff --git a/maintenance/tables.sql b/maintenance/tables.sql index 14f69324f7..1813f6cdf0 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 @@ -214,16 +213,16 @@ CREATE INDEX /*i*/un_user_ip ON /*_*/user_newtalk (user_ip); -- CREATE TABLE /*_*/user_properties ( -- Foreign key to user.user_id - up_user int NOT NULL, + up_user int unsigned 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 + 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); -- @@ -232,7 +231,7 @@ CREATE INDEX /*i*/user_properties_property ON /*_*/user_properties (up_property) -- CREATE TABLE /*_*/bot_passwords ( -- User ID obtained from CentralIdLookup. - bp_user int NOT NULL, + bp_user int unsigned NOT NULL, -- Application identifier bp_app_id varbinary(32) NOT NULL, @@ -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 ( @@ -1552,7 +1640,7 @@ CREATE TABLE /*_*/page_restrictions ( -- Whether or not to cascade the protection down to pages transcluded. pr_cascade tinyint NOT NULL, -- Field for future support of per-user restriction. - pr_user int NULL, + pr_user int unsigned NULL, -- Field for time-limited protection. pr_expiry varbinary(14) NULL ) /*$wgDBTableOptions*/; @@ -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 @@ -1603,9 +1692,9 @@ CREATE TABLE /*_*/change_tag ( -- RCID for the change ct_rc_id int NULL, -- LOGID for the change - ct_log_id int NULL, + ct_log_id int unsigned NULL, -- REVID for the change - ct_rev_id int NULL, + ct_rev_id int unsigned NULL, -- Tag applied ct_tag varchar(255) NOT NULL, -- Parameters for the tag, presently unused @@ -1626,9 +1715,9 @@ CREATE TABLE /*_*/tag_summary ( -- RCID for the change ts_rc_id int NULL, -- LOGID for the change - ts_log_id int NULL, + ts_log_id int unsigned NULL, -- REVID for the change - ts_rev_id int NULL, + ts_rev_id int unsigned NULL, -- Comma-separated list of tags ts_tags blob NOT NULL ) /*$wgDBTableOptions*/; @@ -1649,9 +1738,9 @@ CREATE TABLE /*_*/l10n_cache ( -- Cache key lc_key varchar(255) NOT NULL, -- Value - lc_value mediumblob NOT NULL + lc_value mediumblob NOT NULL, + PRIMARY KEY (lc_lang, lc_key) ) /*$wgDBTableOptions*/; -CREATE INDEX /*i*/lc_lang_key ON /*_*/l10n_cache (lc_lang, lc_key); -- Table caching which local files a module depends on that aren't -- registered directly, used for fast retrieval of file dependency. @@ -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/maintenance/updateCredits.php b/maintenance/updateCredits.php index 287a40c558..b7e8c1ccd3 100644 --- a/maintenance/updateCredits.php +++ b/maintenance/updateCredits.php @@ -69,7 +69,8 @@ foreach ( $lines as $line ) { } $contributors = array_keys( $contributors ); -$collator = Collator::create( 'uca-default-u-kn' ); +$collator = Collator::create( 'root' ); +$collator->setAttribute( Collator::NUMERIC_COLLATION, Collator::ON ); $collator->sort( $contributors ); array_walk( $contributors, function ( &$v, $k ) { $v = "* {$v}"; diff --git a/maintenance/updateRestrictions.php b/maintenance/updateRestrictions.php index 02b4405cf4..2f3fc36534 100644 --- a/maintenance/updateRestrictions.php +++ b/maintenance/updateRestrictions.php @@ -36,7 +36,7 @@ class UpdateRestrictions extends Maintenance { public function __construct() { parent::__construct(); $this->addDescription( 'Updates page_restrictions table from old page_restriction column' ); - $this->setBatchSize( 100 ); + $this->setBatchSize( 1000 ); } public function execute() { diff --git a/maintenance/userOptions.inc b/maintenance/userOptions.inc index 5d773d1426..8ac7f919ee 100644 --- a/maintenance/userOptions.inc +++ b/maintenance/userOptions.inc @@ -47,7 +47,7 @@ class UserOptions { */ function __construct( $opts, $args ) { if ( !$this->checkOpts( $opts, $args ) ) { - UserOptions::showUsageAndExit(); + self::showUsageAndExit(); } else { $this->mReady = $this->initializeOpts( $opts, $args ); } @@ -106,6 +106,7 @@ class UserOptions { /** * Dumb stuff to run a mode. + * @return bool */ public function run() { if ( !$this->mReady ) { diff --git a/mw-config/config.js b/mw-config/config.js index 8b2d6e5ab4..c745ce44a7 100644 --- a/mw-config/config.js +++ b/mw-config/config.js @@ -4,7 +4,7 @@ function syncText() { var value = $( this ).val() - .replace( /[\[\]\{\}|#<>%+? ]/g, '_' ) + .replace( /[\[\]{}|#<>%+? ]/g, '_' ) // eslint-disable-line no-useless-escape .replace( /&/, '&' ) .replace( /__+/g, '_' ) .replace( /^_+/, '' ) @@ -14,17 +14,13 @@ } // Set up the help system - $( '.config-help-field-data' ) - .hide() - .closest( '.config-help-field-container' ) - .find( '.config-help-field-hint' ) - .show() - .click( function () { - $( this ) - .closest( '.config-help-field-container' ) - .find( '.config-help-field-data' ) - .slideToggle( 'fast' ); - } ); + $( '.config-help-field-data' ).hide() + .closest( '.config-help-field-container' ).find( '.config-help-field-hint' ) + .show() + .click( function () { + $( this ).closest( '.config-help-field-container' ).find( '.config-help-field-data' ) + .slideToggle( 'fast' ); + } ); // Show/hide code for DB-specific options // FIXME: Do we want slow, fast, or even non-animated (instantaneous) showing/hiding here? diff --git a/package.json b/package.json index fe3c910bd8..96a425ff69 100644 --- a/package.json +++ b/package.json @@ -9,15 +9,15 @@ "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", "grunt-contrib-watch": "1.0.0", - "grunt-eslint": "19.0.0", + "grunt-eslint": "20.0.0", "grunt-jsonlint": "1.1.0", "grunt-karma": "2.0.0", - "grunt-stylelint": "0.7.0", + "grunt-stylelint": "0.8.0", "grunt-webdriver": "2.0.3", "karma": "1.5.0", "karma-chrome-launcher": "2.0.0", @@ -26,6 +26,7 @@ "karma-qunit": "1.0.0", "nodemw": "0.10.1", "qunitjs": "1.23.1", + "stylelint": "7.8.0", "stylelint-config-wikimedia": "0.4.1", "wdio-junit-reporter": "0.2.0", "wdio-mocha-framework": "0.5.8", diff --git a/phpcs.xml b/phpcs.xml index 92a218a1bb..bd9890b231 100644 --- a/phpcs.xml +++ b/phpcs.xml @@ -2,20 +2,15 @@ - - - - - + + - - - - - + + + @@ -25,6 +20,9 @@ + + + @@ -43,15 +41,11 @@ */includes/StubObject.php . - - node_modules/ - vendor/ ^extensions/ ^skins/ - .git - AdminSettings.php - LocalSettings.php - StartProfiler.php + AdminSettings\.php + LocalSettings\.php + StartProfiler\.php 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 a8cf91dee7..818112f54c 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,10 @@ return [ 'targets' => [ 'desktop', 'mobile' ], ], 'mediawiki.hlist' => [ + 'targets' => [ 'desktop', 'mobile' ], + 'styles' => [ + 'resources/src/mediawiki/mediawiki.hlist-allskins.less', + ], 'skinStyles' => [ 'default' => 'resources/src/mediawiki/mediawiki.hlist.css', ], @@ -1091,6 +1091,9 @@ return [ 'scripts' => [ 'resources/src/mediawiki/htmlform/htmlform.Checker.js', ], + 'dependencies' => [ + 'jquery.throttle-debounce', + ], 'targets' => [ 'desktop', 'mobile' ], ], 'mediawiki.htmlform.ooui' => [ @@ -1376,6 +1379,7 @@ return [ ] ], 'mediawiki.util' => [ + 'class' => 'ResourceLoaderMediaWikiUtilModule', 'scripts' => 'resources/src/mediawiki/mediawiki.util.js', 'dependencies' => [ 'jquery.accessKeyLabel', @@ -1420,16 +1424,15 @@ return [ 'styles' => 'resources/src/mediawiki.action/mediawiki.action.edit.css', 'dependencies' => [ 'mediawiki.action.edit.styles', - 'jquery.accessKeyLabel', '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', @@ -1448,8 +1451,10 @@ return [ 'jquery.textSelection', 'mediawiki.api', 'mediawiki.diff.styles', + 'mediawiki.language', 'mediawiki.util', 'mediawiki.jqueryMsg', + 'oojs-ui-core', ], 'messages' => [ // Keep the uses message keys in sync with EditPage#setHeaders @@ -1505,6 +1510,9 @@ return [ 'mediawiki.action.view.postEdit' => [ 'scripts' => 'resources/src/mediawiki.action/mediawiki.action.view.postEdit.js', 'styles' => 'resources/src/mediawiki.action/mediawiki.action.view.postEdit.less', + 'skinStyles' => [ + 'monobook' => 'resources/src/mediawiki.action/mediawiki.action.view.postEdit.monobook.css', + ], 'dependencies' => [ 'mediawiki.jqueryMsg', 'mediawiki.notification' @@ -1748,6 +1756,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', @@ -1762,6 +1776,7 @@ return [ 'resources/src/mediawiki.rcfilters/mw.rcfilters.UriProcessor.js', ], 'dependencies' => [ + 'jquery.byteLength', 'oojs', 'mediawiki.api', 'mediawiki.api.options', @@ -1781,6 +1796,11 @@ return [ 'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterMenuHeaderWidget.js', 'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.MenuSelectWidget.js', 'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.ViewSwitchWidget.js', + 'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.ValuePickerWidget.js', + 'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.ChangesLimitPopupWidget.js', + 'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.ChangesLimitButtonWidget.js', + 'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.DateButtonWidget.js', + 'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.DatePopupWidget.js', 'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterWrapperWidget.js', 'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.ChangesListWrapperWidget.js', 'resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.SavedLinksListWidget.js', @@ -1790,6 +1810,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', ], @@ -1806,6 +1829,9 @@ return [ 'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterMenuHeaderWidget.less', 'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.MenuSelectWidget.less', 'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.ViewSwitchWidget.less', + 'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.ValuePickerWidget.less', + 'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.ChangesLimitPopupWidget.less', + 'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.DatePopupWidget.less', 'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterWrapperWidget.less', 'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.ChangesListWrapperWidget.less', 'resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.HighlightColorPickerWidget.less', @@ -1814,6 +1840,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' => [ @@ -1823,8 +1851,18 @@ return [ ], ], 'messages' => [ + 'rcfilters-tag-remove', 'rcfilters-activefilters', 'rcfilters-advancedfilters', + 'rcfilters-group-results-by-page', + 'rcfilters-grouping-title', + 'rcfilters-limit-title', + 'rcfilters-limit-shownum', + 'rcfilters-days-title', + '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', @@ -1837,9 +1875,11 @@ return [ 'rcfilters-savedqueries-new-name-placeholder', 'rcfilters-savedqueries-add-new-title', 'rcfilters-savedqueries-apply-label', + 'rcfilters-savedqueries-apply-and-setdefault-label', 'rcfilters-savedqueries-cancel-label', 'rcfilters-restore-default-filters', 'rcfilters-clear-all-filters', + 'rcfilters-show-new-changes', 'rcfilters-search-placeholder', 'rcfilters-invalid-filter', 'rcfilters-empty-filter', @@ -1857,11 +1897,19 @@ return [ 'rcfilters-tag-prefix-namespace', 'rcfilters-tag-prefix-namespace-inverted', 'rcfilters-tag-prefix-tags', + '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', + 'rcfilters-watchlist-edit-watchlist-button', + 'rcfilters-other-review-tools', 'blanknamespace', 'namespaces', 'invert', @@ -1870,6 +1918,7 @@ return [ ], 'dependencies' => [ 'oojs-ui', + 'jquery.makeCollapsible', 'mediawiki.language', 'mediawiki.user', 'mediawiki.rcfilters.filters.dm', @@ -2044,7 +2093,12 @@ return [ 'styles' => 'resources/src/mediawiki.special/mediawiki.special.pagesWithProp.css', ], 'mediawiki.special.preferences' => [ - 'scripts' => 'resources/src/mediawiki.special/mediawiki.special.preferences.js', + 'scripts' => [ + 'resources/src/mediawiki.special/mediawiki.special.preferences.confirmClose.js', + 'resources/src/mediawiki.special/mediawiki.special.preferences.convertmessagebox.js', + 'resources/src/mediawiki.special/mediawiki.special.preferences.tabs.js', + 'resources/src/mediawiki.special/mediawiki.special.preferences.timezone.js', + ], 'messages' => [ 'prefs-tabs-navigation-hint', 'prefswarning-warning', @@ -2151,8 +2205,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' => [ @@ -2188,11 +2243,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', @@ -2221,6 +2292,7 @@ return [ ], // Used in the web installer. Test it after modifying this definition! 'mediawiki.legacy.shared' => [ + 'targets' => [ 'desktop', 'mobile' ], 'styles' => [ 'resources/src/mediawiki.legacy/shared.css' => [ 'media' => 'screen' ] ], @@ -2544,9 +2616,9 @@ return [ ], 'dependencies' => [ 'mediawiki.searchSuggest', - // FIXME: Needs TitleWidget only + 'oojs-ui.styles.icons-interactions', + // FIXME: Needs TitleInputWidget only 'mediawiki.widgets', - 'oojs-ui-widgets', ], ], 'mediawiki.widgets.SearchInputWidget.styles' => [ @@ -2649,7 +2721,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..70512e008f 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,10 @@ function migrateWarn( msg ) { if ( !warnedAbout[ msg ] ) { warnedAbout[ msg ] = true; jQuery.migrateWarnings.push( msg ); + // PATCH: Add instrumentation for statistics --Krinkle + if ( window.mw && window.mw.track ) { + window.mw.track( "mw.deprecate", "jquery-migrate" ); + } if ( console && console.warn && !jQuery.migrateMute ) { console.warn( "JQMIGRATE: " + msg ); if ( jQuery.migrateTrace && console.trace ) { @@ -74,11 +102,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 +154,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 +165,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 +187,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 +214,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 +231,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 +341,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 +376,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 +384,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 +430,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 +440,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 +481,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 +527,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 +554,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 +617,5 @@ jQuery.Deferred = function( func ) { // Preserve handler of uncaught exceptions in promise chains jQuery.Deferred.exceptionHook = oldDeferred.exceptionHook; - -})( jQuery, window ); +return jQuery; +} ); diff --git a/resources/lib/oojs-ui/i18n/ais.json b/resources/lib/oojs-ui/i18n/ais.json new file mode 100644 index 0000000000..987f029fbf --- /dev/null +++ b/resources/lib/oojs-ui/i18n/ais.json @@ -0,0 +1,23 @@ +{ + "@metadata": { + "authors": [ + "Bunukwiki", + "Benel" + ] + }, + "ooui-outline-control-move-down": "miliad kasacacay tasasa’", + "ooui-outline-control-move-up": "miliad kasacacay tapabaw", + "ooui-outline-control-remove": "misipu kasacacay", + "ooui-toolbar-more": "yadah", + "ooui-toolgroup-expand": "yadah", + "ooui-toolgroup-collapse": "ma’ngadis mangalep", + "ooui-item-remove": "milimad", + "ooui-dialog-message-accept": "malucekay", + "ooui-dialog-message-reject": "palawpes", + "ooui-dialog-process-error": "tahkal ku caykapulitaay a mungangaw", + "ooui-dialog-process-dismiss": "edeben", + "ooui-dialog-process-retry": "pitaneng henay aca", + "ooui-dialog-process-continue": "palalid", + "ooui-selectfile-button-select": "mipili’ cacay a tangan", + "ooui-selectfile-placeholder": "caay henay mipili’ tu tangan" +} diff --git a/resources/lib/oojs-ui/i18n/ar.json b/resources/lib/oojs-ui/i18n/ar.json index 50a8cade9d..ad2995a74e 100644 --- a/resources/lib/oojs-ui/i18n/ar.json +++ b/resources/lib/oojs-ui/i18n/ar.json @@ -22,6 +22,7 @@ "ooui-toolbar-more": "مزيد", "ooui-toolgroup-expand": "مزيد", "ooui-toolgroup-collapse": "أقل", + "ooui-item-remove": "إزالة", "ooui-dialog-message-accept": "موافق", "ooui-dialog-message-reject": "ألغ", "ooui-dialog-process-error": "حدث خطأ", diff --git a/resources/lib/oojs-ui/i18n/as.json b/resources/lib/oojs-ui/i18n/as.json index 505328095e..54a4244135 100644 --- a/resources/lib/oojs-ui/i18n/as.json +++ b/resources/lib/oojs-ui/i18n/as.json @@ -12,7 +12,7 @@ "ooui-toolbar-more": "অধিক", "ooui-toolgroup-expand": "অধিক", "ooui-toolgroup-collapse": "কম দেখাওক", - "ooui-dialog-message-accept": "শুদ্ধ", + "ooui-dialog-message-accept": "বাৰু", "ooui-dialog-message-reject": "বাতিল কৰক", "ooui-dialog-process-error": "কিবা ত্ৰুটি হৈছে", "ooui-dialog-process-dismiss": "বাতিল", diff --git a/resources/lib/oojs-ui/i18n/ast.json b/resources/lib/oojs-ui/i18n/ast.json index 11761c6cc2..623892df99 100644 --- a/resources/lib/oojs-ui/i18n/ast.json +++ b/resources/lib/oojs-ui/i18n/ast.json @@ -12,6 +12,7 @@ "ooui-toolbar-more": "Más", "ooui-toolgroup-expand": "Más", "ooui-toolgroup-collapse": "Menos", + "ooui-item-remove": "Desaniciar", "ooui-dialog-message-accept": "Aceutar", "ooui-dialog-message-reject": "Encaboxar", "ooui-dialog-process-error": "Daqué funcionó mal", diff --git a/resources/lib/oojs-ui/i18n/be-tarask.json b/resources/lib/oojs-ui/i18n/be-tarask.json index a4b86ad266..40a6efd05b 100644 --- a/resources/lib/oojs-ui/i18n/be-tarask.json +++ b/resources/lib/oojs-ui/i18n/be-tarask.json @@ -15,6 +15,7 @@ "ooui-toolbar-more": "Болей", "ooui-toolgroup-expand": "Болей", "ooui-toolgroup-collapse": "Меней", + "ooui-item-remove": "Выдаліць", "ooui-dialog-message-accept": "Добра", "ooui-dialog-message-reject": "Скасаваць", "ooui-dialog-process-error": "Нешта пайшло ня так", diff --git a/resources/lib/oojs-ui/i18n/bn.json b/resources/lib/oojs-ui/i18n/bn.json index c46ea01f6a..273b7db132 100644 --- a/resources/lib/oojs-ui/i18n/bn.json +++ b/resources/lib/oojs-ui/i18n/bn.json @@ -18,6 +18,7 @@ "ooui-toolbar-more": "আরও", "ooui-toolgroup-expand": "আরও", "ooui-toolgroup-collapse": "কম দেখাও", + "ooui-item-remove": "সরান", "ooui-dialog-message-accept": "ঠিক আছে", "ooui-dialog-message-reject": "বাতিল", "ooui-dialog-process-error": "কিছু একটায় ত্রুটি হয়েছে", diff --git a/resources/lib/oojs-ui/i18n/br.json b/resources/lib/oojs-ui/i18n/br.json index cbfcab074e..1383d9aac2 100644 --- a/resources/lib/oojs-ui/i18n/br.json +++ b/resources/lib/oojs-ui/i18n/br.json @@ -4,7 +4,8 @@ "Fohanno", "Fulup", "Y-M D", - "Maoris" + "Maoris", + "Gwendal" ] }, "ooui-outline-control-move-down": "Lakaat an elfenn da ziskenn", @@ -13,6 +14,7 @@ "ooui-toolbar-more": "Muioc'h", "ooui-toolgroup-expand": "Muioc'h", "ooui-toolgroup-collapse": "Nebeutoc'h", + "ooui-item-remove": "Dilemel", "ooui-dialog-message-accept": "Mat eo", "ooui-dialog-message-reject": "Nullañ", "ooui-dialog-process-error": "Un dra bennak a-dreuz a zo bet", diff --git a/resources/lib/oojs-ui/i18n/bs.json b/resources/lib/oojs-ui/i18n/bs.json index 7ef5a51f6a..fc4c320a0d 100644 --- a/resources/lib/oojs-ui/i18n/bs.json +++ b/resources/lib/oojs-ui/i18n/bs.json @@ -18,8 +18,8 @@ "ooui-dialog-process-dismiss": "Odbaci", "ooui-dialog-process-retry": "Pokušaj ponovo", "ooui-dialog-process-continue": "Nastavi", - "ooui-selectfile-button-select": "Izaberi datoteku", + "ooui-selectfile-button-select": "Izaberite datoteku", "ooui-selectfile-not-supported": "Izbor datoteke nije podržan", "ooui-selectfile-placeholder": "Nijedna datoteka nije izabrana", - "ooui-selectfile-dragdrop-placeholder": "Prevuci datoteku ovdje" + "ooui-selectfile-dragdrop-placeholder": "Prevucite datoteku ovdje" } diff --git a/resources/lib/oojs-ui/i18n/cs.json b/resources/lib/oojs-ui/i18n/cs.json index 734b738de1..8e3d1af176 100644 --- a/resources/lib/oojs-ui/i18n/cs.json +++ b/resources/lib/oojs-ui/i18n/cs.json @@ -12,7 +12,8 @@ "Tchoř", "ශ්වෙත", "Vojtěch Dostál", - "Matěj Suchánek" + "Matěj Suchánek", + "Martin Urbanec" ] }, "ooui-outline-control-move-down": "Přesunout položku dolů", @@ -21,6 +22,7 @@ "ooui-toolbar-more": "Další", "ooui-toolgroup-expand": "Více", "ooui-toolgroup-collapse": "Méně", + "ooui-item-remove": "Odebrat", "ooui-dialog-message-accept": "OK", "ooui-dialog-message-reject": "Storno", "ooui-dialog-process-error": "Něco se pokazilo", diff --git a/resources/lib/oojs-ui/i18n/da.json b/resources/lib/oojs-ui/i18n/da.json index 7e1cd568b5..3a5590ae13 100644 --- a/resources/lib/oojs-ui/i18n/da.json +++ b/resources/lib/oojs-ui/i18n/da.json @@ -9,7 +9,8 @@ "Simeondahl", "Tehnix", "Macofe", - "Peter Alberti" + "Peter Alberti", + "Joedalton" ] }, "ooui-outline-control-move-down": "Flyt ned", @@ -22,5 +23,6 @@ "ooui-dialog-process-error": "Noget gik galt", "ooui-dialog-process-retry": "Prøv igen", "ooui-dialog-process-continue": "Fortsæt", - "ooui-selectfile-button-select": "Vælg en fil" + "ooui-selectfile-button-select": "Vælg en fil", + "ooui-selectfile-dragdrop-placeholder": "Smid filen her" } diff --git a/resources/lib/oojs-ui/i18n/de.json b/resources/lib/oojs-ui/i18n/de.json index b48dfb5eb8..a9eea8aaab 100644 --- a/resources/lib/oojs-ui/i18n/de.json +++ b/resources/lib/oojs-ui/i18n/de.json @@ -19,6 +19,7 @@ "ooui-toolbar-more": "Mehr", "ooui-toolgroup-expand": "Mehr", "ooui-toolgroup-collapse": "Weniger", + "ooui-item-remove": "Entfernen", "ooui-dialog-message-accept": "Okay", "ooui-dialog-message-reject": "Abbrechen", "ooui-dialog-process-error": "Etwas ist schief gelaufen", diff --git a/resources/lib/oojs-ui/i18n/en.json b/resources/lib/oojs-ui/i18n/en.json index be008321d8..fd31150366 100644 --- a/resources/lib/oojs-ui/i18n/en.json +++ b/resources/lib/oojs-ui/i18n/en.json @@ -22,6 +22,7 @@ "ooui-toolbar-more": "More", "ooui-toolgroup-expand": "More", "ooui-toolgroup-collapse": "Fewer", + "ooui-item-remove": "Remove", "ooui-dialog-message-accept": "OK", "ooui-dialog-message-reject": "Cancel", "ooui-dialog-process-error": "Something went wrong", diff --git a/resources/lib/oojs-ui/i18n/es.json b/resources/lib/oojs-ui/i18n/es.json index fa11a3625b..7873c95c28 100644 --- a/resources/lib/oojs-ui/i18n/es.json +++ b/resources/lib/oojs-ui/i18n/es.json @@ -24,6 +24,7 @@ "ooui-toolbar-more": "Más", "ooui-toolgroup-expand": "Más", "ooui-toolgroup-collapse": "Menos", + "ooui-item-remove": "Quitar", "ooui-dialog-message-accept": "Aceptar", "ooui-dialog-message-reject": "Cancelar", "ooui-dialog-process-error": "Algo salió mal", diff --git a/resources/lib/oojs-ui/i18n/eu.json b/resources/lib/oojs-ui/i18n/eu.json index 033c1b0a75..c715ae6fa9 100644 --- a/resources/lib/oojs-ui/i18n/eu.json +++ b/resources/lib/oojs-ui/i18n/eu.json @@ -5,7 +5,8 @@ "Unai Fdz. de Betoño", "Xabier Armendaritz", "Subi", - "Sator" + "Sator", + "Mikel Ibaiba" ] }, "ooui-outline-control-move-down": "Mugitu itema beherantz", @@ -14,6 +15,7 @@ "ooui-toolbar-more": "Gehiago", "ooui-toolgroup-expand": "Gehiago", "ooui-toolgroup-collapse": "Gutxiago", + "ooui-item-remove": "Ezabatu", "ooui-dialog-message-accept": "Ados", "ooui-dialog-message-reject": "Utzi", "ooui-dialog-process-error": "Zerbaitek huts egin du", diff --git a/resources/lib/oojs-ui/i18n/fa.json b/resources/lib/oojs-ui/i18n/fa.json index 0375c8eb6e..8aa519b104 100644 --- a/resources/lib/oojs-ui/i18n/fa.json +++ b/resources/lib/oojs-ui/i18n/fa.json @@ -23,6 +23,7 @@ "ooui-toolbar-more": "بیشتر", "ooui-toolgroup-expand": "بیشتر", "ooui-toolgroup-collapse": "کمتر", + "ooui-item-remove": "حذف", "ooui-dialog-message-accept": "تأیید", "ooui-dialog-message-reject": "لغو", "ooui-dialog-process-error": "مشکلی وجود دارد", diff --git a/resources/lib/oojs-ui/i18n/fr.json b/resources/lib/oojs-ui/i18n/fr.json index a68c90f695..1c004d45c1 100644 --- a/resources/lib/oojs-ui/i18n/fr.json +++ b/resources/lib/oojs-ui/i18n/fr.json @@ -39,6 +39,7 @@ "ooui-toolbar-more": "Plus", "ooui-toolgroup-expand": "Plus", "ooui-toolgroup-collapse": "Moins", + "ooui-item-remove": "Supprimer", "ooui-dialog-message-accept": "OK", "ooui-dialog-message-reject": "Annuler", "ooui-dialog-process-error": "Quelque chose s'est mal passé", diff --git a/resources/lib/oojs-ui/i18n/gl.json b/resources/lib/oojs-ui/i18n/gl.json index 4cb28399c5..2c3cce31bd 100644 --- a/resources/lib/oojs-ui/i18n/gl.json +++ b/resources/lib/oojs-ui/i18n/gl.json @@ -4,7 +4,8 @@ "Alison", "Kscanne", "Toliño", - "Elisardojm" + "Elisardojm", + "Banjo" ] }, "ooui-outline-control-move-down": "Mover o elemento abaixo", @@ -13,6 +14,7 @@ "ooui-toolbar-more": "Máis", "ooui-toolgroup-expand": "Máis", "ooui-toolgroup-collapse": "Menos", + "ooui-item-remove": "Eliminar", "ooui-dialog-message-accept": "Aceptar", "ooui-dialog-message-reject": "Cancelar", "ooui-dialog-process-error": "Algo foi mal", diff --git a/resources/lib/oojs-ui/i18n/he.json b/resources/lib/oojs-ui/i18n/he.json index 650d67dde0..0864ed9c7b 100644 --- a/resources/lib/oojs-ui/i18n/he.json +++ b/resources/lib/oojs-ui/i18n/he.json @@ -21,6 +21,7 @@ "ooui-toolbar-more": "עוד", "ooui-toolgroup-expand": "יותר", "ooui-toolgroup-collapse": "פחות", + "ooui-item-remove": "הסרה", "ooui-dialog-message-accept": "אישור", "ooui-dialog-message-reject": "ביטול", "ooui-dialog-process-error": "משהו השתבש", diff --git a/resources/lib/oojs-ui/i18n/hu.json b/resources/lib/oojs-ui/i18n/hu.json index cf26cc1aaf..fc96cc45a3 100644 --- a/resources/lib/oojs-ui/i18n/hu.json +++ b/resources/lib/oojs-ui/i18n/hu.json @@ -7,7 +7,8 @@ "ViDam", "Tacsipacsi", "Csega", - "Kishajnalka" + "Kishajnalka", + "Rodrigo" ] }, "ooui-outline-control-move-down": "Elem mozgatása lefelé", @@ -16,6 +17,7 @@ "ooui-toolbar-more": "Több", "ooui-toolgroup-expand": "Több", "ooui-toolgroup-collapse": "Kevesebb", + "ooui-item-remove": "Eltávolítás", "ooui-dialog-message-accept": "OK", "ooui-dialog-message-reject": "Mégse", "ooui-dialog-process-error": "Valami elromlott", diff --git a/resources/lib/oojs-ui/i18n/it.json b/resources/lib/oojs-ui/i18n/it.json index 4b95ffc57b..a301b6638b 100644 --- a/resources/lib/oojs-ui/i18n/it.json +++ b/resources/lib/oojs-ui/i18n/it.json @@ -25,6 +25,7 @@ "ooui-toolbar-more": "Altro", "ooui-toolgroup-expand": "Altro", "ooui-toolgroup-collapse": "Meno", + "ooui-item-remove": "Rimuovi", "ooui-dialog-message-accept": "OK", "ooui-dialog-message-reject": "Annulla", "ooui-dialog-process-error": "Qualcosa è andato storto", diff --git a/resources/lib/oojs-ui/i18n/ja.json b/resources/lib/oojs-ui/i18n/ja.json index d0df02748f..960e9431c6 100644 --- a/resources/lib/oojs-ui/i18n/ja.json +++ b/resources/lib/oojs-ui/i18n/ja.json @@ -7,15 +7,18 @@ "Shirayuki", "Takot", "Los688", - "Sujiniku" + "Sujiniku", + "Translatealcd", + "Otokoume" ] }, "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-item-remove": "削除", "ooui-dialog-message-accept": "OK", "ooui-dialog-message-reject": "キャンセル", "ooui-dialog-process-error": "エラーが発生しました…", diff --git a/resources/lib/oojs-ui/i18n/kab.json b/resources/lib/oojs-ui/i18n/kab.json new file mode 100644 index 0000000000..55016b22a8 --- /dev/null +++ b/resources/lib/oojs-ui/i18n/kab.json @@ -0,0 +1,24 @@ +{ + "@metadata": { + "authors": [ + "Belkacem77" + ] + }, + "ooui-outline-control-move-down": "Awi aferdi d akesser", + "ooui-outline-control-move-up": "Awi aferdis d asawen", + "ooui-outline-control-remove": "Kkes aferdis", + "ooui-toolbar-more": "Ugar", + "ooui-toolgroup-expand": "Ugar", + "ooui-toolgroup-collapse": "Drus", + "ooui-item-remove": "Kkes", + "ooui-dialog-message-accept": "IH", + "ooui-dialog-message-reject": "Sefsex", + "ooui-dialog-process-error": "Yella wayen yeḍran", + "ooui-dialog-process-dismiss": "Mdel", + "ooui-dialog-process-retry": "Ɛreḍ tikelt-nniden", + "ooui-dialog-process-continue": "Kemmel", + "ooui-selectfile-button-select": "Fren afaylu", + "ooui-selectfile-not-supported": "Afran n ufaylu ur yettusefrak ara", + "ooui-selectfile-placeholder": "Ulac afaylu yettwafernen", + "ooui-selectfile-dragdrop-placeholder": "Sers afaylu dagi" +} diff --git a/resources/lib/oojs-ui/i18n/ko.json b/resources/lib/oojs-ui/i18n/ko.json index 0c84bd1fbc..dc3c84a7de 100644 --- a/resources/lib/oojs-ui/i18n/ko.json +++ b/resources/lib/oojs-ui/i18n/ko.json @@ -10,7 +10,8 @@ "Ryuch", "Revi", "Infinity", - "Hwangjy9" + "Hwangjy9", + "Ykhwong" ] }, "ooui-outline-control-move-down": "항목을 아래로 이동", @@ -19,6 +20,7 @@ "ooui-toolbar-more": "더 보기", "ooui-toolgroup-expand": "더 보기", "ooui-toolgroup-collapse": "덜 보기", + "ooui-item-remove": "제거", "ooui-dialog-message-accept": "확인", "ooui-dialog-message-reject": "취소", "ooui-dialog-process-error": "무언가가 잘못되었습니다", diff --git a/resources/lib/oojs-ui/i18n/lb.json b/resources/lib/oojs-ui/i18n/lb.json index fad4c1c5b9..3deee0d615 100644 --- a/resources/lib/oojs-ui/i18n/lb.json +++ b/resources/lib/oojs-ui/i18n/lb.json @@ -16,6 +16,7 @@ "ooui-toolbar-more": "Méi", "ooui-toolgroup-expand": "Méi", "ooui-toolgroup-collapse": "Manner", + "ooui-item-remove": "Ewechhuelen", "ooui-dialog-message-accept": "OK", "ooui-dialog-message-reject": "Ofbriechen", "ooui-dialog-process-error": "Et ass eppes schif gaang", diff --git a/resources/lib/oojs-ui/i18n/li.json b/resources/lib/oojs-ui/i18n/li.json index f05a95718a..0012c9cd37 100644 --- a/resources/lib/oojs-ui/i18n/li.json +++ b/resources/lib/oojs-ui/i18n/li.json @@ -1,7 +1,8 @@ { "@metadata": { "authors": [ - "Pahles" + "Pahles", + "Ooswesthoesbes" ] }, "ooui-outline-control-move-down": "Item nao ónger verplaatse", @@ -16,6 +17,8 @@ "ooui-dialog-process-dismiss": "Sjlete", "ooui-dialog-process-retry": "Perbeer obbenuujts", "ooui-dialog-process-continue": "Doorgaon", + "ooui-selectfile-button-select": "Kees e bestandj", "ooui-selectfile-not-supported": "Selektie van 'n besjtandj waert neet óngersteund", - "ooui-selectfile-placeholder": "Dao is gein besjtandj geselekteerd" + "ooui-selectfile-placeholder": "Dao is gein besjtandj geselekteerd", + "ooui-selectfile-dragdrop-placeholder": "Sleip e bestandj hieroppes" } diff --git a/resources/lib/oojs-ui/i18n/mk.json b/resources/lib/oojs-ui/i18n/mk.json index 46f37fe811..23d07760c2 100644 --- a/resources/lib/oojs-ui/i18n/mk.json +++ b/resources/lib/oojs-ui/i18n/mk.json @@ -12,6 +12,7 @@ "ooui-toolbar-more": "Повеќе", "ooui-toolgroup-expand": "Повеќе", "ooui-toolgroup-collapse": "Помалку", + "ooui-item-remove": "Отстрани", "ooui-dialog-message-accept": "ОК", "ooui-dialog-message-reject": "Откажи", "ooui-dialog-process-error": "Нешто не е во ред", diff --git a/resources/lib/oojs-ui/i18n/nb.json b/resources/lib/oojs-ui/i18n/nb.json index d3fad8dc2a..9c20ba3194 100644 --- a/resources/lib/oojs-ui/i18n/nb.json +++ b/resources/lib/oojs-ui/i18n/nb.json @@ -7,7 +7,8 @@ "Laaknor", "Njardarlogar", "Jdforrester", - "Apple farmer" + "Apple farmer", + "Jon Harald Søby" ] }, "ooui-outline-control-move-down": "Flytt ned", @@ -16,6 +17,7 @@ "ooui-toolbar-more": "Mer", "ooui-toolgroup-expand": "Mer", "ooui-toolgroup-collapse": "Færre", + "ooui-item-remove": "Fjern", "ooui-dialog-message-accept": "OK", "ooui-dialog-message-reject": "Avbryt", "ooui-dialog-process-error": "Noe gikk galt", diff --git a/resources/lib/oojs-ui/i18n/ne.json b/resources/lib/oojs-ui/i18n/ne.json index 4ca5ab72a6..c7d286136f 100644 --- a/resources/lib/oojs-ui/i18n/ne.json +++ b/resources/lib/oojs-ui/i18n/ne.json @@ -3,7 +3,8 @@ "authors": [ "RajeshPandey", "सरोज कुमार ढकाल", - "Ganesh Paudel" + "Ganesh Paudel", + "Nirajan pant" ] }, "ooui-outline-control-move-down": "वस्तुलाई तल सार्ने", @@ -12,6 +13,7 @@ "ooui-toolbar-more": "थप", "ooui-toolgroup-expand": "थप", "ooui-toolgroup-collapse": "कम", + "ooui-item-remove": "हटाउनुहोस्", "ooui-dialog-message-accept": "हुन्छ", "ooui-dialog-message-reject": "रद्द गर्ने", "ooui-dialog-process-dismiss": "खारेज गर्ने", diff --git a/resources/lib/oojs-ui/i18n/nl.json b/resources/lib/oojs-ui/i18n/nl.json index d222d1c04c..694eb3c24c 100644 --- a/resources/lib/oojs-ui/i18n/nl.json +++ b/resources/lib/oojs-ui/i18n/nl.json @@ -17,7 +17,8 @@ "Southparkfan", "सरोज कुमार ढकाल", "Sjoerddebruin", - "Gloria sah" + "Gloria sah", + "Mainframe98" ] }, "ooui-outline-control-move-down": "Item omlaag verplaatsen", @@ -26,6 +27,7 @@ "ooui-toolbar-more": "Meer", "ooui-toolgroup-expand": "Meer", "ooui-toolgroup-collapse": "Minder", + "ooui-item-remove": "Verwijderen", "ooui-dialog-message-accept": "OK", "ooui-dialog-message-reject": "Annuleren", "ooui-dialog-process-error": "Er is iets misgegaan", diff --git a/resources/lib/oojs-ui/i18n/nn.json b/resources/lib/oojs-ui/i18n/nn.json index e3f3e115fd..a32e7a41c8 100644 --- a/resources/lib/oojs-ui/i18n/nn.json +++ b/resources/lib/oojs-ui/i18n/nn.json @@ -15,5 +15,6 @@ "ooui-dialog-process-dismiss": "Lat att", "ooui-dialog-process-continue": "Hald fram", "ooui-selectfile-button-select": "Vel ei fil", - "ooui-selectfile-placeholder": "Inga fil er vald" + "ooui-selectfile-placeholder": "Inga fil er vald", + "ooui-selectfile-dragdrop-placeholder": "Slepp fil her" } diff --git a/resources/lib/oojs-ui/i18n/pl.json b/resources/lib/oojs-ui/i18n/pl.json index 55847151f4..eaf0b1a818 100644 --- a/resources/lib/oojs-ui/i18n/pl.json +++ b/resources/lib/oojs-ui/i18n/pl.json @@ -26,6 +26,7 @@ "ooui-toolbar-more": "Więcej", "ooui-toolgroup-expand": "Więcej", "ooui-toolgroup-collapse": "Mniej", + "ooui-item-remove": "Usuń", "ooui-dialog-message-accept": "OK", "ooui-dialog-message-reject": "Anuluj", "ooui-dialog-process-error": "Coś poszło nie tak", diff --git a/resources/lib/oojs-ui/i18n/pt-br.json b/resources/lib/oojs-ui/i18n/pt-br.json index fc299620db..41ce674e1e 100644 --- a/resources/lib/oojs-ui/i18n/pt-br.json +++ b/resources/lib/oojs-ui/i18n/pt-br.json @@ -11,7 +11,8 @@ "OTAVIO1981", 555, "TheEduGobi", - "TheGabrielZaum" + "TheGabrielZaum", + "Felipe L. Ewald" ] }, "ooui-outline-control-move-down": "Mover item para baixo", @@ -24,7 +25,7 @@ "ooui-dialog-message-reject": "Cancelar", "ooui-dialog-process-error": "Algo deu errado", "ooui-dialog-process-dismiss": "Dispensar", - "ooui-dialog-process-retry": "Tentar novamente", + "ooui-dialog-process-retry": "Tente novamente", "ooui-dialog-process-continue": "Continuar", "ooui-selectfile-button-select": "Selecionar um arquivo", "ooui-selectfile-not-supported": "O selecionamento de arquivos não é suportado", diff --git a/resources/lib/oojs-ui/i18n/pt.json b/resources/lib/oojs-ui/i18n/pt.json index d3d265c9d6..246d9c2c40 100644 --- a/resources/lib/oojs-ui/i18n/pt.json +++ b/resources/lib/oojs-ui/i18n/pt.json @@ -20,6 +20,7 @@ "ooui-toolbar-more": "Mais", "ooui-toolgroup-expand": "Mais", "ooui-toolgroup-collapse": "Menos", + "ooui-item-remove": "Remover", "ooui-dialog-message-accept": "Aceitar", "ooui-dialog-message-reject": "Cancelar", "ooui-dialog-process-error": "Algo correu mal", diff --git a/resources/lib/oojs-ui/i18n/qqq.json b/resources/lib/oojs-ui/i18n/qqq.json index 1a096efc8e..8ca3afc77a 100644 --- a/resources/lib/oojs-ui/i18n/qqq.json +++ b/resources/lib/oojs-ui/i18n/qqq.json @@ -17,7 +17,8 @@ "Shirayuki", "Siebrand", "Trevor Parscal", - "Liuxinyu970226" + "Liuxinyu970226", + "Robby" ] }, "ooui-outline-control-move-down": "Tool tip for a button that moves items in a list down one place", @@ -26,6 +27,7 @@ "ooui-toolbar-more": "Label for the toolbar group that contains a list of all other available tools.\n{{Identical|More}}", "ooui-toolgroup-expand": "Label for the fake tool that expands the full list of tools in a toolbar group.\n\nSee also:\n* {{msg-mw|Ooui-toolgroup-collapse}}\n{{Identical|More}}", "ooui-toolgroup-collapse": "Label for the fake tool that collapses the full list of tools in a toolbar group.\n\nSee also:\n* {{msg-mw|Ooui-toolgroup-expand}}\n{{Identical|Fewer}}", + "ooui-item-remove": "Text for the action of removing an item\n{{Identical|Remove}}", "ooui-dialog-message-accept": "Default label for the accept button of a message dialog\n{{Identical|OK}}", "ooui-dialog-message-reject": "Default label for the reject button of a message dialog\n{{Identical|Cancel}}", "ooui-dialog-process-error": "Title for process dialog error description", diff --git a/resources/lib/oojs-ui/i18n/roa-tara.json b/resources/lib/oojs-ui/i18n/roa-tara.json index 73a5a6c120..eac47ec47e 100644 --- a/resources/lib/oojs-ui/i18n/roa-tara.json +++ b/resources/lib/oojs-ui/i18n/roa-tara.json @@ -10,6 +10,7 @@ "ooui-toolbar-more": "De cchiù", "ooui-toolgroup-expand": "De cchiù", "ooui-toolgroup-collapse": "De mene", + "ooui-item-remove": "Live", "ooui-dialog-message-accept": "OK", "ooui-dialog-message-reject": "Annulle", "ooui-dialog-process-error": "Quacche cose ha sciute stuèrte", diff --git a/resources/lib/oojs-ui/i18n/ru.json b/resources/lib/oojs-ui/i18n/ru.json index 6c62d360da..6b22fd8879 100644 --- a/resources/lib/oojs-ui/i18n/ru.json +++ b/resources/lib/oojs-ui/i18n/ru.json @@ -17,7 +17,8 @@ "Yury Katkov", "Умар", "Камалист", - "Meshkov.a" + "Meshkov.a", + "Mailman" ] }, "ooui-outline-control-move-down": "Переместить элемент вниз", @@ -26,6 +27,7 @@ "ooui-toolbar-more": "Ещё", "ooui-toolgroup-expand": "Больше", "ooui-toolgroup-collapse": "Меньше", + "ooui-item-remove": "Удалить", "ooui-dialog-message-accept": "ОК", "ooui-dialog-message-reject": "Отмена", "ooui-dialog-process-error": "Что-то пошло не так", diff --git a/resources/lib/oojs-ui/i18n/skr-arab.json b/resources/lib/oojs-ui/i18n/skr-arab.json new file mode 100644 index 0000000000..6be23541ae --- /dev/null +++ b/resources/lib/oojs-ui/i18n/skr-arab.json @@ -0,0 +1,18 @@ +{ + "@metadata": { + "authors": [ + "Saraiki" + ] + }, + "ooui-toolbar-more": "ٻئے", + "ooui-toolgroup-expand": "ٻئے", + "ooui-toolgroup-collapse": "گھٹ", + "ooui-dialog-message-accept": "ٹھیک ہے", + "ooui-dialog-message-reject": "منسوخ", + "ooui-dialog-process-error": "کجھ خراب تھی ڳئے", + "ooui-dialog-process-dismiss": "مکاؤ", + "ooui-dialog-process-retry": "ولدا کوشش کرو", + "ooui-dialog-process-continue": "جاری رکھو", + "ooui-selectfile-button-select": "فائل چݨو", + "ooui-selectfile-placeholder": "کوئی فائل کائنی چُݨی" +} diff --git a/resources/lib/oojs-ui/i18n/sr-ec.json b/resources/lib/oojs-ui/i18n/sr-ec.json index 87b7c2b1d2..6d675da9f2 100644 --- a/resources/lib/oojs-ui/i18n/sr-ec.json +++ b/resources/lib/oojs-ui/i18n/sr-ec.json @@ -5,7 +5,8 @@ "Nikola Smolenski", "Милан Јелисавчић", "Zoranzoki21", - "Obsuser" + "Obsuser", + "Prevodim" ] }, "ooui-outline-control-move-down": "Премести ставку надоле", @@ -14,6 +15,7 @@ "ooui-toolbar-more": "Више", "ooui-toolgroup-expand": "Више", "ooui-toolgroup-collapse": "Мање", + "ooui-item-remove": "Уклони", "ooui-dialog-message-accept": "У реду", "ooui-dialog-message-reject": "Откажи", "ooui-dialog-process-error": "Нешто је пошло наопако", diff --git a/resources/lib/oojs-ui/i18n/su.json b/resources/lib/oojs-ui/i18n/su.json index a8cf762e4b..2824d5bd43 100644 --- a/resources/lib/oojs-ui/i18n/su.json +++ b/resources/lib/oojs-ui/i18n/su.json @@ -1,7 +1,8 @@ { "@metadata": { "authors": [ - "Kandar" + "Kandar", + "Uchup19" ] }, "ooui-outline-control-move-down": "Pindahkeun ka handap", @@ -10,12 +11,15 @@ "ooui-toolbar-more": "Lobaan", "ooui-toolgroup-expand": "Lobaan", "ooui-toolgroup-collapse": "Saeutikan", + "ooui-item-remove": "Pupus", "ooui-dialog-message-accept": "Heug", "ooui-dialog-message-reject": "Bolay", "ooui-dialog-process-error": "Aya nu teu bener", "ooui-dialog-process-dismiss": "Tutup", "ooui-dialog-process-retry": "Cobaan deui", "ooui-dialog-process-continue": "Teruskeun", + "ooui-selectfile-button-select": "Pilih berkas", "ooui-selectfile-not-supported": "Pamilihan berkas teu dirojong", - "ooui-selectfile-placeholder": "Taya berkas anu dipilih" + "ooui-selectfile-placeholder": "Taya berkas anu dipilih", + "ooui-selectfile-dragdrop-placeholder": "Leupaskeun berkas di dieu" } diff --git a/resources/lib/oojs-ui/i18n/tay.json b/resources/lib/oojs-ui/i18n/tay.json new file mode 100644 index 0000000000..b75ac8e229 --- /dev/null +++ b/resources/lib/oojs-ui/i18n/tay.json @@ -0,0 +1,16 @@ +{ + "@metadata": { + "authors": [ + "Hitaypayan", + "Translatealcd" + ] + }, + "ooui-toolbar-more": "Pzyux na’", + "ooui-toolgroup-collapse": "Cikuy hazi’", + "ooui-item-remove": "Laxan", + "ooui-dialog-message-accept": "Wal balay", + "ooui-dialog-message-reject": "Laxan", + "ooui-dialog-process-dismiss": "Ql’iy", + "ooui-dialog-process-continue": "Siy lhingiy", + "ooui-selectfile-placeholder": "Ini’ wzyagiy na’ Tang’an" +} diff --git a/resources/lib/oojs-ui/i18n/uk.json b/resources/lib/oojs-ui/i18n/uk.json index a38afbfd61..55fec13a68 100644 --- a/resources/lib/oojs-ui/i18n/uk.json +++ b/resources/lib/oojs-ui/i18n/uk.json @@ -26,6 +26,7 @@ "ooui-toolbar-more": "Більше", "ooui-toolgroup-expand": "Більше", "ooui-toolgroup-collapse": "Менше", + "ooui-item-remove": "Вилучити", "ooui-dialog-message-accept": "Готово", "ooui-dialog-message-reject": "Скасувати", "ooui-dialog-process-error": "Щось пішло не так", diff --git a/resources/lib/oojs-ui/i18n/vi.json b/resources/lib/oojs-ui/i18n/vi.json index fd63081453..b271403467 100644 --- a/resources/lib/oojs-ui/i18n/vi.json +++ b/resources/lib/oojs-ui/i18n/vi.json @@ -14,6 +14,7 @@ "ooui-toolbar-more": "Thêm", "ooui-toolgroup-expand": "Mở rộng", "ooui-toolgroup-collapse": "Rút gọn", + "ooui-item-remove": "Loại bỏ", "ooui-dialog-message-accept": "OK", "ooui-dialog-message-reject": "Hủy bỏ", "ooui-dialog-process-error": "Có thứ gì đó bị lỗi", diff --git a/resources/lib/oojs-ui/i18n/yue.json b/resources/lib/oojs-ui/i18n/yue.json index 629528ded9..6a9e902b12 100644 --- a/resources/lib/oojs-ui/i18n/yue.json +++ b/resources/lib/oojs-ui/i18n/yue.json @@ -4,13 +4,14 @@ "Deryck Chan", "William915", "Shinjiman", - "Ktchankt" + "Ktchankt", + "Hello903hello" ] }, "ooui-outline-control-move-down": "向下搬", "ooui-outline-control-move-up": "向上搬", "ooui-outline-control-remove": "拎走", - "ooui-toolbar-more": "仲有", + "ooui-toolbar-more": "更多", "ooui-toolgroup-expand": "更多", "ooui-toolgroup-collapse": "少啲", "ooui-dialog-message-accept": "好", diff --git a/resources/lib/oojs-ui/i18n/zh-hans.json b/resources/lib/oojs-ui/i18n/zh-hans.json index 132c32d5cd..a3e637d69a 100644 --- a/resources/lib/oojs-ui/i18n/zh-hans.json +++ b/resources/lib/oojs-ui/i18n/zh-hans.json @@ -27,6 +27,7 @@ "ooui-toolbar-more": "更多", "ooui-toolgroup-expand": "更多", "ooui-toolgroup-collapse": "更少", + "ooui-item-remove": "移除", "ooui-dialog-message-accept": "确定", "ooui-dialog-message-reject": "取消", "ooui-dialog-process-error": "发生了一些错误", diff --git a/resources/lib/oojs-ui/oojs-ui-apex.js b/resources/lib/oojs-ui/oojs-ui-apex.js index d7451b30f4..57b4c8ba86 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.3 + * OOjs UI v0.23.1 * 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-07-11T22:12:33Z + * Date: 2017-09-20T00:31:56Z */ ( 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 dfd79ab260..e337e07239 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.3 + * OOjs UI v0.23.1 * 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-07-11T22:12:41Z + * Date: 2017-09-20T00:32:00Z */ .oo-ui-element-hidden { display: none !important; @@ -58,7 +58,8 @@ } .oo-ui-buttonElement > .oo-ui-buttonElement-button { color: #333; - border-radius: 0.3em; + position: relative; + border-radius: 4px; } .oo-ui-buttonElement > .oo-ui-buttonElement-button:focus { outline: 0; @@ -96,15 +97,14 @@ .oo-ui-buttonElement-frameless.oo-ui-iconElement > .oo-ui-buttonElement-button { padding: 0.3125em 0.3125em; } -.oo-ui-buttonElement-frameless.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label, -.oo-ui-buttonElement-frameless.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { - color: #333; - margin-left: 0.25em; -} .oo-ui-buttonElement-frameless.oo-ui-labelElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button, .oo-ui-buttonElement-frameless.oo-ui-iconElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button { padding: 0.3125em 0.3125em; } +.oo-ui-buttonElement-frameless.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { + color: #333; + margin-left: 0.25em; +} .oo-ui-buttonElement-frameless.oo-ui-indicatorElement > .oo-ui-buttonElement-button { padding: 0; } @@ -116,6 +116,26 @@ .oo-ui-buttonElement-frameless > input.oo-ui-buttonElement-button:focus { color: #000; } +.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-iconElement > .oo-ui-buttonElement-button:focus, +.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-labelElement > .oo-ui-buttonElement-button:focus { + border-color: #ace; + box-shadow: 0 0 2px 2px #ace; +} +.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-iconElement > .oo-ui-buttonElement-button:focus:active, +.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-labelElement > .oo-ui-buttonElement-button:focus:active { + border-color: #fff; + border-color: transparent; + box-shadow: none; +} +.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-indicatorElement:not( .oo-ui-iconElement ):not( .oo-ui-labelElement ) > .oo-ui-buttonElement-button { + border-radius: 4px; +} +.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-indicatorElement:not( .oo-ui-iconElement ):not( .oo-ui-labelElement ) > .oo-ui-buttonElement-button:focus { + box-shadow: 0 0 2px 2px #ace; +} +.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-indicatorElement:not( .oo-ui-iconElement ):not( .oo-ui-labelElement ) > .oo-ui-buttonElement-button:focus:active { + box-shadow: none; +} .oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { color: #087ecc; } @@ -145,10 +165,13 @@ background-image: linear-gradient(to bottom, #fff 0, #ddd 100%); -ms-filter: "progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffffff', endColorstr='#ffdddddd' )"; } -.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button:hover, -.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button:focus { +.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button:hover { border-color: #aaa; } +.oo-ui-buttonElement-framed > .oo-ui-buttonElement-button:focus { + border-color: #ace; + box-shadow: 0 0 2px 2px #ace; +} .oo-ui-buttonElement-framed > input.oo-ui-buttonElement-button, .oo-ui-buttonElement-framed.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label { line-height: 1.875em; @@ -166,6 +189,12 @@ background-image: linear-gradient(to bottom, #ddd 0, #fff 100%); -ms-filter: "progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffdddddd', endColorstr='#ffffffff' )"; } +.oo-ui-buttonElement-framed.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active:focus, +.oo-ui-buttonElement-framed.oo-ui-buttonElement-active > .oo-ui-buttonElement-button:focus, +.oo-ui-buttonElement-framed.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button:focus { + border-color: #ace; + box-shadow: inset 0 1px 4px 0 rgba(0, 0, 0, 0.07), 0 0 2px 2px #ace; +} .oo-ui-buttonElement-framed.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon { margin-left: -0.5em; margin-right: -0.5em; @@ -193,8 +222,7 @@ background-image: linear-gradient(to bottom, #eaf4fa 0, #b0d9ee 100%); -ms-filter: "progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffeaf4fa', endColorstr='#ffb0d9ee' )"; } -.oo-ui-buttonElement-framed.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:hover, -.oo-ui-buttonElement-framed.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:focus { +.oo-ui-buttonElement-framed.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:hover { border-color: #9dc2d4; } .oo-ui-buttonElement-framed.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active, @@ -217,8 +245,7 @@ background-image: linear-gradient(to bottom, #f0fbe1 0, #c3e59a 100%); -ms-filter: "progid:DXImageTransform.Microsoft.gradient( startColorstr='#fff0fbe1', endColorstr='#ffc3e59a' )"; } -.oo-ui-buttonElement-framed.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:hover, -.oo-ui-buttonElement-framed.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:focus { +.oo-ui-buttonElement-framed.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:hover { border-color: #adcb89; } .oo-ui-buttonElement-framed.oo-ui-flaggedElement-constructive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active, @@ -599,14 +626,22 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { opacity: 0.2; } .oo-ui-radioOptionWidget { + display: table; + width: 100%; padding: 0; background-color: transparent; } .oo-ui-radioOptionWidget .oo-ui-radioInputWidget, -.oo-ui-radioOptionWidget.oo-ui-labelElement .oo-ui-labelElement-label { - display: inline-block; +.oo-ui-radioOptionWidget.oo-ui-labelElement > .oo-ui-labelElement-label { + display: table-cell; vertical-align: middle; } +.oo-ui-radioOptionWidget .oo-ui-radioInputWidget { + width: 1px; +} +.oo-ui-radioOptionWidget.oo-ui-labelElement > .oo-ui-labelElement-label { + white-space: normal; +} .oo-ui-radioOptionWidget.oo-ui-optionWidget-selected, .oo-ui-radioOptionWidget.oo-ui-optionWidget-pressed, .oo-ui-radioOptionWidget.oo-ui-optionWidget-highlighted { @@ -648,8 +683,10 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { .oo-ui-buttonGroupWidget { display: inline-block; white-space: nowrap; - border-radius: 0.3em; + border-radius: 4px; margin-right: 0.5em; + z-index: 0; + position: relative; } .oo-ui-buttonGroupWidget .oo-ui-buttonWidget.oo-ui-buttonElement-active .oo-ui-buttonElement-button { cursor: default; @@ -668,13 +705,29 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { margin-left: -1px; } .oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed:first-child .oo-ui-buttonElement-button { - border-bottom-left-radius: 0.3em; - border-top-left-radius: 0.3em; + border-bottom-left-radius: 4px; + border-top-left-radius: 4px; margin-left: 0; } .oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed:last-child .oo-ui-buttonElement-button { - border-bottom-right-radius: 0.3em; - border-top-right-radius: 0.3em; + border-bottom-right-radius: 4px; + border-top-right-radius: 4px; +} +.oo-ui-buttonGroupWidget.oo-ui-widget-enabled .oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active { + z-index: 1; +} +.oo-ui-buttonGroupWidget.oo-ui-widget-enabled .oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button:focus { + z-index: 2; +} +.oo-ui-buttonGroupWidget.oo-ui-widget-enabled .oo-ui-buttonElement.oo-ui-buttonElement-active > .oo-ui-buttonElement-button { + z-index: 3; +} +.oo-ui-buttonGroupWidget.oo-ui-widget-enabled .oo-ui-buttonElement.oo-ui-widget-disabled > .oo-ui-buttonElement-button { + z-index: -1; +} +.oo-ui-buttonGroupWidget.oo-ui-widget-enabled .oo-ui-buttonElement.oo-ui-toggleWidget-on + .oo-ui-toggleWidget-on > .oo-ui-buttonElement-button, +.oo-ui-buttonGroupWidget.oo-ui-widget-enabled .oo-ui-buttonElement.oo-ui-toggleWidget-on + .oo-ui-toggleWidget-on > .oo-ui-buttonElement-button:active { + z-index: 3; } .oo-ui-popupWidget { position: absolute; @@ -863,9 +916,10 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { } .oo-ui-buttonInputWidget > button, .oo-ui-buttonInputWidget > input { + background-color: transparent; + margin: 0; border: 0; padding: 0; - background-color: transparent; } .oo-ui-checkboxMultiselectInputWidget .oo-ui-fieldLayout { margin-bottom: 0; @@ -909,10 +963,13 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { height: 1.5em; padding: 0.5em 1em; } -.oo-ui-dropdownInputWidget.oo-ui-widget-enabled select:hover, -.oo-ui-dropdownInputWidget.oo-ui-widget-enabled select:focus { +.oo-ui-dropdownInputWidget.oo-ui-widget-enabled select:hover { border-color: rgba(0, 0, 0, 0.2); +} +.oo-ui-dropdownInputWidget.oo-ui-widget-enabled select:focus { outline: 0; + border-color: #ace; + box-shadow: 0 0 2px 2px #ace; } .oo-ui-dropdownInputWidget.oo-ui-widget-disabled select { color: #ccc; @@ -1017,7 +1074,6 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { .oo-ui-textInputWidget input, .oo-ui-textInputWidget textarea { padding: 0.546875em 0.5em 0.625em 0.5em; - line-height: 1.275em; font-size: inherit; font-family: inherit; background-color: #fff; @@ -1058,11 +1114,17 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { color: #767676; opacity: 1; } +.oo-ui-textInputWidget input { + line-height: 1.172em; +} +.oo-ui-textInputWidget textarea { + line-height: 1.275; +} .oo-ui-textInputWidget.oo-ui-widget-enabled input:focus, .oo-ui-textInputWidget.oo-ui-widget-enabled textarea:focus { outline: 0; - border-color: #a7dcff; - box-shadow: 0 0 0.3em #a7dcff, 0 0 0 #fff; + border-color: #ace; + box-shadow: 0 0 2px 2px #ace; } .oo-ui-textInputWidget.oo-ui-widget-enabled input[readonly], .oo-ui-textInputWidget.oo-ui-widget-enabled textarea[readonly] { @@ -1092,7 +1154,7 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { padding-left: 2.475em; } .oo-ui-textInputWidget.oo-ui-iconElement .oo-ui-iconElement-icon { - max-height: 2.375em; + max-height: 2.5em; margin-left: 0.3em; } .oo-ui-textInputWidget.oo-ui-indicatorElement input, @@ -1100,12 +1162,13 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { padding-right: 2.4875em; } .oo-ui-textInputWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator { - max-height: 2.375em; + max-height: 2.5em; margin-right: 0.775em; } .oo-ui-textInputWidget > .oo-ui-labelElement-label { - padding: 0.4em; - line-height: 1.5em; + top: 1px; + padding: 0.546875em 0.4em 0.625em 0.4em; + line-height: 1.172em; color: #767676; } .oo-ui-textInputWidget-labelPosition-after.oo-ui-indicatorElement > .oo-ui-labelElement-label { @@ -1205,6 +1268,9 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { .oo-ui-dropdownWidget-handle:hover { border-color: rgba(0, 0, 0, 0.2); } +.oo-ui-dropdownWidget-handle:focus { + outline: 0; +} .oo-ui-dropdownWidget-handle .oo-ui-iconElement-icon { left: 0.25em; margin: 0 0.3em; @@ -1217,15 +1283,16 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { right: 0; margin: 0 0.775em; } +.oo-ui-dropdownWidget.oo-ui-widget-enabled .oo-ui-dropdownWidget-handle:focus { + border-color: #ace; + box-shadow: 0 0 2px 2px #ace; +} .oo-ui-dropdownWidget.oo-ui-widget-disabled .oo-ui-dropdownWidget-handle { color: #ccc; text-shadow: 0 1px 1px #fff; border-color: #ddd; background-color: #f3f3f3; } -.oo-ui-dropdownWidget.oo-ui-widget-disabled .oo-ui-dropdownWidget-handle:focus { - outline: 0; -} .oo-ui-dropdownWidget.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator { opacity: 0.2; } @@ -1297,7 +1364,7 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { } .oo-ui-comboBoxInputWidget-php .oo-ui-indicatorWidget { right: 0; - max-height: 2.375em; + max-height: 2.5em; margin: 0; margin-right: 0.775em; } @@ -1328,13 +1395,21 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { color: #ccc; } .oo-ui-checkboxMultioptionWidget { + display: table; + width: 100%; padding: 0; } .oo-ui-checkboxMultioptionWidget .oo-ui-checkboxInputWidget, -.oo-ui-checkboxMultioptionWidget.oo-ui-labelElement .oo-ui-labelElement-label { - display: inline-block; +.oo-ui-checkboxMultioptionWidget.oo-ui-labelElement > .oo-ui-labelElement-label { + display: table-cell; vertical-align: middle; } +.oo-ui-checkboxMultioptionWidget .oo-ui-checkboxInputWidget { + width: 1px; +} +.oo-ui-checkboxMultioptionWidget.oo-ui-labelElement > .oo-ui-labelElement-label { + white-space: normal; +} .oo-ui-checkboxMultioptionWidget.oo-ui-labelElement .oo-ui-labelElement-label { padding-left: 0.5em; } diff --git a/resources/lib/oojs-ui/oojs-ui-core-wikimediaui.css b/resources/lib/oojs-ui/oojs-ui-core-wikimediaui.css index f7cea21983..34847a8c51 100644 --- a/resources/lib/oojs-ui/oojs-ui-core-wikimediaui.css +++ b/resources/lib/oojs-ui/oojs-ui-core-wikimediaui.css @@ -1,13 +1,24 @@ /*! - * OOjs UI v0.22.3 + * OOjs UI v0.23.1 * 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-07-11T22:12:41Z + * Date: 2017-09-20T00:32:00Z */ +/** + * WikimediaUI Base v0.9.2 + * Wikimedia Foundation user interface base variables + */ +/* Colors */ +/* Positioning */ +/* Box Model properties */ +/* Max Widths */ +/* Typography incl. print properties */ +/* Other Properties */ +/* Animation & Transition */ .oo-ui-element-hidden { display: none !important; } @@ -59,6 +70,7 @@ .oo-ui-buttonElement > .oo-ui-buttonElement-button { position: relative; border-radius: 2px; + padding-top: 2.34375em; font-weight: bold; text-decoration: none; } @@ -144,19 +156,31 @@ .oo-ui-buttonElement-frameless.oo-ui-labelElement.oo-ui-iconElement:first-child { margin-left: -0.234375em; } -.oo-ui-buttonElement-frameless.oo-ui-labelElement.oo-ui-iconElement > .oo-ui-buttonElement-button { - padding-left: 2.34375em; -} .oo-ui-buttonElement-frameless.oo-ui-labelElement > .oo-ui-buttonElement-button { border-color: #fff; border-color: transparent; border-style: solid; border-width: 1px; - padding: 0.625em 0.3125em 0.546875em 0.3125em; + padding: 0.625em 0.3125em 0.546875em; +} +.oo-ui-buttonElement-frameless.oo-ui-labelElement.oo-ui-iconElement > .oo-ui-buttonElement-button { + padding-left: 2.34375em; } .oo-ui-buttonElement-frameless.oo-ui-indicatorElement > .oo-ui-buttonElement-button { min-width: 12px; min-height: 12px; + padding-top: 0; +} +.oo-ui-buttonElement-frameless.oo-ui-indicatorElement.oo-ui-iconElement > .oo-ui-buttonElement-button { + padding-left: 4.21875em; + padding-top: 2.34375em; +} +.oo-ui-buttonElement-frameless.oo-ui-indicatorElement.oo-ui-labelElement > .oo-ui-buttonElement-button { + padding-left: 0.3125em; + padding-top: 0.625em; +} +.oo-ui-buttonElement-frameless.oo-ui-indicatorElement.oo-ui-iconElement.oo-ui-labelElement > .oo-ui-buttonElement-button { + padding-left: 2.34375em; } .oo-ui-buttonElement-frameless.oo-ui-widget-enabled > .oo-ui-buttonElement-button { color: #222; @@ -191,26 +215,19 @@ border-color: transparent; box-shadow: none; } -.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button { - color: #36c; -} -.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:hover { - color: #447ff5; -} -.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:active, -.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:active:focus, -.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button { - color: #2a4b8d; - box-shadow: none; -} +.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button, .oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button { color: #36c; } +.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:hover, .oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:hover { color: #447ff5; } +.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:active, .oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:active, +.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:active:focus, .oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:active:focus, +.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button, .oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button { color: #2a4b8d; box-shadow: none; @@ -317,45 +334,31 @@ border-color: #36c; box-shadow: inset 0 0 0 1px #36c, inset 0 0 0 2px #fff; } -.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button { - color: #36c; -} -.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:hover { - background-color: #fff; - border-color: #447ff5; -} -.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:active, -.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:active:focus, -.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button, -.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive.oo-ui-buttonElement-active > .oo-ui-buttonElement-button, -.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive.oo-ui-popupToolGroup-active > .oo-ui-buttonElement-button { - background-color: #eff3fa; - color: #2a4b8d; - border-color: #2a4b8d; - box-shadow: none; -} -.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:focus { - border-color: #36c; - box-shadow: inset 0 0 0 1px #36c; - outline: 0; -} +.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button, .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button { color: #36c; } +.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:hover, .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:hover { background-color: #fff; border-color: #447ff5; } +.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:active, .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:active, +.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:active:focus, .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:active:focus, +.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button, .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button, +.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive.oo-ui-buttonElement-active > .oo-ui-buttonElement-button, .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive.oo-ui-buttonElement-active > .oo-ui-buttonElement-button, +.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive.oo-ui-popupToolGroup-active > .oo-ui-buttonElement-button, .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive.oo-ui-popupToolGroup-active > .oo-ui-buttonElement-button { background-color: #eff3fa; color: #2a4b8d; border-color: #2a4b8d; box-shadow: none; } +.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:focus, .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:focus { border-color: #36c; box-shadow: inset 0 0 0 1px #36c; @@ -383,49 +386,33 @@ box-shadow: inset 0 0 0 1px #d33; outline: 0; } -.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button { - color: #fff; - background-color: #36c; - border-color: #36c; -} -.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:hover { - background-color: #447ff5; - border-color: #447ff5; -} -.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:active, -.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:active:focus, -.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button, -.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive.oo-ui-buttonElement-active > .oo-ui-buttonElement-button, -.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive.oo-ui-popupToolGroup-active > .oo-ui-buttonElement-button { - color: #fff; - background-color: #2a4b8d; - border-color: #2a4b8d; - box-shadow: none; -} -.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:focus { - border-color: #36c; - box-shadow: inset 0 0 0 1px #36c, inset 0 0 0 2px #fff; - outline: 0; -} +.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button, .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button { color: #fff; background-color: #36c; border-color: #36c; } +.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:hover, .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:hover { background-color: #447ff5; border-color: #447ff5; } +.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:active, .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:active, +.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:active:focus, .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:active:focus, +.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button, .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-constructive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button, +.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive.oo-ui-buttonElement-active > .oo-ui-buttonElement-button, .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-constructive.oo-ui-buttonElement-active > .oo-ui-buttonElement-button, +.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive.oo-ui-popupToolGroup-active > .oo-ui-buttonElement-button, .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-constructive.oo-ui-popupToolGroup-active > .oo-ui-buttonElement-button { color: #fff; background-color: #2a4b8d; border-color: #2a4b8d; box-shadow: none; } +.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:focus, .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:focus { border-color: #36c; box-shadow: inset 0 0 0 1px #36c, inset 0 0 0 2px #fff; @@ -832,13 +819,21 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { border-color: #fff; } .oo-ui-radioOptionWidget { + display: table; + width: 100%; padding: 0.3125em 0; } .oo-ui-radioOptionWidget .oo-ui-radioInputWidget, -.oo-ui-radioOptionWidget.oo-ui-labelElement .oo-ui-labelElement-label { - display: inline-block; +.oo-ui-radioOptionWidget.oo-ui-labelElement > .oo-ui-labelElement-label { + display: table-cell; vertical-align: middle; } +.oo-ui-radioOptionWidget .oo-ui-radioInputWidget { + width: 1px; +} +.oo-ui-radioOptionWidget.oo-ui-labelElement > .oo-ui-labelElement-label { + white-space: normal; +} .oo-ui-radioOptionWidget.oo-ui-labelElement .oo-ui-labelElement-label { padding-left: 0.46875em; } @@ -887,6 +882,7 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { } .oo-ui-buttonGroupWidget .oo-ui-buttonElement { margin-right: 0; + z-index: 0; } .oo-ui-buttonGroupWidget .oo-ui-buttonElement:last-child { margin-right: 0; @@ -1114,14 +1110,16 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { } .oo-ui-buttonInputWidget > button, .oo-ui-buttonInputWidget > input { + background-color: transparent; + margin: 0; border: 0; padding: 0; - background-color: transparent; } .oo-ui-checkboxInputWidget { position: relative; line-height: 1.5625em; white-space: nowrap; + display: inline-block; } .oo-ui-checkboxInputWidget * { font: inherit; @@ -1163,10 +1161,6 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { background-color: #c8ccd1; border-color: #c8ccd1; } -.oo-ui-checkboxInputWidget [type='checkbox']:disabled:hover + span { - background-color: #c8ccd1; - border-color: #c8ccd1; -} .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox'] { cursor: pointer; } @@ -1176,41 +1170,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; } @@ -1307,6 +1296,7 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { position: relative; line-height: 1.5625em; white-space: nowrap; + display: inline-block; } .oo-ui-radioInputWidget * { font: inherit; @@ -1374,22 +1364,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; } @@ -1515,9 +1502,9 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { .oo-ui-textInputWidget.oo-ui-widget-enabled input, .oo-ui-textInputWidget.oo-ui-widget-enabled textarea { box-shadow: inset 0 0 0 1px transparent; - -webkit-transition: border-color 200ms cubic-bezier(0.39, 0.575, 0.565, 1), box-shadow 200ms cubic-bezier(0.39, 0.575, 0.565, 1); - -moz-transition: border-color 200ms cubic-bezier(0.39, 0.575, 0.565, 1), box-shadow 200ms cubic-bezier(0.39, 0.575, 0.565, 1); - transition: border-color 200ms cubic-bezier(0.39, 0.575, 0.565, 1), box-shadow 200ms cubic-bezier(0.39, 0.575, 0.565, 1); + -webkit-transition: border-color 200ms cubic-bezier(0.4, 0.55, 0.55, 1), box-shadow 200ms cubic-bezier(0.4, 0.55, 0.55, 1); + -moz-transition: border-color 200ms cubic-bezier(0.4, 0.55, 0.55, 1), box-shadow 200ms cubic-bezier(0.4, 0.55, 0.55, 1); + transition: border-color 200ms cubic-bezier(0.4, 0.55, 0.55, 1), box-shadow 200ms cubic-bezier(0.4, 0.55, 0.55, 1); } .oo-ui-textInputWidget.oo-ui-widget-enabled input:hover, .oo-ui-textInputWidget.oo-ui-widget-enabled textarea:hover { @@ -1881,13 +1868,21 @@ body:not( :-moz-handler-blocked ) .oo-ui-fieldsetLayout { color: #72777d; } .oo-ui-checkboxMultioptionWidget { + display: table; + width: 100%; padding: 0.3125em 0; } .oo-ui-checkboxMultioptionWidget .oo-ui-checkboxInputWidget, -.oo-ui-checkboxMultioptionWidget.oo-ui-labelElement .oo-ui-labelElement-label { - display: inline-block; +.oo-ui-checkboxMultioptionWidget.oo-ui-labelElement > .oo-ui-labelElement-label { + display: table-cell; vertical-align: middle; } +.oo-ui-checkboxMultioptionWidget .oo-ui-checkboxInputWidget { + width: 1px; +} +.oo-ui-checkboxMultioptionWidget.oo-ui-labelElement > .oo-ui-labelElement-label { + white-space: normal; +} .oo-ui-checkboxMultioptionWidget.oo-ui-labelElement .oo-ui-labelElement-label { padding-left: 0.46875em; } diff --git a/resources/lib/oojs-ui/oojs-ui-core.js b/resources/lib/oojs-ui/oojs-ui-core.js index 2c9731d5ee..543672e6ac 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.3 + * OOjs UI v0.23.1 * 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-07-11T22:12:33Z + * Date: 2017-09-20T00:31:56Z */ ( function ( OO ) { @@ -362,6 +362,8 @@ OO.ui.infuse = function ( idOrNode ) { 'ooui-toolgroup-expand': 'More', // Label for the fake tool that collapses the full list of tools in a toolbar group 'ooui-toolgroup-collapse': 'Fewer', + // Default label for the tooltip for the button that removes a tag item + 'ooui-item-remove': 'Remove', // Default label for the accept button of a confirmation dialog 'ooui-dialog-message-accept': 'OK', // Default label for the reject button of a confirmation dialog @@ -659,7 +661,7 @@ OO.ui.Element.static.tagName = 'div'; OO.ui.Element.static.infuse = function ( idOrNode ) { var obj = OO.ui.Element.static.unsafeInfuse( idOrNode, false ); // Verify that the type matches up. - // FIXME: uncomment after T89721 is fixed (see T90929) + // FIXME: uncomment after T89721 is fixed, see T90929. /* if ( !( obj instanceof this['class'] ) ) { throw new Error( 'Infusion type mismatch!' ); @@ -681,7 +683,7 @@ OO.ui.Element.static.infuse = function ( idOrNode ) { */ OO.ui.Element.static.unsafeInfuse = function ( idOrNode, domPromise ) { // look for a cached result of a previous infusion. - var id, $elem, data, cls, parts, parent, obj, top, state, infusedChildren; + var id, $elem, error, data, cls, parts, parent, obj, top, state, infusedChildren; if ( typeof idOrNode === 'string' ) { id = idOrNode; $elem = $( document.getElementById( id ) ); @@ -690,7 +692,14 @@ OO.ui.Element.static.unsafeInfuse = function ( idOrNode, domPromise ) { id = $elem.attr( 'id' ); } if ( !$elem.length ) { - throw new Error( 'Widget not found: ' + id ); + if ( typeof idOrNode === 'string' ) { + error = 'Widget not found: ' + idOrNode; + } else if ( idOrNode && idOrNode.selector ) { + error = 'Widget not found: ' + idOrNode.selector; + } else { + error = 'Widget not found'; + } + throw new Error( error ); } if ( $elem[ 0 ].oouiInfused ) { $elem = $elem[ 0 ].oouiInfused; @@ -735,12 +744,7 @@ OO.ui.Element.static.unsafeInfuse = function ( idOrNode, domPromise ) { parts = data._.split( '.' ); cls = OO.getProp.apply( OO, [ window ].concat( parts ) ); if ( cls === undefined ) { - // The PHP output might be old and not including the "OO.ui" prefix - // TODO: Remove this back-compat after next major release - cls = OO.getProp.apply( OO, [ OO.ui ].concat( parts ) ); - if ( cls === undefined ) { - throw new Error( 'Unknown widget type: id: ' + id + ', class: ' + data._ ); - } + throw new Error( 'Unknown widget type: id: ' + id + ', class: ' + data._ ); } // Verify that we're creating an OO.ui.Element instance @@ -796,7 +800,7 @@ OO.ui.Element.static.unsafeInfuse = function ( idOrNode, domPromise ) { if ( $elem[ 0 ] !== obj.$element[ 0 ] ) { $elem.replaceWith( obj.$element ); // This element is now gone from the DOM, but if anyone is holding a reference to it, - // let's allow them to OO.ui.infuse() it and do what they expect (T105828). + // let's allow them to OO.ui.infuse() it and do what they expect, see T105828. // Do not use jQuery.data(), as using it on detached nodes leaks memory in 1.x line by design. $elem[ 0 ].oouiInfused = obj.$element; } @@ -2679,8 +2683,8 @@ OO.ui.mixin.IconElement.prototype.setIcon = function ( icon ) { * @chainable */ OO.ui.mixin.IconElement.prototype.setIconTitle = function ( iconTitle ) { - iconTitle = typeof iconTitle === 'function' || - ( typeof iconTitle === 'string' && iconTitle.length ) ? + iconTitle = + ( typeof iconTitle === 'function' || ( typeof iconTitle === 'string' && iconTitle.length ) ) ? OO.ui.resolveMsg( iconTitle ) : null; if ( this.iconTitle !== iconTitle ) { @@ -2848,8 +2852,8 @@ OO.ui.mixin.IndicatorElement.prototype.setIndicator = function ( indicator ) { * @chainable */ OO.ui.mixin.IndicatorElement.prototype.setIndicatorTitle = function ( indicatorTitle ) { - indicatorTitle = typeof indicatorTitle === 'function' || - ( typeof indicatorTitle === 'string' && indicatorTitle.length ) ? + indicatorTitle = + ( typeof indicatorTitle === 'function' || ( typeof indicatorTitle === 'string' && indicatorTitle.length ) ) ? OO.ui.resolveMsg( indicatorTitle ) : null; if ( this.indicatorTitle !== indicatorTitle ) { @@ -3344,7 +3348,7 @@ OO.ui.mixin.TitledElement.prototype.setTitledElement = function ( $titled ) { this.$titled = $titled; if ( this.title ) { - this.$titled.attr( 'title', this.title ); + this.updateTitle(); } }; @@ -3359,19 +3363,35 @@ OO.ui.mixin.TitledElement.prototype.setTitle = function ( title ) { title = ( typeof title === 'string' && title.length ) ? title : null; if ( this.title !== title ) { - if ( this.$titled ) { - if ( title !== null ) { - this.$titled.attr( 'title', title ); - } else { - this.$titled.removeAttr( 'title' ); - } - } this.title = title; + this.updateTitle(); } return this; }; +/** + * Update the title attribute, in case of changes to title or accessKey. + * + * @protected + * @chainable + */ +OO.ui.mixin.TitledElement.prototype.updateTitle = function () { + var title = this.getTitle(); + if ( this.$titled ) { + if ( title !== null ) { + // Only if this is an AccessKeyedElement + if ( this.formatTitleWithAccessKey ) { + title = this.formatTitleWithAccessKey( title ); + } + this.$titled.attr( 'title', title ); + } else { + this.$titled.removeAttr( 'title' ); + } + } + return this; +}; + /** * Get title. * @@ -3418,6 +3438,12 @@ OO.ui.mixin.AccessKeyedElement = function OoUiMixinAccessKeyedElement( config ) // Initialization this.setAccessKey( config.accessKey || null ); this.setAccessKeyedElement( config.$accessKeyed || this.$element ); + + // If this is also a TitledElement and it initialized before we did, we may have + // to update the title with the access key + if ( this.updateTitle ) { + this.updateTitle(); + } }; /* Setup */ @@ -3474,6 +3500,11 @@ OO.ui.mixin.AccessKeyedElement.prototype.setAccessKey = function ( accessKey ) { } } this.accessKey = accessKey; + + // Only if this is a TitledElement + if ( this.updateTitle ) { + this.updateTitle(); + } } return this; @@ -3488,6 +3519,32 @@ OO.ui.mixin.AccessKeyedElement.prototype.getAccessKey = function () { return this.accessKey; }; +/** + * Add information about the access key to the element's tooltip label. + * (This is only public for hacky usage in FieldLayout.) + * + * @param {string} title Tooltip label for `title` attribute + * @return {string} + */ +OO.ui.mixin.AccessKeyedElement.prototype.formatTitleWithAccessKey = function ( title ) { + var accessKey; + + if ( !this.$accessKeyed ) { + // Not initialized yet; the constructor will call updateTitle() which will rerun this function + return title; + } + // Use jquery.accessKeyLabel if available to show modifiers, otherwise just display the single key + if ( $.fn.updateTooltipAccessKeys && $.fn.updateTooltipAccessKeys.getAccessKeyLabel ) { + accessKey = $.fn.updateTooltipAccessKeys.getAccessKeyLabel( this.$accessKeyed[ 0 ] ); + } else { + accessKey = this.getAccessKey(); + } + if ( accessKey ) { + title += ' [' + accessKey + ']'; + } + return title; +}; + /** * ButtonWidget is a generic widget for buttons. A wide variety of looks, * feels, and functionality can be customized via the class’s configuration options @@ -4781,7 +4838,7 @@ OO.ui.mixin.ClippableElement.prototype.clip = function () { clipHeight = allotedHeight < naturalHeight; if ( clipWidth ) { - // The order matters here. If overflow is not set first, Chrome displays bogus scrollbars. (T157672) + // The order matters here. If overflow is not set first, Chrome displays bogus scrollbars. See T157672. // Forcing a reflow is a smaller workaround than calling reconsiderScrollbars() for this case. this.$clippable.css( 'overflowX', 'scroll' ); void this.$clippable[ 0 ].offsetHeight; // Force reflow @@ -4797,7 +4854,7 @@ OO.ui.mixin.ClippableElement.prototype.clip = function () { } ); } if ( clipHeight ) { - // The order matters here. If overflow is not set first, Chrome displays bogus scrollbars. (T157672) + // The order matters here. If overflow is not set first, Chrome displays bogus scrollbars. See T157672. // Forcing a reflow is a smaller workaround than calling reconsiderScrollbars() for this case. this.$clippable.css( 'overflowY', 'scroll' ); void this.$clippable[ 0 ].offsetHeight; // Force reflow @@ -6011,12 +6068,12 @@ OO.ui.SelectWidget.prototype.onFocus = function ( event ) { // This widget was focussed, e.g. by the user tabbing to it. // The styles for focus state depend on one of the items being selected. if ( !this.getSelectedItem() ) { - item = this.getFirstSelectableItem(); + item = this.findFirstSelectableItem(); } } else { // One of the options got focussed (and the event bubbled up here). // They can't be tabbed to, but they can be activated using accesskeys. - item = this.getTargetItem( event ); + item = this.findTargetItem( event ); } if ( item ) { @@ -6043,7 +6100,7 @@ OO.ui.SelectWidget.prototype.onMouseDown = function ( e ) { if ( !this.isDisabled() && e.which === OO.ui.MouseButtons.LEFT ) { this.togglePressed( true ); - item = this.getTargetItem( e ); + item = this.findTargetItem( e ); if ( item && item.isSelectable() ) { this.pressItem( item ); this.selecting = item; @@ -6065,7 +6122,7 @@ OO.ui.SelectWidget.prototype.onMouseUp = function ( e ) { this.togglePressed( false ); if ( !this.selecting ) { - item = this.getTargetItem( e ); + item = this.findTargetItem( e ); if ( item && item.isSelectable() ) { this.selecting = item; } @@ -6092,7 +6149,7 @@ OO.ui.SelectWidget.prototype.onMouseMove = function ( e ) { var item; if ( !this.isDisabled() && this.pressed ) { - item = this.getTargetItem( e ); + item = this.findTargetItem( e ); if ( item && item !== this.selecting && item.isSelectable() ) { this.pressItem( item ); this.selecting = item; @@ -6112,7 +6169,7 @@ OO.ui.SelectWidget.prototype.onMouseOver = function ( e ) { return; } if ( !this.isDisabled() ) { - item = this.getTargetItem( e ); + item = this.findTargetItem( e ); this.highlightItem( item && item.isHighlightable() ? item : null ); } return false; @@ -6140,7 +6197,7 @@ OO.ui.SelectWidget.prototype.onMouseLeave = function () { OO.ui.SelectWidget.prototype.onKeyDown = function ( e ) { var nextItem, handled = false, - currentItem = this.getHighlightedItem() || this.getSelectedItem(); + currentItem = this.findHighlightedItem() || this.getSelectedItem(); if ( !this.isDisabled() && this.isVisible() ) { switch ( e.keyCode ) { @@ -6154,13 +6211,13 @@ OO.ui.SelectWidget.prototype.onKeyDown = function ( e ) { case OO.ui.Keys.UP: case OO.ui.Keys.LEFT: this.clearKeyPressBuffer(); - nextItem = this.getRelativeSelectableItem( currentItem, -1 ); + nextItem = this.findRelativeSelectableItem( currentItem, -1 ); handled = true; break; case OO.ui.Keys.DOWN: case OO.ui.Keys.RIGHT: this.clearKeyPressBuffer(); - nextItem = this.getRelativeSelectableItem( currentItem, 1 ); + nextItem = this.findRelativeSelectableItem( currentItem, 1 ); handled = true; break; case OO.ui.Keys.ESCAPE: @@ -6266,13 +6323,13 @@ OO.ui.SelectWidget.prototype.onKeyPress = function ( e ) { } this.keyPressBufferTimer = setTimeout( this.clearKeyPressBuffer.bind( this ), 1500 ); - item = this.getHighlightedItem() || this.getSelectedItem(); + item = this.findHighlightedItem() || this.getSelectedItem(); if ( this.keyPressBuffer === c ) { // Common (if weird) special case: typing "xxxx" will cycle through all // the items beginning with "x". if ( item ) { - item = this.getRelativeSelectableItem( item, 1 ); + item = this.findRelativeSelectableItem( item, 1 ); } } else { this.keyPressBuffer += c; @@ -6280,7 +6337,7 @@ OO.ui.SelectWidget.prototype.onKeyPress = function ( e ) { filter = this.getItemMatcher( this.keyPressBuffer, false ); if ( !item || !filter( item ) ) { - item = this.getRelativeSelectableItem( item, 1, filter ); + item = this.findRelativeSelectableItem( item, 1, filter ); } if ( item ) { if ( this.isVisible() && item.constructor.static.highlightable ) { @@ -6310,7 +6367,7 @@ OO.ui.SelectWidget.prototype.getItemMatcher = function ( s, exact ) { s = s.normalize(); } s = exact ? s.trim() : s.replace( /^\s+/, '' ); - re = '^\\s*' + s.replace( /([\\{}()|.?*+\-\^$\[\]])/g, '\\$1' ).replace( /\s+/g, '\\s+' ); + re = '^\\s*' + s.replace( /([\\{}()|.?*+\-^$[\]])/g, '\\$1' ).replace( /\s+/g, '\\s+' ); if ( exact ) { re += '\\s*$'; } @@ -6365,8 +6422,12 @@ OO.ui.SelectWidget.prototype.onToggle = function ( visible ) { * @param {jQuery.Event} e * @return {OO.ui.OptionWidget|null} Outline item widget, `null` if none was found */ -OO.ui.SelectWidget.prototype.getTargetItem = function ( e ) { - return $( e.target ).closest( '.oo-ui-optionWidget' ).data( 'oo-ui-optionWidget' ) || null; +OO.ui.SelectWidget.prototype.findTargetItem = function ( e ) { + var $option = $( e.target ).closest( '.oo-ui-optionWidget' ); + if ( !$option.closest( '.oo-ui-selectWidget' ).is( this.$element ) ) { + return null; + } + return $option.data( 'oo-ui-optionWidget' ) || null; }; /** @@ -6386,11 +6447,11 @@ OO.ui.SelectWidget.prototype.getSelectedItem = function () { }; /** - * Get highlighted item. + * Find highlighted item. * * @return {OO.ui.OptionWidget|null} Highlighted item, `null` if no item is highlighted */ -OO.ui.SelectWidget.prototype.getHighlightedItem = function () { +OO.ui.SelectWidget.prototype.findHighlightedItem = function () { var i, len; for ( i = 0, len = this.items.length; i < len; i++ ) { @@ -6401,6 +6462,17 @@ OO.ui.SelectWidget.prototype.getHighlightedItem = function () { return null; }; +/** + * Get highlighted item. + * + * @deprecated 0.23.1 Use {@link #findHighlightedItem} instead. + * @return {OO.ui.OptionWidget|null} Highlighted item, `null` if no item is highlighted + */ +OO.ui.SelectWidget.prototype.getHighlightedItem = function () { + OO.ui.warnDeprecation( 'SelectWidget#getHighlightedItem: Deprecated function. Use findHighlightedItem instead. See T76630.' ); + return this.findHighlightedItem(); +}; + /** * Toggle pressed state. * @@ -6611,7 +6683,7 @@ OO.ui.SelectWidget.prototype.chooseItem = function ( item ) { }; /** - * Get an option by its position relative to the specified item (or to the start of the option array, + * Find an option by its position relative to the specified item (or to the start of the option array, * if item is `null`). The direction in which to search through the option array is specified with a * number: -1 for reverse (the default) or 1 for forward. The method will return an option, or * `null` if there are no options in the array. @@ -6622,7 +6694,7 @@ OO.ui.SelectWidget.prototype.chooseItem = function ( item ) { * true. Function takes an OO.ui.OptionWidget and returns a boolean. * @return {OO.ui.OptionWidget|null} Item at position, `null` if there are no items in the select */ -OO.ui.SelectWidget.prototype.getRelativeSelectableItem = function ( item, direction, filter ) { +OO.ui.SelectWidget.prototype.findRelativeSelectableItem = function ( item, direction, filter ) { var currentIndex, nextIndex, i, increase = direction > 0 ? 1 : -1, len = this.items.length; @@ -6649,14 +6721,44 @@ OO.ui.SelectWidget.prototype.getRelativeSelectableItem = function ( item, direct return null; }; +/** + * Get an option by its position relative to the specified item (or to the start of the option array, + * if item is `null`). The direction in which to search through the option array is specified with a + * number: -1 for reverse (the default) or 1 for forward. The method will return an option, or + * `null` if there are no options in the array. + * + * @deprecated 0.23.1 Use {@link #findRelativeSelectableItem} instead + * @param {OO.ui.OptionWidget|null} item Item to describe the start position, or `null` to start at the beginning of the array. + * @param {number} direction Direction to move in: -1 to move backward, 1 to move forward + * @param {Function} [filter] Only consider items for which this function returns + * true. Function takes an OO.ui.OptionWidget and returns a boolean. + * @return {OO.ui.OptionWidget|null} Item at position, `null` if there are no items in the select + */ +OO.ui.SelectWidget.prototype.getRelativeSelectableItem = function ( item, direction, filter ) { + OO.ui.warnDeprecation( 'SelectWidget#getRelativeSelectableItem: Deprecated function. Use findRelativeSelectableItem instead. See T76630.' ); + return this.findRelativeSelectableItem( item, direction, filter ); +}; + +/** + * Find the next selectable item or `null` if there are no selectable items. + * Disabled options and menu-section markers and breaks are not selectable. + * + * @return {OO.ui.OptionWidget|null} Item, `null` if there aren't any selectable items + */ +OO.ui.SelectWidget.prototype.findFirstSelectableItem = function () { + return this.findRelativeSelectableItem( null, 1 ); +}; + /** * Get the next selectable item or `null` if there are no selectable items. * Disabled options and menu-section markers and breaks are not selectable. * + * @deprecated 0.23.1 Use {@link OO.ui.SelectWidget#findFirstSelectableItem} instead. * @return {OO.ui.OptionWidget|null} Item, `null` if there aren't any selectable items */ OO.ui.SelectWidget.prototype.getFirstSelectableItem = function () { - return this.getRelativeSelectableItem( null, 1 ); + OO.ui.warnDeprecation( 'SelectWidget#getFirstSelectableItem: Deprecated function. Use findFirstSelectableItem instead. See T76630.' ); + return this.findFirstSelectableItem(); }; /** @@ -7001,9 +7103,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 ); @@ -7014,7 +7116,7 @@ OO.ui.MenuSelectWidget.prototype.onDocumentMouseDown = function ( e ) { * @inheritdoc */ OO.ui.MenuSelectWidget.prototype.onKeyDown = function ( e ) { - var currentItem = this.getHighlightedItem() || this.getSelectedItem(); + var currentItem = this.findHighlightedItem() || this.getSelectedItem(); if ( !this.isDisabled() && this.isVisible() ) { switch ( e.keyCode ) { @@ -8094,51 +8196,6 @@ OO.ui.CheckboxMultiselectWidget.prototype.simulateLabelClick = function () { this.focus(); }; -/** - * FloatingMenuSelectWidget was a menu that would stick under a specified - * container, even when it is inserted elsewhere in the document. - * This functionality is now included in MenuSelectWidget, and FloatingMenuSelectWidget - * is preserved for backwards-compatibility. - * - * @class - * @extends OO.ui.MenuSelectWidget - * @deprecated since v0.21.3, use MenuSelectWidget instead. - * - * @constructor - * @param {OO.ui.Widget} [inputWidget] Widget to provide the menu for. - * Deprecated, omit this parameter and specify `$container` instead. - * @param {Object} [config] Configuration options - * @cfg {jQuery} [$container=inputWidget.$element] Element to render menu under - */ -OO.ui.FloatingMenuSelectWidget = function OoUiFloatingMenuSelectWidget( inputWidget, config ) { - OO.ui.warnDeprecation( 'FloatingMenuSelectWidget is deprecated. Use the MenuSelectWidget instead.' ); - - // Allow 'inputWidget' parameter and config for backwards compatibility - if ( OO.isPlainObject( inputWidget ) && config === undefined ) { - config = inputWidget; - inputWidget = config.inputWidget; - } - - // Configuration initialization - config = config || {}; - - // Properties - this.inputWidget = inputWidget; // For backwards compatibility - this.$container = config.$floatableContainer || config.$container || this.inputWidget.$element; - - // Parent constructor - OO.ui.FloatingMenuSelectWidget.parent.call( this, $.extend( {}, config, { $floatableContainer: this.$container } ) ); - - // Initialization - this.$element.addClass( 'oo-ui-floatingMenuSelectWidget' ); - // For backwards compatibility - this.$element.addClass( 'oo-ui-textInputMenuSelectWidget' ); -}; - -/* Setup */ - -OO.inheritClass( OO.ui.FloatingMenuSelectWidget, OO.ui.MenuSelectWidget ); - /** * Progress bars visually display the status of an operation, such as a download, * and can be either determinate or indeterminate: @@ -8319,7 +8376,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; }; @@ -8914,7 +8971,7 @@ OO.ui.DropdownInputWidget.prototype.setValue = function ( value ) { value = this.cleanUpValue( value ); // Only allow setting values that are actually present in the dropdown selected = this.dropdownWidget.getMenu().getItemFromData( value ) || - this.dropdownWidget.getMenu().getFirstSelectableItem(); + this.dropdownWidget.getMenu().findFirstSelectableItem(); this.dropdownWidget.getMenu().selectItem( selected ); value = selected ? selected.getData() : ''; OO.ui.DropdownInputWidget.parent.prototype.setValue.call( this, value ); @@ -9340,6 +9397,11 @@ OO.ui.CheckboxMultiselectInputWidget = function OoUiCheckboxMultiselectInputWidg this.setOptions( config.options || [] ); // Have to repeat this from parent, as we need options to be set up for this to make sense this.setValue( config.value ); + + // setValue when checkboxMultiselectWidget changes + this.checkboxMultiselectWidget.on( 'change', function () { + this.setValue( this.checkboxMultiselectWidget.getSelectedItemsData() ); + }.bind( this ) ); }; /* Setup */ @@ -9530,7 +9592,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 ); } @@ -10141,25 +10203,24 @@ OO.ui.TextInputWidget.prototype.updatePosition = function () { * @chainable */ OO.ui.TextInputWidget.prototype.positionLabel = function () { - var after, rtl, property; + var after, rtl, property, newCss; if ( this.isWaitingToBeAttached ) { // #onElementAttach will be called soon, which calls this method return this; } - // Clear old values - this.$input - // Clear old values if present - .css( { - 'padding-right': '', - 'padding-left': '' - } ); + newCss = { + 'padding-right': '', + 'padding-left': '' + }; if ( this.label ) { this.$element.append( this.$label ); } else { this.$label.detach(); + // Clear old values if present + this.$input.css( newCss ); return; } @@ -10167,7 +10228,9 @@ OO.ui.TextInputWidget.prototype.positionLabel = function () { rtl = this.$element.css( 'direction' ) === 'rtl'; property = after === rtl ? 'padding-left' : 'padding-right'; - this.$input.css( property, this.$label.outerWidth( true ) + ( after ? this.scrollWidth : 0 ) ); + newCss[ property ] = this.$label.outerWidth( true ) + ( after ? this.scrollWidth : 0 ); + // We have to clear the padding on the other side, in case the element direction changed + this.$input.css( newCss ); return this; }; @@ -10653,7 +10716,7 @@ OO.ui.ComboBoxInputWidget.prototype.onInputChange = function ( value ) { var match = this.menu.getItemFromData( value ); this.menu.selectItem( match ); - if ( this.menu.getHighlightedItem() ) { + if ( this.menu.findHighlightedItem() ) { this.menu.highlightItem( match ); } @@ -10701,7 +10764,7 @@ OO.ui.ComboBoxInputWidget.prototype.onMenuChoose = function ( item ) { OO.ui.ComboBoxInputWidget.prototype.onMenuItemsChange = function () { var match = this.menu.getItemFromData( this.getValue() ); this.menu.selectItem( match ); - if ( this.menu.getHighlightedItem() ) { + if ( this.menu.findHighlightedItem() ) { this.menu.highlightItem( match ); } this.$element.toggleClass( 'oo-ui-comboBoxInputWidget-empty', this.menu.isEmpty() ); @@ -10876,6 +10939,8 @@ OO.ui.FieldLayout = function OoUiFieldLayout( fieldWidget, config ) { this.setErrors( config.errors || [] ); this.setNotices( config.notices || [] ); this.setAlignment( config.align ); + // Call this again to take into account the widget's accessKey + this.updateTitle(); }; /* Setup */ @@ -11033,6 +11098,21 @@ OO.ui.FieldLayout.prototype.updateMessages = function () { } }; +/** + * Include information about the widget's accessKey in our title. TitledElement calls this method. + * (This is a bit of a hack.) + * + * @protected + * @param {string} title Tooltip label for 'title' attribute + * @return {string} + */ +OO.ui.FieldLayout.prototype.formatTitleWithAccessKey = function ( title ) { + if ( this.fieldWidget && this.fieldWidget.formatTitleWithAccessKey ) { + return this.fieldWidget.formatTitleWithAccessKey( title ); + } + return title; +}; + /** * ActionFieldLayouts are used with OO.ui.FieldsetLayout. The layout consists of a field-widget, a button, * and an optional label and/or help text. The field-widget (e.g., a {@link OO.ui.TextInputWidget TextInputWidget}), @@ -11168,11 +11248,11 @@ OO.ui.FieldsetLayout = function OoUiFieldsetLayout( config ) { // Mixin constructors OO.ui.mixin.IconElement.call( this, config ); - OO.ui.mixin.LabelElement.call( this, $.extend( {}, config, { $label: $( '
    ' ) } ) ); + OO.ui.mixin.LabelElement.call( this, config ); OO.ui.mixin.GroupElement.call( this, config ); // Properties - this.$header = $( '
    ' ); + this.$header = $( '' ); if ( config.help ) { this.popupButtonWidget = new OO.ui.PopupButtonWidget( { $overlay: config.$overlay, diff --git a/resources/lib/oojs-ui/oojs-ui-core.js.map b/resources/lib/oojs-ui/oojs-ui-core.js.map index 5660288c65..bd84b930c7 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":";;;;;;;;;;AAAA,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACnB;AACA,CAAC,GAAG,CAAC,MAAM,EAAE;;ACFb,GAAG;AACH,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC;AACnE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG;AACX;AACA,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;AACrB;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;AACrB,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACd,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACd,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACd,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;AACZ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;AACV,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;AACX,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AACR,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;AACV,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;AACX,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;AACT,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;AACV,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACR,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;AACZ,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;AACd,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;AACZ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;AACX,CAAC,KAAK,CAAC,CAAC,EAAE;AACV,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK;AACjC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;AACrB,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AACtB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACT,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACX,CAAC,KAAK,CAAC,CAAC,CAAC;AACT,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;AACrB,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACpB;AACA,GAAG;AACH,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO;AACnC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE;AACtB,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACvC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,GAAG;AACnB,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;AACpC,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC;AACpC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;AAC1D,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI;AAC3C,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS;AACzC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAClD,CAAC,GAAG,CAAC,QAAQ,CAAC;AACd,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;AAC1B;AACA,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS;AACtC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC1B,EAAE,MAAM,CAAC,KAAK,CAAC;AACf,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO;AACnC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACR,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AAC3D,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;AACtC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO;AACvC,EAAE,EAAE,OAAO,CAAC,OAAO,GAAG,OAAO,GAAG,MAAM,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACrD,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;AACnD,EAAE,CAAC,CAAC,EAAE,MAAM;AACZ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACN,EAAE,MAAM,CAAC,KAAK,CAAC;AACf,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;AACvE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,CAAC;AAC/D,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI;AACnC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS;AAC9C,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG;AAC9D,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;AAC3D,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,GAAG;AAC3C,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1F,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI;AACtD,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC9F,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,CAAC,CAAC;AACF;AACA,CAAC,MAAM,CAAC,KAAK,CAAC;AACd,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK;AACzB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;AACpD,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,SAAS;AAChD,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK;AAC5E,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC1D,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC1B,EAAE,EAAE,CAAC,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI;AACtD,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,kBAAkB;AAC5C,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,SAAS;AACnC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE;AAC9F;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACnB,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,EAAE;AAC9E,CAAC,CAAC;AACF;AACA,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACzC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AACxB,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACtB,GAAG,MAAM,CAAC,KAAK,CAAC;AAChB,EAAE,CAAC;AACH,CAAC,CAAC,CAAC,EAAE;AACL,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC;AACnB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC;AACtD,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC5F,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE;AAC5F,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC;AACvF,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ;AACrE,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACtC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AACjB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;AACnD,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI;AACnE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ;AAC9F,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK;AACtF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK;AAC9B,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;AACnB;AACA,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ;AACtB,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrB,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE;AACrB,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ;AACvB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,GAAG;AAClC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAClD,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AACpB,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE;AACtB,EAAE,CAAC;AACH,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ;AACrB,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzB,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE;AACzB,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ;AAC3B,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACtB,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE;AACrB,CAAC,CAAC;AACF;AACA,CAAC,MAAM,CAAC,SAAS,CAAC;AAClB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI;AACnD,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ;AACzE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI;AAC/E,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,WAAW,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;AAC/E,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI;AAC9C,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW;AAC9H,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK;AAC5D,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC,GAAG,CAAC,CAAC,CAAC;AACP,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE;AAC9B,CAAC,CAAC;AACF,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACjD,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3G,GAAG,MAAM,CAAC,IAAI,CAAC;AACf,EAAE,CAAC;AACH,CAAC,CAAC;AACF,CAAC,MAAM,CAAC,KAAK,CAAC;AACd,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG;AAC3E,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG;AAC5E,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG;AACxE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC;AACzC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;AACrD,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ;AAC9C,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY;AACvD,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI;AACvD,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,QAAQ;AACxC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC,GAAG,CAAC,OAAO,CAAC;AACb,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACrB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AACrB,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AACpB,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACxB,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AACnB,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACvB,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE;AACjC,IAAI,CAAC;AACL,GAAG,EAAE;AACL,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAChC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE;AAC/B,EAAE,CAAC;AACH,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC3B,GAAG,YAAY,CAAC,CAAC,OAAO,CAAC,EAAE;AAC3B,GAAG,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE;AACvC,EAAE,CAAC;AACH,CAAC,EAAE;AACH,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;AAChD,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,OAAO;AAClC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC9C,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC/D,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO;AACxC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE;AAC1B,CAAC,CAAC;AACF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI;AAC9E,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI;AAC7E,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;AAC5D,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG;AAC5E,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ;AAC3E,CAAC,CAAC,CAAC,SAAS,CAAC;AACb,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ;AAC9C,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,YAAY;AAC/D,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,QAAQ;AACxC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC1C,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;AAC5B,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACf,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACrB,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AAClB,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG;AAC1B,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE;AAC/B,EAAE,EAAE;AACJ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACrB,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG;AAClE,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ;AACtE,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACtE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE;AACjE,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AAClE,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE;AACpD,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AACjB,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AACnB,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzB,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;AAChE,GAAG,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACnE,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG;AACjE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE;AACjE,GAAG,YAAY,CAAC,CAAC,OAAO,CAAC,EAAE;AAC3B,GAAG,GAAG,GAAG;AACT,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC1B,GAAG,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,EAAE;AAC1C,EAAE,CAAC;AACH,CAAC,EAAE;AACH,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO;AACrE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK;AAC3E,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACrC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,GAAG,OAAO,GAAG;AAC7B,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;AACxE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC;AAC1B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI;AACxD,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,QAAQ;AAC9C,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC;AAC7D,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC;AAC1B,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;AACzE,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACtC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,EAAE;AAChD,EAAE;AACF;AACA,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACf,CAAC,GAAG;AACJ,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG;AAC7D,EAAE,CAAC;AACH,EAAE,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ;AAC5F,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC;AACzB,EAAE,CAAC;AACH,EAAE,CAAC,CAAC,CAAC,OAAO;AACZ,EAAE,EAAE;AACJ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACjB,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK;AACpE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AACrD,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK;AAClE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;AACjD,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;AACzD,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE;AAC/C,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK;AAClF,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;AAC9B,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK;AACnF,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE;AAClC,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK;AACrF,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE;AACrC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM;AACjE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE;AACrC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM;AACjE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;AACzC,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW;AAC/C,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE;AACtD,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM;AAClF,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;AAC3C,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM;AAClG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE;AAC3C,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ;AACxF,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE;AAC7C,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM;AAC7D,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE;AACnD,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS;AAC3E,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE;AACrE,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ;AAC3E,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE;AACvD,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM;AACtD,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1D,CAAC,EAAE;AACH;AACA,CAAC,GAAG;AACJ,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC;AAC5B,EAAE,CAAC;AACH,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC;AACtG,EAAE,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC;AACnG,EAAE,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AAClG,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC;AACrD,EAAE,CAAC;AACH,EAAE,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE;AAC7F,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO;AACnG,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;AAC3G,EAAE,CAAC,CAAC,OAAO,CAAC;AACZ,EAAE,CAAC;AACH,EAAE,CAAC,KAAK,CAAC,OAAO;AAChB,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;AAC5B,EAAE,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,GAAG;AAC/C,EAAE,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AACxD,EAAE,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,GAAG;AAC7B,EAAE,CAAC;AACH,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/D,EAAE,CAAC,SAAS,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE;AACjG,EAAE,CAAC,KAAK,CAAC;AACT,EAAE,CAAC;AACH,EAAE,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,CAAC,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvD,EAAE,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC;AAC1F,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AAC1F,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,OAAO;AAC1F,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC;AACjC,EAAE,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;AAC/B,EAAE,CAAC;AACH,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM;AAC7D,EAAE,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;AAC9C,EAAE,CAAC,aAAa,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE;AACjE,EAAE,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;AAC7B,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE;AAChB,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;AAClD,EAAE,CAAC;AACH,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI;AAC/C,EAAE,CAAC,SAAS,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;AACnC,EAAE,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;AAC9C,EAAE,CAAC,aAAa,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE;AACjE,EAAE,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;AAC7B,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE;AAChB,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;AAClD,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE;AACZ,EAAE,CAAC;AACH,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG;AACnC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,UAAU;AACjD,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW;AACnE,EAAE,EAAE;AACJ,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC/B,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE;AAChC,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;AACvD,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY;AAC7B,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;AAC9B,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACrE,GAAG,CAAC,CAAC,EAAE;AACP,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACV,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK;AAC7C,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;AAC7B,EAAE,CAAC;AACH,EAAE,MAAM,CAAC,OAAO,CAAC;AACjB,CAAC,EAAE;AACH,GAAG,CAAC,EAAE;AACN;AACA,GAAG;AACH,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC;AAC3D,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC;AAChG,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG;AAClC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,UAAU;AAChD,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ;AAC9E,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC9B,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AACtB,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACrB,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE;AACxC,CAAC,EAAE;AACH,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;AACrB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;AAC7F,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI;AACjE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO;AACpC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACrC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,EAAE,MAAM,CAAC,GAAG,GAAG;AACf,CAAC,CAAC;AACF,CAAC,MAAM,CAAC,GAAG,CAAC;AACZ,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG;AACtB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;AACpB,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACpC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG;AAC/C,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC;AAC1B;AACA,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAChD,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;AACxD,CAAC,CAAC;AACF;AACA,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AACtB,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE;AACnF,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE;AAC1F,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC;AACpD,CAAC,EAAE;AACH;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,CAAC,CAAC;AACF;AACA,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACnD,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,GAAG,MAAM,CAAC,IAAI,CAAC;AACf,EAAE,CAAC;AACH,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG;AACzB,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,CAAC,CAAC;AACF;AACA,CAAC,MAAM,CAAC,KAAK,CAAC;AACd,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;AAC3C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;AAC7D,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG;AAC7D,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC;AACnC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI;AAC9D,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;AACtD,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM;AAC9C,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC9B,CAAC,MAAM,CAAC,KAAK,CAAC;AACd,EAAE;;AC3gBF,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC;AACnB,CAAC,EAAE;AACH;AACA,GAAG;AACH,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC;AAChC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AACxE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;AAC3E,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW;AACxE,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC;AAC7D,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG;;ACfjB,GAAG;AACH,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,QAAQ;AAC/F,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM;AAC5G,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;AAClD,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,QAAQ;AACZ,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK;AACvG,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC;AAC9G,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC;AACnB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,UAAU;AACvF,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;AACrE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM;AACtC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE;AAC/E,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AAC9E,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;AACjE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE;AACrE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC;AACxF,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE;AAC7G,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;AACxD,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC;AAC7B,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc;AAChC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;AACvB;AACA,CAAC,EAAE,CAAC,UAAU;AACd,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;AACZ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AACvB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AACrB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;AACzB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;AACnC,EAAE,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE;AACnD,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1B;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACvD,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACnB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;AACjC,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACrB,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AACpC,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACxB,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE;AAChE,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK;AACpE,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;AACnC,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5D,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC;AAC3D,IAAI,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE;AACxC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACjD,IAAI,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;AACvB,IAAI,MAAM,CAAC,CAAC,CAAC,QAAQ,GAAG;AACxB,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC7C,IAAI,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC;AACtB,GAAG,CAAC;AACJ,GAAG,MAAM,CAAC,CAAC,CAAC;AACZ,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;AACR,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AACzB,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC;AAC1D,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;AAC1C,CAAC,CAAC;AACF,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE;AAC9B;AACA,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;AACvB;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC;AAChD,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC;AAC3E,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;AACrB,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AACrC;AACA,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;AACpB;AACA,GAAG;AACH,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO;AACrE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC;AAC7B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,QAAQ;AAC9C,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC;AAC7D,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC;AAC1B,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;AACzE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC;AAC/E,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ;AAC/E,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,EAAE;AAChE,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;AACpC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;AACvD,CAAC,EAAE;AACH,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE;AAC/C,CAAC,CAAC;AACF,CAAC,EAAE;AACH,CAAC,MAAM,CAAC,GAAG,CAAC;AACZ,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AACtE,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;AACxE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,QAAQ;AAC9C,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ;AAC7E,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;AACvE,CAAC,CAAC,KAAK,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC;AACtE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC;AAC1B,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACpD,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC;AAC3E,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;AAChB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AAC7C,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACT,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE;AACxB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AAC1B,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACvB,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;AAC/C,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;AAChC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC;AACjC,CAAC,CAAC;AACF,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE;AACrC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACd,EAAE,EAAE,CAAC,MAAM,CAAC;AACZ,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACxB,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;AACnD,EAAE,CAAC;AACH,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACrB,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC;AACpF,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;AACvE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM;AAC9F,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AACrE,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE;AAC3D,GAAG,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACrD,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAChD,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;AAC7E,KAAK,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AACvE,IAAI,CAAC,CAAC,EAAE;AACR,GAAG,CAAC;AACJ,EAAE,CAAC;AACH,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,CAAC,CAAC;AACF,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;AAClC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACf,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;AACrD,CAAC,CAAC;AACF,CAAC,GAAG,CAAC,CAAC;AACN,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE;AAC5B,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChB,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACd,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;AAC3D,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;AACxE,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AAClD,CAAC,CAAC;AACF,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE;AAC7B,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAC1D,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC3B,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM;AACrE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO;AAC3D,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAC1D,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC5B,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AAC9E,EAAE,CAAC;AACH,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ;AACxD,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;AACrB;AACA,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACjC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACnC,GAAG,EAAE,CAAC,IAAI;AACV,GAAG,KAAK,CAAC;AACT,EAAE,CAAC;AACH;AACA,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;AACzB,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAClC,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AAC7E,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9B,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,GAAG;AACrB,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,GAAG;AAC7B,CAAC,CAAC;AACF,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK;AACrD,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ;AAC1B,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG;AACtB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5D,EAAE,GAAG,CAAC,OAAO,CAAC;AACd,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACrB,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,EAAE;AACzE,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE;AACpC,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS;AAC5B,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC1G,IAAI,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE;AAC3D,IAAI,MAAM,CAAC,OAAO,CAAC;AACnB,GAAG,CAAC;AACJ,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACpC,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;AAC/C,GAAG,CAAC;AACJ,EAAE,CAAC;AACH,CAAC,CAAC,CAAC,EAAE;AACL,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG;AAC3C,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AACzD,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC;AAClF,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AAC7D,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM;AAClB,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;AACpC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE;AACvB,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AAC1C,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACb,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC;AACjG,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;AAC1C,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE;AACrC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC;AACxF,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE;AAC9E,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC;AACjG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC;AACzC,EAAE,CAAC;AACH,EAAE,GAAG,CAAC,OAAO,GAAG;AAChB,CAAC,CAAC;AACF,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE;AAC1C,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,eAAe,CAAC,EAAE;AAC/D,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO;AACpE,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE;AACtC,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG;AACpE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AACjE,CAAC,MAAM,CAAC,GAAG,CAAC;AACZ,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;AACtE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI;AAClG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG;AAC9F,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;AACxD,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI;AAC5B,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM;AACzB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;AACnB,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC,MAAM,CAAC,MAAM,CAAC;AACf,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI;AACpG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC;AAC9F,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC;AACvC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI;AAC9F,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,qBAAqB,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO;AAC/F,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE;AAC1C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI;AAC5B,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM;AACzB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;AACnB,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACzD,CAAC,MAAM,CAAC,GAAG;AACX,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACpD,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;AAC1F,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE;AAChG,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM;AACrB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ;AAC3C,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC/B,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;AACxC,CAAC,CAAC;AACF;AACA,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,EAAE;AAC/C;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACjB,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAC5B,CAAC,CAAC;AACF;AACA,CAAC,MAAM,CAAC,OAAO,CAAC;AAChB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC;AAClC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG;AACrF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM;AAC9C,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ;AAC5F,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE;AACjD,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO;AACjD,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE;AAChB,EAAE,EAAE,CAAC,WAAW;AAChB,EAAE,GAAG,CAAC,aAAa,CAAC,EAAE;AACtB,EAAE,EAAE,CAAC,MAAM;AACX,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE;AACjB,EAAE,EAAE,CAAC,YAAY;AACjB,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AACnD,EAAE,IAAI,CAAC;AACP,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC;AAC5C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG;AACpF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM;AACjC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACnD,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,EAAE;AACnC,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC;AACxB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC;AAC/C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG;AACvF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC;AACzD,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;AAClB;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC/B,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;AACjB,CAAC,CAAC;AACF,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC;AAC7C,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC;AACpC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACxB,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAChB,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;AACtB,EAAE,CAAC;AACH,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;AACjB,CAAC,CAAC;AACF,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE;AACpC,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;AACrC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC;AAC9C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK;AACjD,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK;AACzD,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU;AACjE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU;AACrE,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACrE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;AACjC;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACb,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;AACd,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACjB,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AAC/B,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC9B,EAAE,MAAM,CAAC,MAAM,CAAC;AAChB,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO;AACtB,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE;AAChE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACnD,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7C,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AACvB,GAAG,KAAK,CAAC;AACT,EAAE,CAAC;AACH,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM;AACxC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACf,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,qBAAqB,GAAG;AACvC,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3B,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;AACzB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACtB,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,EAAE;AAC9C,EAAE,CAAC;AACH,CAAC,CAAC;AACF,CAAC,MAAM,CAAC,MAAM,CAAC;AACf,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;AACvC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI;AAC/F,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;AAC3C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG;AACzD,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AACzE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU;AACvF,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC3E,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC;AACvB,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG;AAC1B,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG;AAC/B,EAAE,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE;AACjD,EAAE,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE;AAC/C;AACA,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,EAAE;AAClE,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AAC/C,EAAE,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC,YAAY,CAAC;AACpD,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAClB,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;AACzE,EAAE,CAAC;AACH,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG;AACnC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC;AAC7B,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC;AAC3B,EAAE,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;AACzC,CAAC,CAAC;AACF,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC;AAC5B,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC;AAC1B,CAAC,MAAM,CAAC,GAAG,CAAC;AACZ,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;AAC5B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO;AAC7C,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU;AACzF,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACnD,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC;AAC5B,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC;AACxB,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE;AAC3C,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAChB,EAAE,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACtF,EAAE,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzF,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/F,EAAE,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5F;AACA,CAAC,MAAM,CAAC,CAAC;AACT,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC;AACX,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC;AACb,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC;AACjB,EAAE,KAAK,CAAC,CAAC,KAAK;AACd,CAAC,EAAE;AACH,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC;AAC1C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO;AACpD,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU;AACjG,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;AACf,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC;AACxC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC;AACxB;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;AAClD,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE;AAClB,EAAE,MAAM,CAAC,CAAC;AACV,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AACrD,GAAG,MAAM,CAAC,CAAC,CAAC;AACZ,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,GAAG;AAC1B,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE;AAC3B,GAAG,EAAE;AACL,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AACtC,GAAG,IAAI,CAAC,CAAC,CAAC;AACV,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;AACX,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;AACZ,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,GAAG;AAC/B,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE;AAC5B,GAAG,CAAC;AACJ,EAAE,EAAE;AACJ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACT,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAChB,EAAE,MAAM,CAAC,CAAC;AACV,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE;AAClC,GAAG,MAAM,CAAC,CAAC,CAAC;AACZ,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,GAAG;AACzB,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE;AAC1B,GAAG,EAAE;AACL,GAAG,SAAS,CAAC,CAAC,CAAC;AACf,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC;AAC7C,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY;AAC/C,GAAG,EAAE;AACL,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,qBAAqB,EAAE;AACnC,EAAE,EAAE;AACJ,CAAC,CAAC;AACF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;AAC9E,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE;AACnE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC;AAC3E,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;AACvF,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU;AACvF,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;AACvD,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO;AACpD,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;AAClD,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;AACtG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE;AAC9E,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;AACtG,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE;AAC/E,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACpD,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1B;AACA,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;AAClB,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;AACpJ,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;AAC3B;AACA,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;AAC9B,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM;AACpB,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;AAC7B,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACV,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK;AACzB,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;AAC/B,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;AACX,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI;AAC9B,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;AAC9B,GAAG,CAAC;AACJ,EAAE,CAAC;AACH,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG;AACpB,CAAC,CAAC;AACF;AACA,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACtC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AAClC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;AACnC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,eAAe,CAAC;AAC5C,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC;AAClE,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACjF,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO;AACpD,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE;AAC3D;AACA,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,GAAG,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClC,IAAI,IAAI,GAAG;AACX,GAAG,CAAC;AACJ,GAAG,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;AAC7B,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,IAAI,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC;AAC9D,GAAG,CAAC;AACJ,EAAE,CAAC;AACH;AACA,EAAE,MAAM,CAAC,UAAU,CAAC;AACpB,CAAC,EAAE;AACH,GAAG,CAAC,EAAE;AACN;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC/D,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG;AAChG,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK;AACjG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;AACpE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM;AAC7D,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG;AACrE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC;AACzF,CAAC,CAAC,KAAK,SAAS,CAAC,EAAE,CAAC,OAAO;AAC3B,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACjE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC;AACrB;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC/C,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC;AAC/B,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;AAC7B,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACrB;AACA,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE;AACjE,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AAC9E,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9B,GAAG,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AACpC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACV,GAAG,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE;AAC/C,EAAE,CAAC;AACH,CAAC,CAAC;AACF;AACA,CAAC,MAAM,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,EAAE;AACpD,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC;AACpC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI;AAChG,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,wBAAwB,EAAE;AACvE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG;AACnE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM;AAC9F,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS;AACrD,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,6BAA6B,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACjF,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACZ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG;AAC5F,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC;AACrF,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;AACzC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG;AAC7B;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE;AACtC,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,KAAK;AACjG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC;AAC/F,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,EAAE,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,EAAE,CAAC,EAAE;AAC7C,CAAC,CAAC;AACF;AACA,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC3B,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/D,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AACvB,EAAE,CAAC;AACH,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;AACnB,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACjB,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACnC,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAC9F,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG;AACjG,GAAG,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM;AAC1F,GAAG,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC;AACjG,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG;AACtC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,IAAI,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AACxB,GAAG,CAAC;AACJ,EAAE,CAAC;AACH,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG;AAC7B,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI;AAC7D,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,EAAE,CAAC,EAAE;AAC5C,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AAC5B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI;AACtD,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK;AAC3E,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI;AACzF,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU;AAChC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ;AAC9E,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC/D,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC;AAClG,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,GAAG;AAC1B;AACA,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc;AAChC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;AACvB;AACA,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG;AACjB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;AACxE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE;AAC7B,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE;AAC9C,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,EAAE;AACvD,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACrC;AACA,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS;AAC5D,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI;AAC1D,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;AACd,GAAG,GAAG,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC;AACnC,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC;AACjE,GAAG,IAAI,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;AACrC,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK;AAC7D,EAAE,EAAE;AACJ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACT,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW;AACjF,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;AACd,GAAG,GAAG,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;AACxG,GAAG,MAAM,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC;AACvJ,GAAG,IAAI,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AAC5G,GAAG,KAAK,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,mBAAmB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK;AACjJ,EAAE,EAAE;AACJ,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3B,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;AACxE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACtG,EAAE,CAAC;AACH,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC3E,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACxG,EAAE,CAAC;AACH,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;AAC1G,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACvC,GAAG,QAAQ,CAAC,OAAO,GAAG;AACtB,GAAG,IAAI,GAAG;AACV,EAAE,CAAC,CAAC,EAAE;AACN,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACT,EAAE,QAAQ,CAAC,OAAO,GAAG;AACrB,CAAC,CAAC;AACF,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,GAAG;AAC3B,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO;AAClG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3D,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,IAAI;AAClG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI;AAClG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;AACpG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AACzC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;AAClE,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7D,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG;AAC/C,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ;AACxB,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC;AAC5B,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC;AAC1B,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ;AACvB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAC1B,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE;AAC9B,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE;AAClC,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM;AAChB,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC;AACtB,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ;AACzB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAClD,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC/B,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;AAC7D,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;AAC5B,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1B,EAAE;AACF;AACA,EAAE,CAAC,OAAO,CAAC,EAAE;AACb;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC;AACnC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU;AAC1E,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO;AACjB,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;AACpD;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;AACnC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AACtB,EAAE,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AACrE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAC9B,CAAC,CAAC;AACF;AACA,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC;AAC/B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO;AACvC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACjD,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;AACrB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;AACpB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI;AAC/B,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC/C,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AAClB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;AACpB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI;AACnC,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAClB,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC;AACzC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE;AACrB,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;AACrB,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE;AAChC,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;AAChG,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AACxB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;AACnB,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACpD,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC,EAAE;AACjD,CAAC,CAAC;AACF,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;AACvB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;AACjD,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK;AACtE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS;AAC9C,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACZ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACd;AACA,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE;AAC5D,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACpD,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,GAAG,OAAO,GAAG;AACb,EAAE,CAAC;AACH,CAAC,CAAC;AACF;AACA,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;AACnC,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;AACrC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;AACxF,CAAC,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG;AACnF,CAAC,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW;AACjF,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC1D,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC,IAAI,CAAC,EAAE;AAC/C,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;AACzB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;AACnE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI;AACjC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAClD,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC;AACxC,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG;AAC9C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG;AACvD,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACzD,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,kBAAkB,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACpE,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC;AACxB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,MAAM;AACzC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC1D,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO;AAC3F,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;AAC1D,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC;AACtB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM;AACjC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACxD,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;AACxD,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC;AACpC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS;AACrD,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,oCAAoC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC5E,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,6BAA6B,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACjF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;AAC3B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI;AACtE,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACvD,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;AAC1B,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;AAC3B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI;AAC3E,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9D,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC;AAC3B,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AAC5B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ;AAC9E,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACrE,CAAC,EAAE,CAAC,CAAC;AACL,EAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,EAAE;AAC9B,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE;AACtB,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,GAAG,SAAS,EAAE,CAAC,CAAC;AACnE,CAAC,CAAC,CAAC,CAAC;AACJ,EAAE,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG;AAChC,CAAC,CAAC;AACF,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;AAC1E,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;AAC1D,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM;AAChG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,oBAAoB,CAAC;AAClC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK;AACxB,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC7D,EAAE;;ACh9BF,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO;AACxE,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM;AACtE,CAAC,CAAC,CAAC,MAAM,CAAC;AACV,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO;AACzC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC,EAAE,CAAC,UAAU;AACd,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;AACxB,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE;AAClC;AACA,EAAE,CAAC,OAAO,CAAC,EAAE;AACb;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AACpB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC;AAC3C,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACpD,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;AACrB,EAAE;;AC5BF,GAAG;AACH,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG;AACvG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;AAC1G,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE;AAC/H,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE;AACrH,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC;AACpI,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,QAAQ;AACZ,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO;AACzB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY;AAC1B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC9C,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc;AAChC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;AACvB;AACA,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AAC1C;AACA,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY;AACtB,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;AAC9B;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE;AAC1C,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE;AAC/C,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE;;AChC/C,GAAG;AACH,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI;AACpF,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;AACpF,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;AAC/D,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,QAAQ;AACZ,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO;AACzB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY;AAC1B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK;AAChG,CAAC,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AACnC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC9C,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM;AACrB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;AAClD;AACA,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AAC1C;AACA,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY;AACtB,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;AAC9B;AACA,CAAC,EAAE,CAAC,UAAU;AACd,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;AACtB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;AACzB;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE;AAC1C,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE;AACvC,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE;AAC/C,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE;AAC/C;AACA,EAAE,CAAC,MAAM,CAAC,EAAE;AACZ;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO;AACjB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO;AAC7E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE;AACpC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ;AAC/C,CAAC,EAAE;AACH;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM;AAChB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC;AACzE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO;AAC7C,CAAC,EAAE;AACH;AACA,EAAE,CAAC,OAAO,CAAC,EAAE;AACb;AACA,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC;AACnC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ;AACvC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACjD,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;AACtB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC;AAC1C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;AACpG,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM;AAC3C,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC5D,CAAC,GAAG,CAAC,UAAU,CAAC;AAChB;AACA,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC;AAC5B,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG;AAChC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACzC,EAAE,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE;AACnE,EAAE,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE;AACnE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,EAAE;AAC/D,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE;AACrC,EAAE,IAAI,CAAC,kBAAkB,GAAG;AAC5B,CAAC,CAAC;AACF,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC;AAC/B;AACA,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;AAClE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACrD,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AACnC,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,EAAE;AACnG,CAAC,CAAC,CAAC,KAAK,CAAC;AACT,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,kBAAkB,CAAC,MAAM;AAChG,CAAC,CAAC,CAAC,OAAO,CAAC;AACX,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO;AACxD,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACjD,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;AAC/F,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;AACpG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC;AAClE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC;AACnG,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC;AAC1C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM;AAC5F,CAAC,CAAC,CAAC,QAAQ,CAAC;AACZ,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACzD,EAAE;;ACjIF,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;AACf,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,QAAQ;AACZ,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;AACpC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG;AAC/B,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,EAAE;AAC9F,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE;AAC5B;AACA,EAAE,CAAC,OAAO,CAAC,EAAE;AACb;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;AACnD,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;AACjG,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;AACtD,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO;AAClE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK;AACvF,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACvD,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE;AAC5B,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;AAC5C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;AAC9F,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO;AACrE,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACzB,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,EAAE;AAC9C;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AACvB,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE;AAC7C,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AAC5B,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE;AAClD,CAAC,CAAC;AACF;AACA,CAAC,CAAC,QAAQ;AACV,EAAE,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,EAAE,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACtC,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAChE,CAAC,GAAG,CAAC,CAAC,CAAC;AACP,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1D,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC7D,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK;AACnB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG;AAC/B,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;AAC7D,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,yBAAyB,CAAC;AAC1F,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;AAC9B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO;AACrE,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACjG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE;AACvF,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,EAAE,MAAM,CAAC;AACT,CAAC,CAAC;AACF,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE;AAC1C,CAAC,IAAI,CAAC,mCAAmC,GAAG;AAC5C,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO;AAC1E,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG;AACvE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC9B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,YAAY;AACvD,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACjE,CAAC,MAAM,CAAC,CAAC,CAAC;AACV,EAAE;;AC/FF,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE;AAC/F,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG;AAClG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;AACvF,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,CAAC,OAAO;AACf,CAAC,CAAC,KAAK,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK;AAChE,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACzC,CAAC,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;AAC9C,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE;AAC3B,CAAC,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC;AACtB,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;AAC9C,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE;AAC3B,CAAC,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC;AACtB,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;AAC9C,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE;AAC1B,CAAC,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC;AACtB,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;AAC9C,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE;AAC1B,CAAC,CAAC,SAAS,QAAQ,CAAC,CAAC,CAAC;AACtB,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE;AACpG,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,QAAQ;AACZ,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC;AAClG,CAAC,CAAC,EAAE,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,QAAQ;AAClI,CAAC,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC;AAChD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU;AAC5G,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACtG,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;AACvD,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,0BAA0B,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC/E,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc;AAChC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;AAC9C;AACA,CAAC,EAAE,CAAC,UAAU;AACd,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;AACzB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;AACtB;AACA,CAAC,EAAE,CAAC,MAAM;AACV,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,EAAE;AACjE;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;AACrC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;AAClE,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE;AAC9C;AACA,EAAE,CAAC,OAAO,CAAC,EAAE;AACb;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC;AAC9D,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO;AACrF,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC5F,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;AACtE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,aAAa;AACjF,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACzF,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC9B,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU;AAC1C,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE;AAC1B,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,UAAU;AACnC,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;AAChC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC1B,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,GAAG;AAC9B,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC;AACjC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ;AACjF,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC7E,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACnE;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACpC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC3B,EAAE,IAAI,CAAC,cAAc,GAAG;AACxB,CAAC,CAAC;AACF;AACA,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AACtE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;AAClB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACtE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;AAC1B,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ;AACzC,GAAG,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3B,IAAI,QAAQ,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;AACrD,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI;AAClC,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ;AACtE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,UAAU,GAAG,QAAQ,EAAE;AACjD,GAAG,CAAC,CAAC,EAAE;AACP,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACV,GAAG,IAAI,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE;AAC3D,EAAE,CAAC;AACH,CAAC,CAAC;AACF,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;AACzB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ;AAChD,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAClF,CAAC,IAAI,CAAC,cAAc,GAAG;AACvB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC;AACjC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK;AACvC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACnE,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;AACtB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC;AAC/F,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;AACjF,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC/C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO;AACxD,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAClE,CAAC,GAAG,CAAC,EAAE,CAAC;AACR;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;AAC3B,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AACpC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC1B,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,GAAG;AACjC,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE;AACpC,CAAC,CAAC;AACF;AACA,CAAC,MAAM,CAAC,EAAE,CAAC;AACX,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI;AAC7D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,QAAQ;AACzE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;AAC3E,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;AACxB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;AACpB,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC9E,CAAC,GAAG;AACJ,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AACpF,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,WAAW,GAAG;AAClD;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAClE,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,CAAC,CAAC;AACF,CAAC,MAAM,CAAC,KAAK,CAAC;AACd,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;AACtB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC7D,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5B,EAAE,IAAI,EAAE,UAAU,CAAC,KAAK,GAAG;AAC3B,CAAC,CAAC;AACF,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;AACrB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC5D,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,GAAG;AACzB,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM;AAC3B,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC1E,CAAC,IAAI,CAAC,KAAK,GAAG;AACd,EAAE;;ACzNF,GAAG;AACH,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;AAC7F,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC;AAC/E,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;AACjE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,OAAO;AACnF,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,QAAQ;AACZ,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;AACnE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG;AACpF,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;AAC9D,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc;AAChC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;AACvB;AACA,CAAC,EAAE,CAAC,UAAU;AACd,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACrB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACpB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;AAC5D,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;AACrD,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;AACzD,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;AACrD,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;AACjD,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;AACjD,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;AACvD;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE;AACjD,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;AACnE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACvD,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE;AAC1C;AACA,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;AACvB;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;AAC5B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC;AACxG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,kBAAkB,CAAC,kBAAkB,CAAC;AAChI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACxG,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;AACjB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;AACtB,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC,CAAC,IAAI,CAAC;AACpE;AACA,EAAE,CAAC,MAAM,CAAC,EAAE;AACZ;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC;AACjE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK;AACf,CAAC,EAAE;AACH;AACA,EAAE,CAAC,OAAO,CAAC,EAAE;AACb;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC;AAC1B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE;AACtF,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO;AAC5F,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;AAC7E,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM;AACnD,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC7E,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AACtB,EAAE,IAAI,EAAE,MAAM;AACd,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;AAC/C,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AAClC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACV,IAAI,SAAS,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC;AACvC,IAAI,OAAO,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC;AACnC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;AAC/B,IAAI,QAAQ,CAAC,CAAC,IAAI,CAAC,iBAAiB;AACpC,GAAG,CAAC,CAAC,EAAE;AACP,CAAC,CAAC;AACF;AACA,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM;AACvB,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;AAC3C,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACR,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC;AACtC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC;AAClC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;AAC9B,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,iBAAiB;AACnC,EAAE,CAAC,CAAC,EAAE;AACN;AACA,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM;AAC5D,CAAC,EAAE,CAAC,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS;AAChD,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE;AACxC,CAAC,CAAC;AACF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;AAC7B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK;AAC3C,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClE,EAAE,MAAM,CAAC;AACT,CAAC,CAAC;AACF,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,EAAE;AACzD,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG;AAC7F,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK;AACrC,CAAC,IAAI,CAAC,kBAAkB,GAAG,gBAAgB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,EAAE;AACtF,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS;AACpE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC;AAC7D,EAAE,MAAM,CAAC,KAAK,CAAC;AACf,CAAC,CAAC;AACF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC;AAC3B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK;AACvC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClE,EAAE,MAAM,CAAC;AACT,CAAC,CAAC;AACF,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,EAAE;AAC5D,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI;AAC9D,CAAC,IAAI,CAAC,kBAAkB,GAAG,mBAAmB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,EAAE;AACzF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;AAC9B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AAC5C,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK;AACf,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACnE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,GAAG,MAAM,CAAC,KAAK,CAAC;AAChB,EAAE,CAAC;AACH,CAAC,CAAC;AACF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;AAC3B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK;AACzC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/F,EAAE,MAAM,CAAC;AACT,CAAC,CAAC;AACF,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,EAAE;AACzD,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG;AACzF,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK;AACrC,CAAC,IAAI,CAAC,kBAAkB,GAAG,gBAAgB,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,EAAE;AAClF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC;AACzB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK;AACxC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/F,EAAE,MAAM,CAAC;AACT,CAAC,CAAC;AACF,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,EAAE;AAC5D,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI;AAC5D,CAAC,IAAI,CAAC,kBAAkB,GAAG,mBAAmB,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,EAAE;AACrF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;AAC5B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK;AAC1C,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK;AACf,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChG,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,GAAG,MAAM,CAAC,KAAK,CAAC;AAChB,EAAE,CAAC;AACH,CAAC,CAAC;AACF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;AAC/B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM;AACrC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC5D,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AACpB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;AAChH,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM;AAC/D,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC;AACzD,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAChC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;AACvB,EAAE,IAAI,EAAE,OAAO;AACf,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;AAC3D,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE;AACxD,EAAE,IAAI,CAAC,kBAAkB,GAAG;AAC5B,CAAC,CAAC;AACF;AACA,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;AACjC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;AAClC,CAAC,CAAC;AACF,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ;AAC7E,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;AAC9E,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI;AAClG,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM;AAC5C,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;AACvB,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AACxE,CAAC,IAAI,CAAC,kBAAkB,GAAG;AAC3B,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM;AAChC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM;AACzC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC5D,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AACpB,EAAE;;ACjQF,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE;AAChG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,QAAQ;AAC5F,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC;AACzE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;AACjF,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM;AAC9D,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,QAAQ;AACZ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW;AACzB,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa;AAC3F,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,GAAG,GAAG;AAC/D,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACrE,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc;AAChC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;AACvB;AACA,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY;AACtB,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AACrC;AACA,CAAC,EAAE,CAAC,UAAU;AACd,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACpB;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE;AACvD,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE;AAC1D;AACA,EAAE,CAAC,MAAM,CAAC,EAAE;AACZ;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM;AAChB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;AACpE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK;AAC9D,CAAC,EAAE;AACH;AACA,EAAE,CAAC,OAAO,CAAC,EAAE;AACb;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC;AACzB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC;AACxE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK;AACjD,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1E,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACZ;AACA,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACtB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvD,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,EAAE;AACjD,CAAC,CAAC;AACF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;AAC3B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;AACzF,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC;AACpC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG;AAC/C,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM;AAChF,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AAClB,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE;AAC5B;AACA,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvD,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AACzB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,GAAG,MAAM,CAAC,IAAI,CAAC;AACf,EAAE,CAAC;AACH,CAAC,CAAC;AACF;AACA,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;AAC3B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC;AAC1H,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG;AAC/C,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI;AACvD,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACzE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AAClB,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE;AAC5B,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG;AACb;AACA,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvD,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AACzB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;AACtB,EAAE,CAAC;AACH,CAAC,CAAC;AACF;AACA,CAAC,MAAM,CAAC,KAAK,CAAC;AACd,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;AAC1B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,SAAS;AACpG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE;AACnI,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK;AACvE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK;AACvD,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACzE,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM;AAChB,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE;AAC9D;AACA,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE;AACxC,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC5E,CAAC,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK;AACjG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE;AAC5C;AACA,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM;AAChB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE;AAC5E;AACA,CAAC,MAAM,CAAC,QAAQ,CAAC;AACjB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1E,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,EAAE;AAC9B,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE;AACxC;AACA,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM;AAChB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE;AACvE;AACA,CAAC,MAAM,CAAC,KAAK,CAAC;AACd,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK;AACjC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM;AACnD,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK;AACxC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACxF,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACxE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE;AAC5C,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE;AAC7C,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACT,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE;AAC7D,CAAC,CAAC;AACF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;AAC3C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC;AACpF,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC;AACxF,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM;AAC7D,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACrE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;AACzB;AACA,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ;AAClC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAClD,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AACpB,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE;AACrC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvB,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,EAAE;AAChC,GAAG,IAAI,EAAE,OAAO,CAAC,MAAM,GAAG;AAC1B,EAAE,CAAC;AACH,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM;AAChB,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE;AAC1D;AACA,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE;AACxC,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AAClC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC;AACpF,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC;AAC9E,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC7D,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACZ;AACA,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ;AAC5B,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvD,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,IAAI,CAAC,EAAE;AAC1C,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG;AACpC,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM;AAChB,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;AAClD;AACA,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE;AACxC,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;;AC7NF,GAAG;AACH,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC;AACrE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI;AACnF,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG;AACnF,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK;AAC/D,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC;AAC3B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK;AAC1F,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,QAAQ;AACZ,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,CAAC;AACjG,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI;AACnG,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;AACjG,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;AAChD,CAAC,CAAC;AACF,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9C,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,GAAG;AACxB,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK;AAChF,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,OAAO;AAC3B,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM;AACjD,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO;AACvC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AACvG,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI;AAClF,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK;AACtG,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC3B,CAAC,CAAC;AACF,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;AAC3B,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC;AACjG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK;AAC1F,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK;AAC5G,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;AAC9E,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc;AAChC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;AACvB;AACA,CAAC,EAAE,CAAC,UAAU;AACd,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACnB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAClB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AACvB;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AAC7D,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;AAC5E,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;AACtD,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;AACxC;AACA,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;AACvB;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI;AACtG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;AACrF,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC1F,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1B,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC;AACnF,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;AAC5B,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3C;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9F,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC;AAC5D,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC;AAClF,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;AACnC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AAChD;AACA,EAAE,CAAC,OAAO,CAAC,EAAE;AACb;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa;AAChG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI;AAC5F,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO;AAC/F,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;AACvD,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI;AAC/C,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,EAAE,IAAI;AACZ,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AAC1B,CAAC,CAAC;AACF;AACA,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;AACnB,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AACvC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;AACzD,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;AAC7C,CAAC,CAAC;AACF;AACA,CAAC,IAAI,CAAC,kBAAkB,GAAG;AAC3B,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC;AACtF,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO;AAC1F,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC;AAClB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK;AACjG,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACnD,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/D,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACvF,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5E;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5B,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AACrB,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC9B,IAAI,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACxD,GAAG,CAAC;AACJ,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACzB,IAAI,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;AAChD,GAAG,CAAC;AACJ,EAAE,CAAC;AACH,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACnB,CAAC,CAAC;AACF;AACA,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;AAC/D,CAAC,IAAI,CAAC,kBAAkB,GAAG;AAC3B;AACA,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AACtD,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;AAChF,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC;AAC/D,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACzE,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AAC/C,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACzD,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACxC;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACtC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7B,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AACrB,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACnC,IAAI,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,EAAE;AAC1C,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;AACX,IAAI,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACrC,GAAG,CAAC;AACJ,EAAE,CAAC;AACH,CAAC,CAAC;AACF;AACA,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;AACrC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI;AAC7B,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACzD,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AAClB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;AAC7F,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI;AACnC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC9D,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;AACvB,EAAE;;AC5LF,GAAG;AACH,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,CAAC;AAC/E,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;AACrE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;AACnF,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC;AAC7E,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM;AACnF,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE;AAC9E,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG;AACnE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;AAC5C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,UAAU;AAC/F,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,QAAQ;AACZ,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI;AACjF,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,IAAI,GAAG;AAClF,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG;AACvF,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ;AACrF,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC;AACnB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,UAAU;AAC/F,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC;AACrF,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI;AAC3F,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;AACjC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC7E,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc;AAChC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;AACvB;AACA,CAAC,EAAE,CAAC,UAAU;AACd,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AACxB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AACvB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5B;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;AAC5E,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE;AAC3F,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;AAChE,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE;AAC7C;AACA,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;AACvB;AACA,GAAG;AACH,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG;AAC7D,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC;AAClF,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;AAC1B,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AACrD;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC;AAC3F,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC;AACrG,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;AACnC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1D;AACA,EAAE,CAAC,OAAO,CAAC,EAAE;AACb;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC;AAC7B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC;AACzF,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS;AACzD,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACtF,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AACzB,EAAE,IAAI,EAAE,SAAS;AACjB,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACvF,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AAC1B,CAAC,CAAC;AACF;AACA,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;AAC7B,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;AACjD,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE;AACxE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACtC,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;AACvD,CAAC,CAAC;AACF;AACA,CAAC,IAAI,CAAC,kBAAkB,GAAG;AAC3B,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;AACrI,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS;AACxF,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC9E,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACzF;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACtC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AAC1B,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACnC,IAAI,IAAI,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;AACvE,GAAG,CAAC;AACJ,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC9B,IAAI,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE;AAC/D,GAAG,CAAC;AACJ,EAAE,CAAC;AACH,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7B,CAAC,CAAC;AACF;AACA,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE;AACzE,CAAC,IAAI,CAAC,kBAAkB,GAAG;AAC3B;AACA,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC;AAC3B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;AACzE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE;AACtG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK;AAClC,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AACxF,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AACzD,EAAE,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACnE,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7C;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AAChD,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC;AACvC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AAC1B,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACxC,IAAI,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,cAAc,CAAC,EAAE;AACpD,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;AACX,IAAI,IAAI,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AAC1C,GAAG,CAAC;AACJ,EAAE,CAAC;AACH,CAAC,CAAC;AACF;AACA,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG;AACrE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS;AAC9C,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACnE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;AACvB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC;AAC3B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;AACzE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI;AACxC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACxE,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC;AAC5B,EAAE;;ACzKF,GAAG;AACH,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK;AAC5E,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC;AACvD,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;AACzE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM;AAC3F,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,QAAQ;AACZ,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI;AACzE,CAAC,CAAC,EAAE,aAAa,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,IAAI,GAAG;AAC9E,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS;AACrG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;AACnG,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;AACjF,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM;AAC5F,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACrE,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc;AAChC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;AACvB;AACA,CAAC,EAAE,CAAC,UAAU;AACd,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACpB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACnB;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AAChE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;AACxD,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;AACzC;AACA,EAAE,CAAC,MAAM,CAAC,EAAE;AACZ;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW;AACrB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK;AACxB,CAAC,EAAE;AACH;AACA,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;AACvB;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI;AACzF,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI;AAChF,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;AACvE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;AACnC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7C;AACA,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;AACpB;AACA,GAAG;AACH,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI;AAChE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI;AAC5B,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI;AACtC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK;AAC1D,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI;AAC1C,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC3E,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;AAC7B,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE;AAC7D;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;AAC9B,CAAC,CAAC;AACF,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;AAChB,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;AACrD,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AACf,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;AACpD,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;AACxD,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC,EAAE;AACH,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,QAAQ,GAAG;AAC3B,EAAE;AACF;AACA,EAAE,CAAC,OAAO,CAAC,EAAE;AACb;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC;AACzB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC;AACzF,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK;AACjD,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1E,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AACrB,EAAE,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG;AAChE,CAAC,CAAC;AACF;AACA,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE;AAC7D,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACpC,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;AACjB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI;AAClG,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,GAAG;AACrC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACnH,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK;AAC9B,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACzE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1K;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9B,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AACtB,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,EAAE;AACjC,EAAE,CAAC;AACH,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AACrB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE;AAC7B,CAAC,CAAC;AACF;AACA,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;AACjE;AACA,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK;AACvD,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG;AACzC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS;AACvD,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnF,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAC/E,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;AACjB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC5F,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK;AAC9B,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC3D,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AACnB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;AAChC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC;AAC1F,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACjG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK;AAC9B,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACzE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC,GAAG,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK;AACnE,GAAG,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;AAChC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACV,GAAG,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE;AAC7B,EAAE,CAAC;AACH,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACnD,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAE;AACvC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACxC,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE;AACtC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACT,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,GAAG;AACtB,CAAC,CAAC;AACF,EAAE;;AC7KF,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG;AACjF,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ;AACtF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;AAChF,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG;AACnF,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC;AAChC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;AAC9E,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,GAAG,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;AACxH,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;AACrG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;AACvG,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC;AAClD,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,CAAC,OAAO;AACf,CAAC,CAAC,KAAK,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK;AAC5E,CAAC,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;AAC9C,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,YAAY,EAAE;AACjC,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC;AAChC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;AAC9C,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,WAAW,EAAE;AAChC,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC;AAC/B,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;AAC9C,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,WAAW,EAAE;AAChC,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC;AAC/B,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE;AAClF,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG;AAClJ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;AAChF,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO;AAC/D,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,QAAQ;AACZ,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;AAC9G,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC;AACvG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO;AAChE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC;AAC5D,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE;AACxF,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC;AACjG,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACzE,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc;AAChC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;AACvB;AACA,CAAC,EAAE,CAAC,UAAU;AACd,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG;AACjB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AACtB;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AAC/B,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;AAC5D,EAAE;AACF;AACA,EAAE,CAAC,MAAM,CAAC,EAAE;AACZ;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI;AACd,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;AAC5F,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG;AACjF,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC;AACpB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS;AACjG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;AAC9D,CAAC,EAAE;AACH;AACA,EAAE,CAAC,OAAO,CAAC,EAAE;AACb;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC;AAC3B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC;AAC9G,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;AAC3F,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO;AAC1D,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAChF,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpE,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACxC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACjB;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AACvB,EAAE,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,EAAE;AAC1C,CAAC,CAAC;AACF;AACA,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,EAAE;AACjD,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC;AACtC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI;AACpC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG;AACpC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG;AAC5E,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAC7C,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;AAClC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK;AAChC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC7D,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG;AAC5E,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACxC,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;AACnB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC/D,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC;AACrB,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG;AACf,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG;AACd,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,GAAG;AACxC;AACA,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC7B,EAAE,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;AACjC,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC1B,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE;AAC5B,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE;AAC3B,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AACvB,EAAE,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAClD,CAAC,CAAC;AACF;AACA,CAAC,IAAI,CAAC,kBAAkB,GAAG;AAC3B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE;AAC9B;AACA,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;AACzB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;AAC/F,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM;AAC/F,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,GAAG;AAC3C,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC;AAC7B,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG;AACf,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG;AACX,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG;AACd,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,GAAG;AACxC;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,EAAE,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC;AAClC,EAAE,EAAE,CAAC,GAAG;AACR,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9B,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE;AACzB,EAAE,CAAC;AACH,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACnD,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AACrB,GAAG,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;AAClC,GAAG,EAAE,CAAC,GAAG;AACT,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,IAAI,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3B,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9B,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE;AAC1B,GAAG,CAAC;AACJ,EAAE,CAAC;AACH,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACzB,GAAG,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;AAClC,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzB,IAAI,EAAE,CAAC,GAAG;AACV,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5B,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/B,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE;AAC3B,IAAI,CAAC;AACL,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;AACX,IAAI,EAAE,CAAC,MAAM;AACb,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC7B,KAAK,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE;AAC/B,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE;AAC9B,IAAI,CAAC;AACL,GAAG,CAAC;AACJ,EAAE,CAAC;AACH,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AACvB,EAAE,IAAI,EAAE,OAAO;AACf,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,GAAG,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACtC,CAAC,CAAC;AACF;AACA,CAAC,IAAI,CAAC,kBAAkB,GAAG;AAC3B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE;AAC9B;AACA,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;;AClNF,GAAG;AACH,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC;AAC5E,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK;AAC9E,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;AACvE,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,CAAC,OAAO;AACf,CAAC,CAAC,KAAK,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG;AAC3D,CAAC,CAAC,KAAK,EAAE,CAAC,YAAY,CAAC,KAAK;AAC5B,CAAC,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;AAC7C,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE;AACtC,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;AACjC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;AAC7C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,QAAQ;AACZ,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC;AACjF,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG;AAClF,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;AACjC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE;AACpF,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC;AACjG,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc;AAChC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;AACvB;AACA,CAAC,EAAE,CAAC,UAAU;AACd,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACrB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACnB;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AAC5F,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;AAC1D,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE;AAC1C;AACA,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;AACvB;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ;AACzG,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC;AACrD,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;AACnC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9C;AACA,EAAE,CAAC,OAAO,CAAC,EAAE;AACb;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC;AAC1B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC;AACpH,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;AAChH,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa;AAC7E,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC7E,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AACtB,EAAE,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACrC,CAAC,CAAC;AACF;AACA,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACxB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAC3C,CAAC,CAAC;AACF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;AACb,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK;AACvG,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACzE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACtE;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9B,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AACvB,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC1B,IAAI,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE;AACxC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;AACX,IAAI,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACvC,GAAG,CAAC;AACJ,EAAE,CAAC;AACH,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AACrB,CAAC,CAAC;AACF;AACA,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;AACb,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM;AAChC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC5D,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AACnB,EAAE;;AC1GF,GAAG;AACH,CAAC,CAAC,CAAC,kBAAkB,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC;AACtF,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK;AAChE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;AAC9D,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;AACpB,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,CAAC,OAAO;AACf,CAAC,CAAC,KAAK,EAAE,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG;AACrE,CAAC,CAAC,KAAK,EAAE,CAAC,YAAY,CAAC,KAAK;AAC5B,CAAC,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;AAC7C,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE;AAC1C,CAAC,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACzB,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;AAC7C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,QAAQ;AACZ,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC;AAC1F,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG;AACtF,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;AACjC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;AACpF,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AACvD,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,2BAA2B,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACjF,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc;AAChC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;AACvB;AACA,CAAC,EAAE,CAAC,UAAU;AACd,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1B,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AACvB;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AAC/C,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;AACpE,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE;AAC/C;AACA,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;AACvB;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC;AAC7E,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;AACnC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AACvD;AACA,EAAE,CAAC,OAAO,CAAC,EAAE;AACb;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC;AAC/B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC;AACzH,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;AAChH,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,aAAa;AACvF,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAC5F,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;AAC3B,EAAE,IAAI,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE;AAC9C,CAAC,CAAC;AACF;AACA,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;AAClC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACxB,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;AACxD,CAAC,CAAC;AACF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;AACjB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS;AACzG,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAChF,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAClF;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACtC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;AAC5B,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC9B,IAAI,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,EAAE;AACrD,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;AACX,IAAI,IAAI,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE;AAChD,GAAG,CAAC;AACJ,EAAE,CAAC;AACH,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7B,CAAC,CAAC;AACF;AACA,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;AACjB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,MAAM;AACpC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACrE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;AACvB,EAAE;;ACzGF,GAAG;AACH,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC;AACzE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO;AACnF,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW;AAC5F,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;AAChB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,oBAAoB;AAC3E,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,CAAC,OAAO;AACf,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM;AACzB,CAAC,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;AAC7C,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE;AACrC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE;AACzB,CAAC,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;AAC9B,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;AAC7C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC;AACxE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM;AACxB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa;AACpC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW;AAClC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB;AACvC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY;AACnC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa;AACpC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc;AACrC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB;AACxC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,kBAAkB;AACzC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM;AACzE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC;AACtE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;AAC7E,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;AACzE,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC1D,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc;AAChC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;AACvB;AACA,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AAChD;AACA,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AAChD,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AAC9C,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AACnD,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AAC/C,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC3F,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AACjD,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACnG,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACrG;AACA,CAAC,EAAE,CAAC,UAAU;AACd,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAClB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACpB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;AACvB;AACA,CAAC,EAAE,CAAC,MAAM;AACV,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;AAChD;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE;AACjE,CAAC,IAAI,EAAE,OAAO;AACd,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;AACnC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE;AAC1B,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;AACjC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AAC7B,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;AACjC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;AACrC,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;AACpD,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE;AAC/D,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;AAC7D,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE;AAClE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;AAC9D,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE;AAC/D,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE;AAChE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE;AACnE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE;AACpE;AACA,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;AACvB;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC,CAAC,KAAK,CAAC;AAC9D;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAC3C;AACA,EAAE,CAAC,OAAO,CAAC,EAAE;AACb;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC;AAC1B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ;AACtC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACpD,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AAClB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC;AACxB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,MAAM;AACpC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACtD,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AACpB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;AACpC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS;AAClF,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACxD,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;AACtB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC;AAC1B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM;AAC/D,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC1D,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/C,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACrB,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5B,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACnB,EAAE,IAAI,CAAC,UAAU,GAAG;AACpB,CAAC,CAAC;AACF;AACA,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AAC7D,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;AAClB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACvD,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;AAClD,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACzC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACT,EAAE,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;AACpC,CAAC,CAAC;AACF;AACA,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;AACzB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ;AAChD,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACtD,CAAC,IAAI,CAAC,UAAU,GAAG;AACnB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC;AACxB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM;AAC/D,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC9D,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACrD;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAChC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;AACvB,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC1B,GAAG,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE;AACzC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACV,GAAG,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE;AACvC,EAAE,CAAC;AACH,CAAC,CAAC;AACF;AACA,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;AACpC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS;AAC1F,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5D;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACpC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC3B,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACnB,GAAG,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AAC1C,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACV,GAAG,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;AACpC,EAAE,CAAC;AACH,CAAC,CAAC;AACF;AACA,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa;AACtD,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS;AACpB,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ;AACnB,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;;AC9NH,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG;AAC9F,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC;AACnG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AACvC,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,CAAC,OAAO;AACf,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO;AACvD,CAAC,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;AACnD,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE;AACtC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;AACxB,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC;AACnB,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC,EAAE;AAC7D,CAAC,CAAC,aAAa,MAAM,CAAC,CAAC,IAAI,CAAC;AAC5B,CAAC,CAAC,aAAa,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5B,CAAC,CAAC,SAAS,CAAC;AACZ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;AAC9C,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;AAC5B,CAAC,CAAC,KAAK,GAAG;AACV,CAAC,CAAC,KAAK,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;AACvD,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;AACpC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE;AAClD,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM;AACxB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY;AACnC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG;AACrD,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc;AAChC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;AACvB;AACA,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AACrD;AACA,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC1F;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE;AACrD,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AAChC,CAAC,CAAC;AACF,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;AACzD,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;AACnE;AACA,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;AACvB;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAChD;AACA,EAAE,CAAC,OAAO,CAAC,EAAE;AACb;AACA,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM;AACnB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACvD,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5B,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG;AAC3B,EAAE,CAAC;AACH,CAAC,CAAC;AACF,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACpE,CAAC,IAAI,CAAC,KAAK,GAAG;AACd,EAAE;;ACnFF,GAAG;AACH,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC;AAC3I,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9G,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC;AAC/C,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,CAAC,OAAO;AACf,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;AACrC,CAAC,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;AAC3C,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;AACxB,CAAC,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5B,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE;AACZ,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;AAC1B,CAAC,CAAC,MAAM,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;AAChD,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACzB,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE;AACZ,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE;AAClE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK;AAC1F,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM;AACxB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW;AAClC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa;AACpC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc;AACrC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc;AAChC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;AACvB;AACA,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AAC9C;AACA,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACxF,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC5F,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC9F;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE;AAC9C,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;AAClD,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;AAC3D,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE;AAC7D,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE;AAC9D;AACA,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;AACvB;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;;ACzDzC,GAAG;AACH,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI;AAC/F,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;AAC5F,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,EAAE;AAC9F,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,CAAC,OAAO;AACf,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM;AACxC,CAAC,CAAC,KAAK,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;AACpD,CAAC,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;AAC7B,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK;AACjD,CAAC,CAAC,KAAK,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,GAAG;AACjD,CAAC,CAAC,KAAK,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC3B,CAAC,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;AAChF,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE;AAC/C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,UAAU;AAC/F,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM;AACxB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB;AACvC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa;AACpC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc;AAChC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;AACvB;AACA,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AACnD;AACA,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAClG,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC5F;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE;AACnD,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;AACvD,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE;AACrE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE;AAClE;AACA,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;AACvB;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;;ACvD9C,GAAG;AACH,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG;AACtF,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC5F,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM;AAC/B,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAClG,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC;AAC1G,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI;AACtF,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC;AACpE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,KAAK;AACvG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC;AAClD,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,CAAC,OAAO;AACf,CAAC,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,YAAY;AAClC,CAAC,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;AAC5C,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC;AACnC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;AAC5C,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AAChE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO;AAC/D,CAAC,CAAC,KAAK,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,GAAG;AACjD,CAAC,CAAC,KAAK,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC3B,CAAC,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,EAAE;AAC3C,CAAC,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAC1C,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE;AAC/C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM;AACxB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY;AACnC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa;AACpC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AAC/F,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;AAC5D,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc;AAChC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;AACvB;AACA,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AAC/C;AACA,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC1F,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AAChD;AACA,CAAC,EAAE,CAAC,UAAU;AACd,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;AAC3B;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;AAClC,GAAG,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,EAAE;AACxD,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACV,GAAG,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACzC,IAAI,IAAI,CAAC,KAAK,CAAC,kBAAkB,GAAG;AACpC,IAAI,MAAM,CAAC,KAAK,CAAC;AACjB,GAAG,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AACpB,EAAE,CAAC;AACH,CAAC,CAAC;AACF,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE;AAC/C,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;AACnD,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;AAC7D,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE;AAC9D;AACA,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;AACvB;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;;AC/E3C,GAAG;AACH,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS;AAC1G,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO;AACxG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK;AAC3G,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AAC9D,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI;AAC9H,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI;AACvH,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;AACtB,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,CAAC,OAAO;AACf,CAAC,CAAC,KAAK,QAAQ,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACzC,CAAC,CAAC,SAAS,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AACrD,CAAC,CAAC,KAAK,CAAC;AACR,CAAC,CAAC,KAAK,EAAE,CAAC,YAAY,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE;AAC7D,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE;AACrD,CAAC,CAAC,KAAK,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACvC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE;AAC/D,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7C,CAAC,CAAC,KAAK,EAAE;AACT,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACzD,CAAC,CAAC,SAAS,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE;AAC9E,CAAC,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AAC/E,CAAC,CAAC,SAAS,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC,EAAE;AAC1M,CAAC,CAAC,SAAS,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE;AACtD,CAAC,CAAC,KAAK,EAAE;AACT,CAAC,CAAC,KAAK,aAAa,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC5D,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,CAAC;AACtB,CAAC,CAAC,KAAK,CAAC;AACR,CAAC,CAAC,KAAK,aAAa,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC,CAAC,SAAS,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7B,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,CAAC,CAAC,aAAa,MAAM,CAAC,UAAU,GAAG,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE,WAAW,GAAG;AAC3E,CAAC,CAAC,aAAa,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE;AACzC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACnC,CAAC,CAAC,iBAAiB,MAAM,CAAC,UAAU,GAAG,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE,UAAU,GAAG;AAC9E,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE;AACnB,CAAC,CAAC,SAAS,CAAC;AACZ,CAAC,CAAC,SAAS,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AACvF,CAAC,CAAC,KAAK,EAAE;AACT,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,aAAa,GAAG;AACrD,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,aAAa,EAAE,OAAO,CAAC,EAAE;AACpD,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,GAAG;AACxC,CAAC,CAAC,KAAK,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;AAC9C,CAAC,CAAC,KAAK,aAAa,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,EAAE;AAC1C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,QAAQ;AACZ,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO;AACjF,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACzE,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc;AAChC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;AACvB;AACA,CAAC,EAAE,CAAC,UAAU;AACd,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AACtB;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;AAC5D,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE;AAC3C;AACA,EAAE,CAAC,OAAO,CAAC,EAAE;AACb;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE;AAC3D,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC;AAC1D,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAChF,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AACvB,EAAE,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,EAAE;AAC9D,CAAC,CAAC;AACF;AACA,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AAC1B,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,EAAE;AAC3D,CAAC,CAAC;AACF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC;AAClC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO;AACvC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC9D,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC;AACvB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI;AAC/F,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE;AAC3E,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAChE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,EAAE;AAC3D,EAAE,IAAI,CAAC,kBAAkB,GAAG;AAC5B,CAAC,CAAC;AACF,CAAC,IAAI,CAAC,OAAO,GAAG;AAChB;AACA,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI;AAC/F,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE;AAC3E,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC/D,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,EAAE,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,EAAE;AAC9D,EAAE,IAAI,CAAC,kBAAkB,GAAG;AAC5B,CAAC,CAAC;AACF,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAChD;AACA,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;;ACnIF,GAAG;AACH,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS;AAChG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;AAChE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG;AACnG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI;AACjG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC;AAC9C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG;AAClG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM;AAClG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;AAC/D,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,QAAQ;AACZ,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO;AAC9F,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AACnE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC;AACpF,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,kBAAkB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI;AAC5F,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,kBAAkB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI;AAC5F,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI;AACjE,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI;AAC1E,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,MAAM;AAC3E,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC;AACxF,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI;AAC7F,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,kBAAkB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI;AAC3F,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI;AACnG,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI;AAC7F,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,MAAM;AAC7E,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS;AACjG,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI;AAClB,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC7E,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc;AAChC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;AACvB;AACA,CAAC,EAAE,CAAC,UAAU;AACd,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AACxB,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC;AACjC,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9B,CAAC,IAAI,EAAE,0BAA0B,CAAC,CAAC,CAAC,IAAI,CAAC;AACzC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;AAC5D,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;AAClE;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,MAAM,EAAE,kBAAkB,CAAC,EAAE;AAC1D,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;AAChE,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AAChE,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACpE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,iBAAiB,CAAC;AACrG,EAAE;AACF;AACA,EAAE,CAAC,OAAO,CAAC,EAAE;AACb;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC;AACzB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC;AACzF,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS;AACvD,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACtF,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AACzB,EAAE,IAAI,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,EAAE;AACpE,EAAE,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AAC/C,CAAC,CAAC;AACF;AACA,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,EAAE;AAC7E,CAAC,IAAI,CAAC,QAAQ,GAAG;AACjB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC;AAC3B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC;AACtE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK;AACvF,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AACjG,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC;AAChD,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AACzB,EAAE,IAAI,CAAC,QAAQ,GAAG;AAClB,CAAC,CAAC;AACF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;AACnD,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC;AACzE,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACpF,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpF,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE;AACxE,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC5C,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC;AACnC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AAC1B,GAAG,IAAI,CAAC,QAAQ,GAAG;AACnB,EAAE,CAAC;AACH,CAAC,CAAC;AACF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC;AACrD,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC;AACzE,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACtF,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpF,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE;AAC1E,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC9C,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC;AACrC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AAC1B,GAAG,IAAI,CAAC,QAAQ,GAAG;AACnB,EAAE,CAAC;AACH,CAAC,CAAC;AACF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;AACtB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC;AACzF,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM;AACpE,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACrF,CAAC,GAAG,CAAC,4BAA4B,CAAC;AAClC;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC;AACvD,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,CAAC,CAAC;AACF;AACA,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC;AAC7E;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5E,EAAE,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE;AACtI,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/B,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAC1C,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC;AACjC;AACA,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAC5B,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACtC,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACzC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC1E;AACA,EAAE,4BAA4B,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,6BAA6B,CAAC,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACrH,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM;AACtE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC;AACtD,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,4BAA4B,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/D,GAAG,4BAA4B,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,4BAA4B,CAAC,EAAE;AACjG,EAAE,CAAC;AACH;AACA,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACtB,GAAG,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,EAAE;AACxD,GAAG,IAAI,EAAE,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,8BAA8B,CAAC,EAAE;AAC7E;AACA,GAAG,IAAI,EAAE,0BAA0B,CAAC,CAAC,CAAC,EAAE,CAAC,4BAA4B,CAAC,EAAE;AACxE,GAAG,IAAI,EAAE,0BAA0B,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,wBAAwB,CAAC,EAAE;AAClF;AACA,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO;AACpC,GAAG,IAAI,CAAC,QAAQ,GAAG;AACnB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACV,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;AACjC,IAAI,IAAI,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,8BAA8B,CAAC,EAAE;AAC/E,IAAI,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC;AACjC,GAAG,CAAC;AACJ;AACA,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,0BAA0B,CAAC,CAAC,CAAC,CAAC;AAC5C,IAAI,IAAI,EAAE,0BAA0B,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,wBAAwB,CAAC,EAAE;AACpF,IAAI,IAAI,EAAE,0BAA0B,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5C,GAAG,CAAC;AACJ;AACA,GAAG,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AAC3D,EAAE,CAAC;AACH,CAAC,CAAC;AACF;AACA,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC;AACpG,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;AAC3B,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;AAC7B,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;AACpB,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAChG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,eAAe,CAAC,CAAC,kBAAkB,CAAC,CAAC,gBAAgB,CAAC,CAAC,iBAAiB,CAAC;AAClG,EAAE,iBAAiB,CAAC,CAAC,eAAe,CAAC;AACrC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE;AAC1C;AACA,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,qBAAqB,GAAG;AAClD,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;AACd,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACV,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACX,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,WAAW,CAAC;AAC/C,GAAG,MAAM,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,YAAY;AAChD,EAAE,EAAE;AACJ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACT,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,qBAAqB,GAAG;AACrD,CAAC,CAAC;AACF;AACA,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;AACnF,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC5F,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;AACtF,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;AACzF,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,EAAE,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC;AACxC,EAAE,eAAe,CAAC,CAAC,CAAC,gBAAgB,CAAC;AACrC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACT,EAAE,iBAAiB,CAAC,CAAC,CAAC,gBAAgB,CAAC;AACvC,EAAE,eAAe,CAAC,CAAC,CAAC,iBAAiB,CAAC;AACtC,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAClE,EAAE,MAAM,CAAC,KAAK,CAAC;AACf,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;AAC/D,EAAE,MAAM,CAAC,KAAK,CAAC;AACf,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AACpE,EAAE,MAAM,CAAC,KAAK,CAAC;AACf,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;AACjE,EAAE,MAAM,CAAC,KAAK,CAAC;AACf,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;AAC1E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC;AACrF,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAC7E,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;AACrE,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;AAC9C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC;AAClF,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC/D,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAC3B,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACR,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;AAC9C,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG;AAC5C,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,EAAE,CAAC,CAAC;AAC/B,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM;AAClD,GAAG,IAAI,EAAE,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,EAAE;AACvE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;AAC3C,GAAG,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,kBAAkB,GAAG,CAAC,IAAI,EAAE,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjF,EAAE,CAAC;AACH,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACN,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG;AACnF,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC,IAAI,EAAE,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3H,EAAE,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE;AACrD,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACT,EAAE,IAAI,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE;AACxD,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;AACnC,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,CAAC,CAAC;AACF;AACA,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,EAAE;AAC/C;AACA,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC/D,CAAC,EAAE,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE;AAChG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE;AAC/C,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI;AAClG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;AAC1D,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACnB,EAAE,IAAI,CAAC,IAAI,GAAG;AACd,CAAC,CAAC;AACF;AACA,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,kBAAkB;AAC7F,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;AAClG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC;AAC9F,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE;AACpG,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACtE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC;AACpD,EAAE,oBAAoB,CAAC,CAAC,kBAAkB,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC;AAClE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE;AACxD,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE;AAC1D,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,YAAY,GAAG;AACjD;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG;AACrF,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AACnD,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,EAAE;AAC7D,CAAC,CAAC;AACF,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;AACrC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;AAC9G,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;AAC9G;AACA,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE;AACvF,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE;AAC3F,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;AACtG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU;AAC7B,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpG;AACA,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,mBAAmB,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM;AAC7F,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;AAC9B,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AACxB,EAAE,IAAI,EAAE,kBAAkB,CAAC,MAAM,EAAE,CAAC,CAAC;AACrC,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE;AACtF,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,kBAAkB,CAAC,WAAW,GAAG;AACjF,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,kBAAkB,CAAC,UAAU,GAAG;AAChF,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC;AACnF,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC;AACjF;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC;AACnC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC;AACjE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC;AAChC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC;AACpE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;AACjC,GAAG,CAAC,CAAC,IAAI,EAAE,kBAAkB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC;AAClC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC;AAClC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC;AACpC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC;AAChC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AACnC,GAAG,CAAC,CAAC,IAAI,EAAE,kBAAkB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACpC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;AACjI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACV,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;AAC9B,EAAE,CAAC;AACH,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;AACtB,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAClC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;AAC5B,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACV,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;AAC/H,EAAE,CAAC;AACH,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;AACpB,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ;AAC/B,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3B,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC;AAC1B,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9B,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC;AAC7B,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5B,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC;AAC5B,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7B,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC;AAC7B,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM;AAChC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9B,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,oBAAoB,CAAC;AACxC,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7B,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC;AACrC,EAAE,CAAC;AACH,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACT,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9B,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAAC;AACtC,EAAE,CAAC;AACH,CAAC,CAAC;AACF;AACA,CAAC,MAAM,CAAC,MAAM,CAAC;AACf,EAAE;;ACpZF,GAAG;AACH,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC;AACnE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI;AAClE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK;AACpE,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;AACtB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG;AACnF,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,kBAAkB,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;AACrF,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI;AACtF,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;AACrF,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ;AAChG,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC;AAC9B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,QAAQ;AACZ,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO;AAC1F,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,kBAAkB,CAAC;AAC9F,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,SAAS;AAC5B,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC7E,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc;AAChC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;AACvB;AACA,CAAC,EAAE,CAAC,UAAU;AACd,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AACxB,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC;AACjC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;AACvB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,KAAK,CAAC;AAClC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC;AAChC,CAAC,IAAI,EAAE,4BAA4B,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3C,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC;AAChC,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9B,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;AACxB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;AACzB,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;AACxD,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;AAC9D;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC;AACpC,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC,MAAM,EAAE,kBAAkB,CAAC,EAAE;AAC3D,CAAC,CAAC;AACF,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;AAChE,EAAE;AACF;AACA,EAAE,CAAC,OAAO,CAAC,EAAE;AACb;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC;AACzB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC;AACzF,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS;AACvD,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACtF,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AACzB,EAAE,IAAI,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,EAAE;AACpE,EAAE,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AACjF,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACpE,CAAC,CAAC;AACF;AACA,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,EAAE;AAC7E,CAAC,IAAI,CAAC,IAAI,GAAG;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC;AAC3B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC5F,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC;AACtF,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;AACjE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK;AACvF,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AACjG,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC;AAChD,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AACzB,EAAE,IAAI,CAAC,IAAI,GAAG;AACd,CAAC,CAAC;AACF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;AACnB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC;AACtF,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM;AAC9D,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC/E,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC;AACjE;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC;AACzE,EAAE,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE;AACnI,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/B,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACpC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC3B,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACnB,GAAG,IAAI,EAAE,4BAA4B,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,oCAAoC,EAAE,CAAC,EAAE;AACzF,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK;AAC1F,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,eAAe;AACvE,GAAG,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,IAAI,EAAE,4BAA4B,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACpF,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/E,IAAI,IAAI,EAAE,4BAA4B,CAAC;AACvC,GAAG,IAAI,EAAE,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,wBAAwB,CAAC,EAAE;AACzE,GAAG,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;AACvD,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,8BAA8B,CAAC,EAAE;AACzD,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO;AAChC,GAAG,IAAI,CAAC,IAAI,GAAG;AACf,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACV,GAAG,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AACzB,IAAI,KAAK,CAAC,CAAC,GAAG;AACd,IAAI,MAAM,CAAC,CAAC,GAAG;AACf,IAAI,QAAQ,CAAC,CAAC,GAAG;AACjB,IAAI,SAAS,CAAC,CAAC,GAAG;AAClB,IAAI,SAAS,CAAC,CAAC,GAAG;AAClB,IAAI,SAAS,CAAC,CAAC,EAAE;AACjB,GAAG,CAAC,CAAC,EAAE;AACP,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACrE;AACA,GAAG,IAAI,EAAE,4BAA4B,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7C,GAAG,IAAI,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,wBAAwB,CAAC,EAAE;AAC1E,GAAG,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC;AAClC,GAAG,IAAI,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,8BAA8B,CAAC,EAAE;AAC9E,GAAG,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC;AAChC,EAAE,CAAC;AACH,CAAC,CAAC;AACF;AACA,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC;AACpG,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI;AAChE,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACjE,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;AACtB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC;AACpG,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO;AACzD,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAChE,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC;AAC3D,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC;AAC1F,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO;AACzD,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC5E,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC;AACjC,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC;AAC3F,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO;AACzD,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC1E,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC;AAC/B,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC;AAClG,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;AAC5F,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;AAC9F,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAClF,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC;AACzB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC;AAC3B;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACxB,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU;AACtB,EAAE,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;AAC1D,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU;AACjE,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;AAClG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;AAC7C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE;AAC/F,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC;AACvE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;AAC5F,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI;AAChG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC;AAC7E,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC3D,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC;AACnD,EAAE,CAAC,mBAAmB,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;AACpD,EAAE,OAAO,CAAC,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC;AACnD,EAAE,YAAY,CAAC,CAAC,aAAa,CAAC,CAAC,YAAY,CAAC,CAAC,aAAa,CAAC;AAC3D,EAAE,YAAY,CAAC,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC;AACrD,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;AACzC;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACxB,EAAE,EAAE,CAAC,IAAI,EAAE,4BAA4B,CAAC,GAAG,CAAC,IAAI,EAAE,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI;AAClG,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,CAAC,CAAC;AACF;AACA,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC;AAC1D,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,WAAW,GAAG;AACxE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,UAAU,GAAG;AACrE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG;AAChC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,4BAA4B,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/D,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,EAAE,eAAe,CAAC;AAC/C,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AACjC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACT,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,EAAE,4BAA4B,CAAC;AAC5D,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,MAAM,GAAG;AAC3C,CAAC,CAAC;AACF,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;AACxD,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;AACtD,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;AAC5C,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE;AAChF,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,EAAE,iBAAiB,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,EAAE,iBAAiB,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1E,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC3B,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC3D,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;AACxE,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,KAAK,CAAC;AAC3F,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE;AAC/E,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,EAAE;AAClF,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE;AACvD,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE;AAC1D,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE;AACtD,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE;AACxD,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC;AACzC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC;AAC5C;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACnB,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC;AACtG,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;AAChG,EAAE,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE;AAC/C,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM;AACzD,EAAE,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AACxB,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE;AACtC,GAAG,QAAQ,CAAC,CAAC,EAAE;AACf,EAAE,CAAC,CAAC,EAAE;AACN,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACT,EAAE,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AACxB,GAAG,SAAS,CAAC,CAAC,GAAG;AACjB,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG;AAChC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;AACxC,EAAE,CAAC,CAAC,EAAE;AACN,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC;AACtG,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;AAChG,EAAE,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE;AAC/C,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM;AACzD,EAAE,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AACxB,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE;AACxC,GAAG,SAAS,CAAC,CAAC,EAAE;AAChB,EAAE,CAAC,CAAC,EAAE;AACN,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACT,EAAE,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AACxB,GAAG,SAAS,CAAC,CAAC,GAAG;AACjB,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG;AAClC,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;AAC1C,EAAE,CAAC,CAAC,EAAE;AACN,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU;AAC5D,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjG,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACpE,CAAC,CAAC;AACF;AACA,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC;AACtC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,UAAU,CAAC;AACrC;AACA,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;;ACjSF,GAAG;AACH,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC;AAC3F,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;AACtE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC7F,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;AAC7F,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,CAAC,OAAO;AACf,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;AACzB,CAAC,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;AAC3C,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE;AAC7C,CAAC,CAAC,SAAS,MAAM,CAAC,CAAC,IAAI,CAAC;AACxB,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,GAAG;AACrB,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE;AAC5C,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE;AAChE,CAAC,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE;AAC5B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM;AAC7D,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM;AACxB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY;AACnC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB;AACvC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB;AACvC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM;AACrD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC;AACtF,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK;AACvE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,kBAAkB;AAC/F,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM;AAC7F,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,kBAAkB;AACnC,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM;AAC3F,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,kBAAkB;AACnC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,MAAM;AAC7F,CAAC,CAAC,YAAY,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,kBAAkB;AACjF,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,MAAM;AAC5F,CAAC,CAAC,YAAY,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,kBAAkB;AACnF,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,kBAAkB;AAC/E,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC;AACtG,CAAC,CAAC,cAAc,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AAC5E,CAAC,CAAC,cAAc,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC;AACzF,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC;AACzG,CAAC,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7E,CAAC,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC;AACxF,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM;AACrG,CAAC,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,kBAAkB,CAAC;AAClE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG;AACnE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG;AACpE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC;AAC/F,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC;AAC1D,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB;AAC/E,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC;AACpH,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;AACjE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM;AAClE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;AACtF,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;AACxF,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC;AAC9G,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC;AACnB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB;AAC/E,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,KAAK;AAClG,CAAC,CAAC,EAAE,MAAM,CAAC;AACX,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;AAChE,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc;AAChC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;AACvB;AACA,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AAC/C;AACA,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC;AACrE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;AAC3B,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;AAC5B;AACA,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AAC/C,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AACjE,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC;AACzB,EAAE,CAAC,kBAAkB,CAAC,CAAC,IAAI,EAAE,KAAK;AAClC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACP,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AACnD;AACA,CAAC,EAAE,CAAC,UAAU;AACd,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;AAC7B,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,eAAe,EAAE;AAC9D,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC;AACrC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;AAC9F,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC;AACrC,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,MAAM,EAAE,eAAe,CAAC;AACjD,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;AACvB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;AAC9D,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AAClE,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;AACzD,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;AACrE;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;AACnE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE;AAC/C,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AAChD,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE;AACjD,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE;AACrD,CAAC,IAAI,EAAE,KAAK;AACZ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE;AACxB,CAAC,IAAI,EAAE,OAAO;AACd,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;AAClC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE;AACvC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI;AAC3E,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM;AAC1E,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC3C,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;AACvC,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACvB,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE;AACzD,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACrB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AAChF,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE;AACpE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC3B,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AACxC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE;AACrD,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE;AACpC,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AACxB,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7B,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;AAC1C,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;AAC7B,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE;AACrC,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO;AAChG,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY;AACvF,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK;AAC5D,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;AACtB,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE;AAClD,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;AACnD,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;AAC7D,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE;AACjE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE;AACjE;AACA,EAAE,CAAC,MAAM,CAAC,EAAE;AACZ;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK;AACf,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC;AACzE,CAAC,EAAE;AACH;AACA,EAAE,CAAC,OAAO,CAAC,EAAE;AACb;AACA,GAAG;AACH,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;AAC7B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK;AACzC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,CAAC,EAAE,CAAC,CAAC;AACL,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE;AACrB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,eAAe,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;AACrF,CAAC,CAAC,CAAC,CAAC;AACJ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE;AACvB,CAAC,CAAC;AACF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC5B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACjE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK;AAChC,CAAC,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,EAAE;AACxF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;AACrC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC9D,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1B,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE;AACvB,CAAC,CAAC;AACF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC9B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACnE,CAAC,IAAI,CAAC,gBAAgB,GAAG,mBAAmB,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,EAAE;AAC3F,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;AAC3B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK;AAC1C,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC,EAAE,CAAC,CAAC;AACL,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAClC,EAAE,IAAI,CAAC,SAAS,EAAE;AAClB,CAAC,CAAC,CAAC,CAAC;AACJ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE;AACvB,EAAE,CAAC,CAAC,cAAc,GAAG;AACrB,EAAE,CAAC,CAAC,eAAe,GAAG;AACtB,CAAC,CAAC;AACF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC1B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC/D,CAAC,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,IAAI,CAAC,EAAE;AAC5F,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC5B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACjE,CAAC,IAAI,CAAC,gBAAgB,GAAG,mBAAmB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,IAAI,CAAC,EAAE;AAC/F,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC;AACtD,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM;AACtD,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC9D,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;AACrD;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAChC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACf,GAAG,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,EAAE;AAC1D,GAAG,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AAC7E,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACV,GAAG,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,EAAE;AAC7D,GAAG,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AAChF,EAAE,CAAC;AACH,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;AACvB,CAAC,CAAC;AACF,EAAE;AACF,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;AAC3C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC;AACzD,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/D,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpE,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;AACvD,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClC,EAAE,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AAC/E,CAAC,CAAC;AACF,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;AACxB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACvB,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;AACjE,CAAC,CAAC;AACF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC;AAClC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO;AACtC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACrD,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;AACtB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO;AAC7F,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;AAChE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO;AAClG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC;AAChG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM;AAC5F,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC;AACtF,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK;AACf,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC,GAAG,CAAC,MAAM,CAAC;AACZ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;AACxD;AACA,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG;AACpC;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC;AACrE,EAAE,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE;AACpH,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/B,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,kBAAkB,CAAC,EAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC;AACvE,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG;AACtE,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE;AACvD,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM;AACjB,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;AAC9D;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAChB,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,kBAAkB,CAAC,EAAE;AAC/D;AACA,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACf,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC1B,IAAI,IAAI,CAAC,qBAAqB,GAAG;AACjC,IAAI,IAAI,CAAC,mBAAmB,GAAG;AAC/B,GAAG,CAAC;AACJ,GAAG,IAAI,CAAC,gBAAgB,GAAG;AAC3B,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,EAAE;AAC/B,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACxB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACV,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,EAAE;AAChC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC1B,IAAI,IAAI,CAAC,uBAAuB,GAAG;AACnC,IAAI,IAAI,CAAC,qBAAqB,GAAG;AACjC,GAAG,CAAC;AACJ,EAAE,CAAC;AACH,CAAC,CAAC;AACF;AACA,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;AACrF,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM;AACxC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM;AAC1C,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU;AAC9D,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAC9E,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AACpB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACpD,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1B,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,UAAU,CAAC,EAAE;AACtC,CAAC,CAAC;AACF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;AAChC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI;AACpG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC;AAC3B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU;AAC9D,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACnB;AACA,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW;AAC7C,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE;AACxC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU;AACtB,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,EAAE;AAC9D,CAAC,CAAC;AACF;AACA,CAAC,IAAI,CAAC,QAAQ,GAAG;AACjB;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ;AACvD,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACpD,GAAG,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,EAAE;AACpE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE;AACX,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACT,EAAE,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW;AACtC,EAAE,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,EAAE;AACjE,CAAC,CAAC;AACF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC3D,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC;AACnG,EAAE,YAAY,CAAC,CAAC,YAAY,CAAC,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC,kBAAkB,CAAC,CAAC,YAAY,CAAC;AAC7F,EAAE,eAAe,CAAC,CAAC,YAAY,CAAC;AAChC,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG;AAChB,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;AAC3D,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;AACd,GAAG,GAAG,CAAC,CAAC,CAAC;AACT,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,SAAS,EAAE;AAC9B,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC;AAC7B,GAAG,EAAE;AACL,GAAG,GAAG,CAAC,CAAC,CAAC;AACT,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE;AAC7B,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC;AAC9B,GAAG,CAAC;AACJ,EAAE,EAAE;AACJ,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;AACnB,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE;AACnB,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE;AAChB,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE;AACjB,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AACjB,EAAE,EAAE;AACJ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AACb,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE;AACrB,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE;AACpB,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAC9C,EAAE,EAAE;AACJ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AACb,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE;AACnB,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE;AACpB,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;AACtB,EAAE,EAAE;AACJ;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AAC1B,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,WAAW;AAC/D,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,oCAAoC,EAAE,CAAC,EAAE;AACrE,CAAC,CAAC;AACF,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE;AAChD;AACA,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY;AAC1F,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS;AAC/F,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AACnB,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;AACpB,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACrD,CAAC,CAAC,CAAC,EAAE;AACL;AACA,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;AAC3D,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,UAAU;AAC7G,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE;AAC9E,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;AACvE,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACxE,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAClC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;AACrC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;AAC1C,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;AAC7E;AACA,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE;AAC3D,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,EAAE;AAC5E,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;AAC1E;AACA,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM;AACjB,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;AACtF,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK;AACxF,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC1B,EAAE,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,EAAE,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACpD;AACA,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,kBAAkB,CAAC,GAAG;AACpF,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,kBAAkB,CAAC,MAAM,GAAG;AAClD,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI;AAC/F,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc;AAC/F,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,GAAG,MAAM,GAAG;AACzD;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/B,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,EAAE;AACtE,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACjD,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACT,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7C,GAAG,IAAI,EAAE,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,EAAE;AAChF,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACjD,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACvB,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,kBAAkB;AACpG,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClE,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAChF;AACA,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;AAChG,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM;AAC1G,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE;AACxD,EAAE,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AACrE,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACvD,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU;AAClF,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;AACzD,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAC1E,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ;AAC9E,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3D,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;AACrE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACV,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,EAAE,CAAC;AACH,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACT,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;AACzB,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS;AACjE,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,GAAG;AACzC,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI;AACtF,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI;AACjG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC;AAC7E,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC;AAC5E,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzE,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM;AAC5E,EAAE,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5D,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AACvE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9E,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG;AAC3E,EAAE,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3D,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE;AACzE,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACvB,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,kBAAkB;AAC/C,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC;AAC3E;AACA,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM;AACxB,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;AACpC,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,EAAE;AAChC,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM;AAC5B,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC;AACtD;AACA,CAAC,MAAM,CAAC,cAAc,CAAC;AACvB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS;AACtB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE;AAChG,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;AAC9B,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/D,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS;AACtB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AACrB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACT,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;AACxB,CAAC,CAAC;AACF,CAAC,IAAI,CAAC,QAAQ,GAAG;AACjB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS;AACtB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE;AAClF,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;AAC9B,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACxD,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AACnB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;AACvC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC;AACjE,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACjE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5E,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;AACrB,CAAC,CAAC;AACF,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC/B,CAAC,IAAI,CAAC,QAAQ,GAAG;AACjB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC;AACzB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC;AACzD,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACvD,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;AAC3B,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG;AACzD,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;AACnD,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO;AAC9C,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACrD,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AAClC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC1B,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,GAAG;AACjC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE;AAC9B,CAAC,CAAC;AACF,CAAC,MAAM,CAAC,EAAE,CAAC;AACX,EAAE;;AChlBF,GAAG;AACH,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE;AACjG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI;AACjG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;AAChG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC;AAC5D,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,QAAQ;AACZ,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK;AACvD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK;AAC9E,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACrE,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc;AAChC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;AACvB;AACA,CAAC,EAAE,CAAC,UAAU;AACd,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC;AAC9C,EAAE,CAAC;AACH,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC;AACnB,GAAG,CAAC,kBAAkB,CAAC,CAAC,IAAI,EAAE,OAAO;AACrC,EAAE,EAAE;AACJ,EAAE,MAAM,CAAC,KAAK,CAAC;AACf,EAAE,CAAC;AACH,GAAG,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;AACvF,EAAE,CAAC;AACH,CAAC,CAAC,CAAC,EAAE;AACL,EAAE;AACF;AACA,EAAE,CAAC,OAAO,CAAC,EAAE;AACb;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;AACb,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,MAAM;AAC3C,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC3D,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AACnB,EAAE;;ACxCF,GAAG;AACH,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,WAAW,EAAE;AACjG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC,OAAO,CAAC;AAC9D,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,CAAC,OAAO;AACf,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;AACpC,CAAC,CAAC,KAAK,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;AACvD,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE;AAC9C,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;AACxB,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC;AACnB,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,EAAE;AAChE,CAAC,CAAC,aAAa,MAAM,CAAC,CAAC,IAAI,CAAC;AAC5B,CAAC,CAAC,aAAa,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;AAClC,CAAC,CAAC,SAAS,CAAC;AACZ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;AACvC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE;AAClD,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY;AAC9B,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY;AACnC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK;AAC/G,CAAC,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG;AAClH,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;AAC9F,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE;AACnE,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc;AAChC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;AACvB;AACA,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AACrD;AACA,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AAC/C;AACA,CAAC,EAAE,CAAC,UAAU;AACd,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC;AAClD;AACA,CAAC,EAAE,CAAC,MAAM;AACV,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;AAC7C;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,IAAI,EAAE,OAAO;AACd,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;AACxC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;AACnC,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO;AACpB,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9C,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AACzE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE;AAC9E,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE;AAC7C,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE;AAC/D,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;AACnE;AACA,EAAE,CAAC,OAAO,CAAC,EAAE;AACb;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC;AAC5C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC1D,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG;AACrB,EAAE;;ACtEF,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC;AACzE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC;AAC/E,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,CAAC,CAAC,CAAC,QAAQ;AACZ,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY;AACnC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AAC/C,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;AACnE;AACA,EAAE,CAAC,OAAO,CAAC,EAAE;AACb;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC;AACxC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;AAC7D,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM;AAC3C,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACZ;AACA,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM;AACjB,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM;AAClF,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE;AAC3D;AACA,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW;AAC/F,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACxD,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,cAAc,GAAG;AACpC,EAAE,CAAC;AACH,CAAC,CAAC;AACF;AACA,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;;AC/CF,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC;AAClF,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI;AACxG,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC;AACtC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC;AAChF,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,CAAC,CAAC,CAAC,QAAQ;AACZ,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,EAAE,CAAC,CAAC;AACzD,CAAC,EAAE;AACH,EAAE;AACF;AACA,EAAE,CAAC,OAAO,CAAC,EAAE;AACb;AACA,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC;AAC/B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC;AAC/D,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ;AACvC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC3D,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AACxB,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,EAAE;AAClF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;AAC3B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI;AAC3E,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM;AACjB,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO;AACvF,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE;AAC7D;AACA,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM;AACnC,CAAC,IAAI,CAAC,cAAc,GAAG;AACvB;AACA,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;;AC/CF,GAAG;AACH,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG;AACxF,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI;AAC3F,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW;AACpG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,EAAE;AACxE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAmB;AAC1E,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM;AACxB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU;AACjC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY;AACnC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc;AACrC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,kBAAkB;AACzC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC1D,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc;AAChC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;AACvB;AACA,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AAChD;AACA,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;AACrC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AAC/C,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AACjD,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AACrD;AACA,CAAC,EAAE,CAAC,UAAU;AACd,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;AACvB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC;AAC1B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;AACtB;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,IAAI,EAAE,OAAO;AACd,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC;AACrC,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO;AACrE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3B,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAC3B,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACnC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;AACnC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE;AACzB,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;AACpD,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE;AAC5D,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;AAC9D,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE;AAChE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE;AACpE;AACA,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;AACvB;AACA,GAAG;AACH,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC;AACzD,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;AACtB,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5C;AACA,GAAG;AACH,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC;AAC/D,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;AACtB,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/C;AACA,GAAG;AACH,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC;AACvD,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;AACtB,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3C;AACA,GAAG;AACH,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC;AACtE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;AACtB,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC,KAAK,CAAC;AACzD;AACA,EAAE,CAAC,OAAO,CAAC,EAAE;AACb;AACA,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC;AACvC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU;AACvC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACzD,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,GAAG;AACrF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM;AAChF,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM;AAC7E,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC;AAClB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa;AAC1C,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC5D,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,GAAG;AACxF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM;AAClF,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;AACxD,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS;AACtC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACxD,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,GAAG;AACpF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC;AACnC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ;AACrC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACvD,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;AACtB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG;AACrE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC;AAC5D,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW;AACxC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC1D,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;AACzB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM;AAC9E,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM;AAC5E,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;AAC3E,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO;AACpC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACtD,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;AACrB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS;AAClF,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;AACrG,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;AACjC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM;AAC/C,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/D,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAC5C,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;AAC1B,EAAE,IAAI,EAAE,OAAO;AACf,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC;AACvD,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAE;AAC9C,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;AAClE,GAAG,IAAI,CAAC,qBAAqB,GAAG;AAChC,EAAE,CAAC;AACH,EAAE,IAAI,CAAC,kBAAkB,GAAG;AAC5B,CAAC,CAAC;AACF,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,YAAY;AACnE,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG;AAC1D,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;AAClF,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;AACjC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,MAAM;AAClD,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AAC/C,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;AAC7B,EAAE,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,EAAE;AACvE,EAAE,IAAI,CAAC,kBAAkB,GAAG;AAC5B,CAAC,CAAC;AACF,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG;AAClD,CAAC,CAAC,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG;AAC3E,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;AAC1E,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;AACjC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM;AAC9C,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9D,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC3C,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;AACzB,EAAE,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE;AACnE,EAAE,IAAI,CAAC,kBAAkB,GAAG;AAC5B,CAAC,CAAC;AACF,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;AAC5C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,UAAU;AACpE,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;AACtD,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO;AACjE,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACzD,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG;AAC7B,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,GAAG;AAC/D,EAAE;;AChOF,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACrG,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,kBAAkB,CAAC,MAAM,CAAC,OAAO,EAAE;AAC7E,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB;AACnF,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,IAAI;AACtG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,EAAE;AACvE,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,CAAC,OAAO;AACf,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO;AACvD,CAAC,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;AAC7C,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC;AACnB,CAAC,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;AACxC,CAAC,CAAC,iBAAiB,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AAC7B,CAAC,CAAC,iBAAiB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE;AACvC,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE;AACnB,CAAC,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;AACxC,CAAC,CAAC,iBAAiB,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AAC7B,CAAC,CAAC,iBAAiB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE;AACvC,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE;AACnB,CAAC,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;AACxC,CAAC,CAAC,iBAAiB,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AAC7B,CAAC,CAAC,iBAAiB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE;AACzC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,SAAS,CAAC;AACZ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;AAC7C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAmB;AAC1E,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,QAAQ;AACZ,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM;AACxB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW;AAClC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC;AAChF,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG;AACjF,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC9D,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAmB;AAC3E,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC1D,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc;AAChC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;AACvB;AACA,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AAChD;AACA,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACzF;AACA,CAAC,EAAE,CAAC,UAAU;AACd,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;AACtB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AACvB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;AACrD,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;AACzD,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;AACrD,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;AACvD,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG;AAC1B,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC;AACjC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B;AACA,CAAC,EAAE,CAAC,MAAM;AACV,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACtB,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;AACpB,CAAC,CAAC,CAAC,EAAE;AACL,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;AACpB,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;AACrC,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;AAC3C,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;AAC3C,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AAC5C,CAAC,CAAC,CAAC,EAAE;AACL;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,IAAI,EAAE,OAAO;AACd,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC;AAChE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE;AAC7B,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;AACrC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AAChC,CAAC,CAAC;AACF,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;AACpD,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;AAC7D;AACA,EAAE,CAAC,MAAM,CAAC,EAAE;AACZ;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS;AACnB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC;AAC/F,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI;AACzD,CAAC,EAAE;AACH;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK;AACf,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG;AAC/F,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC;AAC9B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI;AACrD,CAAC,EAAE;AACH;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM;AAChB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;AAC3G,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI;AACtD,CAAC,EAAE;AACH;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM;AAChB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;AAClF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI;AAC/C,CAAC,EAAE;AACH;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG;AACb,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC5F,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AAClD,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK;AACjD,CAAC,EAAE;AACH;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM;AAChB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU;AAC5F,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC;AAC3B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK;AACpD,CAAC,EAAE;AACH;AACA,EAAE,CAAC,OAAO,CAAC,EAAE;AACb;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM;AACtB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK;AAC9B,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC3D,CAAC,GAAG,CAAC,IAAI,CAAC;AACV,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;AAC9D,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC;AAC1E,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC;AAClC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,sBAAsB,GAAG;AACxC,EAAE,CAAC;AACH,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACT,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE;AACrE,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC;AACzE,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,EAAE;AACrC,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACd,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AAChD,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE;AAC9B,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACV,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE;AAC3B,EAAE,CAAC;AACH,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,EAAE,IAAI,EAAE,UAAU,CAAC,KAAK,GAAG;AAC3B,CAAC,CAAC;AACF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;AAC5B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK;AAC3C,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3D,CAAC,GAAG,CAAC,IAAI,CAAC;AACV;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACnE,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE;AAC7B,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE;AACjC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;AACtC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE;AAC1B,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AACzB,GAAG,IAAI,CAAC,kBAAkB,GAAG,gBAAgB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,EAAE;AACxF,GAAG,IAAI,CAAC,kBAAkB,GAAG,gBAAgB,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,EAAE;AAC5F,EAAE,CAAC;AACH,CAAC,CAAC;AACF,CAAC,MAAM,CAAC,KAAK,CAAC;AACd,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC;AAC1B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK;AACvC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC,GAAG,CAAC,IAAI,CAAC;AACV;AACA,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,EAAE;AAC7B,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACzB,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE;AACjC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;AACtC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AACzB,EAAE,CAAC;AACH,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACrF,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE;AACzB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;AACpC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AACxB,CAAC,CAAC;AACF;AACA,CAAC,IAAI,CAAC,kBAAkB,GAAG,mBAAmB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,EAAE;AACzF,CAAC,IAAI,CAAC,kBAAkB,GAAG,mBAAmB,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,EAAE;AAC7F;AACA,CAAC,MAAM,CAAC,KAAK,CAAC;AACd,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;AAC5B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK;AACzC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3D,CAAC,GAAG,CAAC,IAAI,CAAC;AACV;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC5C,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE;AACjC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;AACjE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE;AAC1B,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AACzB,EAAE,CAAC;AACH,CAAC,CAAC;AACF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;AAC5B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK;AAC3C,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3D,CAAC,GAAG,CAAC,IAAI,CAAC;AACV,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;AACnC,EAAE,MAAM,CAAC;AACT,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5B,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE;AACjC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;AACrE,CAAC,CAAC;AACF,CAAC,MAAM,CAAC,KAAK,CAAC;AACd,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;AAC7B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK;AAC3C,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACzD,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5B,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE;AAC7B,CAAC,CAAC;AACF,CAAC,MAAM,CAAC,KAAK,CAAC;AACd,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;AAC1B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK;AAC1C,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC,GAAG,CAAC,QAAQ,CAAC;AACd,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;AAClB,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,GAAG;AACpE;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;AAChD,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACxB,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;AACzB,IAAI,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AACxE,KAAK,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC;AAC7E,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,EAAE;AACpC,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AACpB,IAAI,CAAC;AACL,IAAI,KAAK,CAAC;AACV,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;AACtB,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;AACxB,IAAI,IAAI,CAAC,mBAAmB,GAAG;AAC/B,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACjE,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AACnB,IAAI,KAAK,CAAC;AACV,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;AACxB,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;AACzB,IAAI,IAAI,CAAC,mBAAmB,GAAG;AAC/B,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE;AAChE,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AACnB,IAAI,KAAK,CAAC;AACV,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;AAC1B,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;AACvB,IAAI,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AACxE,KAAK,WAAW,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,EAAE;AACzC,IAAI,CAAC;AACL,IAAI,IAAI,CAAC,qBAAqB,GAAG;AACjC,IAAI,IAAI,CAAC,sBAAsB,GAAG;AAClC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU;AAC9C,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;AACpB,IAAI,KAAK,CAAC;AACV,EAAE,CAAC;AACH;AACA,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACnB,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AACrD,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,EAAE;AACnC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;AACX,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,EAAE;AAChC,GAAG,CAAC;AACJ,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,QAAQ,CAAC,EAAE;AACvC,EAAE,CAAC;AACH;AACA,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAClB,GAAG,CAAC,CAAC,cAAc,GAAG;AACtB,GAAG,CAAC,CAAC,eAAe,GAAG;AACvB,EAAE,CAAC;AACH,CAAC,CAAC;AACF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC1B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAChE,CAAC,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,EAAE;AACpF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC5B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAClE,CAAC,IAAI,CAAC,gBAAgB,GAAG,mBAAmB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,EAAE;AACvF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;AACrF,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI;AAC5D,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACrE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACnB,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS;AACnG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC;AAC/C,CAAC,IAAI,CAAC,oBAAoB,GAAG;AAC7B,CAAC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACjD,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC3B,GAAG,MAAM,CAAC,oBAAoB,GAAG;AACjC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE;AACX,CAAC,CAAC,CAAC,EAAE;AACL,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM;AAC7B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAChE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;AAClC,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE;AAC3C,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC;AAClC,CAAC,CAAC;AACF,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG;AAC1B,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;AAC3B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK;AAC3C,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;AACrB;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACrB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3E,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACzF,GAAG,MAAM,CAAC,KAAK,CAAC;AAChB,EAAE,CAAC;AACH,EAAE,MAAM,CAAC;AACT,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AAC9B,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE;AACzC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACT,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE;AACxC,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;AAClC,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE;AAC3C,CAAC,CAAC;AACF,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AACtF;AACA,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,GAAG;AAC5D;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG;AACzE,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AAClC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACf,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AACpD,EAAE,CAAC;AACH,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACT,EAAE,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3B,CAAC,CAAC;AACF;AACA,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,EAAE;AAC5D,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE;AAC3D,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACd,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AACpE,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE;AAC9B,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACV,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE;AAC3B,EAAE,CAAC;AACH,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,EAAE;AAClC,CAAC,CAAC;AACF;AACA,CAAC,CAAC,CAAC,cAAc,GAAG;AACpB,CAAC,CAAC,CAAC,eAAe,GAAG;AACrB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM;AACxC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK;AAClD,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO;AAC3D,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO;AAChE,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACrE,CAAC,GAAG,CAAC,EAAE,CAAC;AACR;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACrB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG;AACpB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AAChD,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AAC3F,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACf,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI;AAChB,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC5B,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC3B,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,GAAG;AACtC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC9B,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,GAAG;AACrC,EAAE,CAAC;AACH,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE;AAC9B,CAAC,EAAE;AACH,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC;AAC3B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACjE,CAAC,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,EAAE;AACtF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC5B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,IAAI,CAAC,IAAI;AAC7E,CAAC,CAAC,CAAC,cAAc,CAAC;AAClB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACnE,CAAC,IAAI,CAAC,gBAAgB,GAAG,mBAAmB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,EAAE;AACzF,CAAC,IAAI,CAAC,mBAAmB,GAAG;AAC5B,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO;AAC5B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO;AAC3B,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC9D,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAClB,EAAE,IAAI,CAAC,mBAAmB,GAAG;AAC7B,CAAC,CAAC;AACF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;AAC1C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1B,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK;AAClF,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC;AAC5F,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;AACrB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ;AACjF,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC5D,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACZ;AACA,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvD,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;AACvC,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AAC1B,EAAE,CAAC;AACH,CAAC,CAAC;AACF,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC;AACxB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW;AACvF,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC/D,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACZ;AACA,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvD,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1C,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AAC1B,EAAE,CAAC;AACH,CAAC,CAAC;AACF,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;AACxB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG;AACvE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ;AAC7F,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;AACrC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO;AACtD,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC/B,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;AAC1B,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAClC,EAAE,IAAI,EAAE,OAAO;AACf,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC;AACxD,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE;AAC5D,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;AACzB,CAAC,CAAC;AACF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW;AACtF,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;AACnF,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS;AAC9E,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS;AACnB,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC;AACzB,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;AAClB;AACA,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvD,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;AACzC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAC1D,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,WAAW,CAAC,EAAE;AACjD,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AAClB,EAAE,CAAC;AACH,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACjB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACf,GAAG,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE;AACzE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACV,GAAG,IAAI,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE;AAC1D,EAAE,CAAC;AACH,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE;AACjC,CAAC,CAAC;AACF;AACA,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;AAC9B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC;AACrD,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO;AACtF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM;AACjF,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC5E,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;AACpB,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AAC1B,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE;AAC9C;AACA,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9B,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AACzB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtF,GAAG,MAAM,CAAC,IAAI,CAAC;AACf,EAAE,CAAC;AACH,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAChB,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACf,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE;AAC/C,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/B,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AAC1B,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvF,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAClB,KAAK,MAAM,CAAC,IAAI,CAAC;AACjB,IAAI,CAAC;AACL,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACjB,GAAG,CAAC;AACJ,EAAE,CAAC;AACH,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAChB,GAAG,MAAM,CAAC,KAAK,CAAC;AAChB,EAAE,CAAC;AACH,CAAC,CAAC;AACF;AACA,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AAC9E,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC;AAClC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC;AACvD,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO;AACtF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM;AAChB,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC7E,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE;AAC9D,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AAC/C,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,GAAG;AAC3B,CAAC,CAAC;AACF,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,aAAa,CAAC,EAAE;AACzC,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC;AACrF,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC;AACjE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG;AAClF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM;AAChB,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,EAAE;AACjD,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAC7C,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,GAAG;AAC3B,CAAC,CAAC;AACF,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,EAAE;AACxC,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC;AAC1F,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC;AAClC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG;AAC1E,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM;AAChB,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7D,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;AACtB,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;AAClB;AACA,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvD,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;AACtC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACpD,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,EAAE;AAC3C,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AAClB,EAAE,CAAC;AACH,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACjB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AACzD,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAChB,IAAI,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE;AAC1E,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;AACX,IAAI,IAAI,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE;AAC3D,GAAG,CAAC;AACJ,EAAE,CAAC;AACH,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAC9B,CAAC,CAAC;AACF;AACA,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC;AACjB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG;AAC/E,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI;AACpG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;AACtB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG;AACxE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK;AACf,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5D,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;AACrB,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;AAClB;AACA,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvD,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;AACrC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAClD,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,EAAE;AACzC,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AAClB,EAAE,CAAC;AACH,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACjB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE;AAC7B,CAAC,CAAC;AACF;AACA,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC;AAClB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM;AAClF,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC;AACpG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;AAC9B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM;AAClG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC;AACxD,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM;AAClD,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM;AAChB,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7D,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACd,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE;AAC1B,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAC9B,CAAC,CAAC;AACF;AACA,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;AACrG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACpG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE;AAC9F,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;AAC/C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;AAC/H,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO;AACzF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO;AACjF,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;AACrE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM;AACjG,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC/F,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAChC,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AAC1B;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAC5C,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE;AAC5C,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACtD,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACT,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;AACvE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;AAC1C,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,CAAC,CAAC;AACF;AACA,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9B,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,EAAE;AACjC,EAAE,EAAE,CAAC,CAAC;AACN,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE;AAC/D,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAChC,EAAE,CAAC,CAAC,CAAC;AACL,GAAG,MAAM,CAAC,IAAI,CAAC;AACf,EAAE,CAAC;AACH,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACnD,CAAC,CAAC;AACF,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC;AAC3E,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC;AAC3E,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK;AACtF,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACnE,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AAClD,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AACpF,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC;AAC9B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG;AACnD,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK;AACtD,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG;AACb,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM;AAChB,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE;AACvE;AACA,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO;AACnD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;AAC/F;AACA,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ;AAClF,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI;AACrF,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC;AAClE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM;AACtD,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM;AAChB,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/D,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AAClB;AACA,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO;AAChC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAClD,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AACpB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5B,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE;AAC3B,EAAE,CAAC;AACH,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM;AAChB,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE;AACnE;AACA,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE;AAC9B;AACA,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;AACzF,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG;AACvF,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC;AAC3B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM;AAChB,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACvD,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG;AAChC;AACA,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM;AAChB,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;AAC3D;AACA,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS;AACnB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE;AACzB;AACA,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE;AAC9B;AACA,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;AAC5F,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AACpE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU;AAC9B,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;AAChC,EAAE;;ACl3BF,GAAG;AACH,CAAC,CAAC,CAAC,sBAAsB,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU;AACvF,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE;AACtG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS;AACzF,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG;AAC1E,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,EAAE;AAC3C,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,CAAC,OAAO;AACf,CAAC,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM;AAC9C,CAAC,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;AAC7C,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC;AACnB,CAAC,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,qBAAqB,CAAC,CAAC,CAAC;AACjD,CAAC,CAAC,iBAAiB,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AAC7B,CAAC,CAAC,iBAAiB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE;AAC7C,CAAC,CAAC,iBAAiB,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/B,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE;AACnB,CAAC,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,qBAAqB,CAAC,CAAC,CAAC;AACjD,CAAC,CAAC,iBAAiB,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AAC7B,CAAC,CAAC,iBAAiB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE;AAClD,CAAC,CAAC,iBAAiB,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AACpC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,SAAS,CAAC;AACZ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;AAC7C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAmB;AAC1E,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY;AAC9B,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW;AAClC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB;AACvC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,qBAAqB,CAAC,CAAC,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC5E,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AACzD;AACA,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AAC9C,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AACnD;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,IAAI,EAAE,OAAO;AACd,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,qBAAqB,CAAC,CAAC,CAAC;AAC5C,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACxB,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE;AAC7B,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE;AACnE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;AACtE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE;;ACtD3E,GAAG;AACH,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI;AAC3F,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG;AACpF,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;AACrE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,wBAAwB;AACnG,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,qBAAqB;AACvC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AACpD;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE;AACpD,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,qBAAqB,CAAC,EAAE;AACvE;AACA,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;AACvB;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC;;AC/B5D,GAAG;AACH,CAAC,CAAC,CAAC,wBAAwB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO;AAC3H,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,wBAAwB,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,QAAQ,CAAC;AAC3G,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,CAAC,OAAO;AACf,CAAC,CAAC,KAAK,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;AACnD,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,aAAa,KAAK,CAAC,CAAC,CAAC;AACvB,CAAC,CAAC,iBAAiB,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC;AACvD,CAAC,CAAC,qBAAqB,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACpC,CAAC,CAAC,iBAAiB,CAAC,CAAC,EAAE;AACvB,CAAC,CAAC,iBAAiB,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAChD,CAAC,CAAC,qBAAqB,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE;AACrC,CAAC,CAAC,qBAAqB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;AAC3C,CAAC,CAAC,iBAAiB,CAAC,CAAC,EAAE;AACvB,CAAC,CAAC,iBAAiB,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAChD,CAAC,CAAC,qBAAqB,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE;AACtC,CAAC,CAAC,qBAAqB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC/C,CAAC,CAAC,iBAAiB,CAAC,CAAC,EAAE;AACvB,CAAC,CAAC,iBAAiB,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC;AACvD,CAAC,CAAC,qBAAqB,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACpC,CAAC,CAAC,iBAAiB,CAAC,CAAC,EAAE;AACvB,CAAC,CAAC,iBAAiB,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAChD,CAAC,CAAC,qBAAqB,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;AACpC,CAAC,CAAC,qBAAqB,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACpC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC;AACtB,CAAC,CAAC,aAAa,CAAC;AAChB,CAAC,CAAC,SAAS,CAAC;AACZ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE;AACjD,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,qBAAqB;AACvC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC,QAAQ,CAAC,2BAA2B,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAChF,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,uBAAuB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AAC3D;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC;AAC1D,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE;AACtC,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,qBAAqB,CAAC,EAAE;AAC9E;AACA,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;AACvB;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,uBAAuB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC;AACxD;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,uBAAuB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC;;AC9D3D,GAAG;AACH,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG;AAC3F,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;AAClG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,mBAAmB,EAAE;AAC1G,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AAClG,CAAC,CAAC,CAAC,iBAAiB,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,UAAU;AAChF,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC;AAChE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG;AACpG,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC;AACpD,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM;AACtD,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM;AACrD,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;AACnD,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI;AAC3B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;AAClG,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;AAC/E,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAmB;AAC1E,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY;AAC9B,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB;AACvC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB;AACvC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK;AAClH,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,mBAAmB,CAAC;AACzG,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC;AACvD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK;AACpG,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,wBAAwB,CAAC,wBAAwB,CAAC;AACnH,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK;AAC5G,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM;AACtG,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM;AAC3G,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC;AAC5E,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AAC3F,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;AAC5F,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC;AACpF,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK;AACrF,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS;AAC/E,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI;AAC1C,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc;AAChC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;AACvB;AACA,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AACpD;AACA,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAChG,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AACnD;AACA,CAAC,EAAE,CAAC,UAAU;AACd,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;AACpE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC;AAChF,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,eAAe,CAAC;AACjD,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACzF,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9D,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,MAAM,EAAE,eAAe,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC5D,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;AACzE,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE;AACzF,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,iBAAiB,CAAC;AACrD,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;AAC3B;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE;AACpD,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACvB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE;AAClD,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO;AAChG,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY;AACvF,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK;AAC5D,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;AACtB,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE;AAClD,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE;AAC9D,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE;AACtE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE;AACtE;AACA,EAAE,CAAC,MAAM,CAAC,EAAE;AACZ;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK;AACf,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC;AACxE,CAAC,EAAE;AACH;AACA,EAAE,CAAC,OAAO,CAAC,EAAE;AACb;AACA,GAAG;AACH,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;AACtC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK;AACzC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC,EAAE,CAAC,CAAC;AACL,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE;AACrB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC;AAClB,IAAI,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,eAAe,CAAC,EAAE,GAAG,GAAG;AACzE,IAAI,CAAC,CAAC,MAAM,CAAC;AACb,IAAI,IAAI;AACR,EAAE,CAAC;AACH,CAAC,CAAC,CAAC,CAAC;AACJ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE;AACvB,CAAC,CAAC;AACF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,GAAG;AACvE;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;AAChD,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACxB,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;AACxB,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;AACzB,IAAI,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ;AACpF,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AACzB,KAAK,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AACvE,IAAI,CAAC;AACL,IAAI,KAAK,CAAC;AACV,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;AAC1B,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;AACvB,IAAI,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACxB,KAAK,WAAW,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,EAAE;AACzC,IAAI,CAAC;AACL,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE;AACzB,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU;AACrD,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC5C,KAAK,CAAC,CAAC,cAAc,GAAG;AACxB,KAAK,CAAC,CAAC,eAAe,GAAG;AACzB,IAAI,CAAC;AACL,IAAI,KAAK,CAAC;AACV,GAAG,OAAO,CAAC;AACX,IAAI,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AACtE,IAAI,MAAM,CAAC;AACX,EAAE,CAAC;AACH,CAAC,CAAC;AACF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,OAAO,CAAC;AAC/F,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE;AAC9C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACrE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC;AAClE,EAAE,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC;AACzB,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC;AACrB,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AAC1B,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG;AAC9B,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC;AACrB;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;AAC7C,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE;AACrE,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE;AAC/D;AACA,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO;AAC5E,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;AACjC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/B,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AAC1B,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC;AACzD,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACpB,KAAK,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM;AAC1D,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,EAAE;AAChD,IAAI,CAAC;AACL,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AACnB,IAAI,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;AACxB,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AACrD,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE;AACxC,IAAI,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE;AACnD,IAAI,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC;AACvC,IAAI,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC;AAC5C,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE;AAC3B,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AACjE,KAAK,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI;AAC5C,KAAK,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE;AAChC,KAAK,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3B,IAAI,CAAC;AACL,GAAG,CAAC;AACJ,EAAE,CAAC;AACH,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO;AAC9B,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAClB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,EAAE;AAC9C,EAAE,CAAC;AACH;AACA,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACzD,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC9C,EAAE,CAAC;AACH;AACA,EAAE,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE;AAC/E,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ;AACvB,CAAC,IAAI,CAAC,IAAI,GAAG;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACpE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AACrB,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE;AACrD,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACT,EAAE,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;AAC3E,CAAC,CAAC;AACF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACtE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AACrB,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE;AACtD,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACT,EAAE,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;AAC7E,CAAC,CAAC;AACF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACrE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AACrB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;AAC/B,GAAG,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE;AAC9F,GAAG,IAAI,CAAC,oBAAoB,GAAG;AAC/B,EAAE,CAAC;AACH,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACT,EAAE,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;AAC5E,CAAC,CAAC;AACF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACvE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AACrB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;AAC/B,GAAG,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE;AAC/F,GAAG,IAAI,CAAC,oBAAoB,GAAG;AAC/B,EAAE,CAAC;AACH,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACT,EAAE,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;AAC9E,CAAC,CAAC;AACF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC;AAClB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC;AAC1G,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ;AAC9G,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;AACpG,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM;AAClD,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjE,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;AACvE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAC3B,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE;AACvB,CAAC,CAAC;AACF,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM;AACjB,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE;AAC7E;AACA,CAAC,IAAI,CAAC,oBAAoB,GAAG;AAC7B;AACA,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM;AACjB,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE;AACzE;AACA,CAAC,IAAI,CAAC,oBAAoB,GAAG;AAC7B;AACA,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC3D,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM;AACjB,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;AACjE;AACA,CAAC,IAAI,CAAC,oBAAoB,GAAG;AAC7B;AACA,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO;AAC3F,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;AAChE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO;AACjG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC;AAChG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM;AAC5F,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC;AACtF,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK;AACf,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC,GAAG,CAAC,MAAM,CAAC;AACZ;AACA,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AACxF,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG;AACvC;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC;AACxE,EAAE,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE;AACxH,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/B,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzE,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,kBAAkB,CAAC,KAAK,EAAE,CAAC,EAAE;AACtE,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM;AACjB,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE;AACtE;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAChB,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAClB,GAAG,IAAI,CAAC,mBAAmB,GAAG;AAC9B,GAAG,IAAI,CAAC,oBAAoB,GAAG;AAC/B;AACA,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,IAAI,EAAE,kBAAkB,CAAC,EAAE;AACxD,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,EAAE;AAC/B;AACA,GAAG,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;AACpD;AACA,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC;AAClC,IAAI,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,eAAe,GAAG,YAAY,EAAE,CAAC,EAAE;AAC5F,IAAI,IAAI,CAAC,eAAe,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACpE,GAAG,CAAC;AACJ;AACA,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI;AACf,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACzB,IAAI,IAAI,CAAC,kBAAkB,GAAG,gBAAgB,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,IAAI,CAAC,EAAE;AACrG,GAAG,CAAC;AACJ;AACA,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACxB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACV,GAAG,IAAI,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE;AAC1D,GAAG,IAAI,CAAC,qBAAqB,GAAG;AAChC,GAAG,IAAI,CAAC,sBAAsB,GAAG;AACjC,GAAG,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACrD,GAAG,IAAI,CAAC,kBAAkB,GAAG,mBAAmB,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,IAAI,CAAC,EAAE;AACvG,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,KAAK,CAAC,EAAE;AACnC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,EAAE;AAChC,EAAE,CAAC;AACH,CAAC,CAAC;AACF;AACA,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;;ACzXF,GAAG;AACH,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI;AAC/F,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI;AACnG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;AAC9B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,GAAG;AAC/E,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,OAAO,CAAC;AACrC,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,CAAC,OAAO;AACf,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO;AAC3E,CAAC,CAAC,KAAK,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;AACjD,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE;AACxD,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,aAAa,KAAK,CAAC,CAAC,CAAC;AACvB,CAAC,CAAC,iBAAiB,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAChD,CAAC,CAAC,qBAAqB,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AACjC,CAAC,CAAC,qBAAqB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AACrC,CAAC,CAAC,iBAAiB,CAAC,CAAC,EAAE;AACvB,CAAC,CAAC,iBAAiB,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAChD,CAAC,CAAC,qBAAqB,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AACjC,CAAC,CAAC,qBAAqB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;AACtC,CAAC,CAAC,iBAAiB,CAAC,CAAC,EAAE;AACvB,CAAC,CAAC,iBAAiB,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAChD,CAAC,CAAC,qBAAqB,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AACjC,CAAC,CAAC,qBAAqB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AACrC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC;AACtB,CAAC,CAAC,aAAa,CAAC;AAChB,CAAC,CAAC,SAAS,CAAC;AACZ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE;AAC/C,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,QAAQ,CAAC,OAAO,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAClD,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,QAAQ,CAAC,OAAO,GAAG,eAAe,GAAG,OAAO,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACrE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;AACjF,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,wBAAwB;AACnG,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM;AACxB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW;AAClC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB;AACvC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY;AACnC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa;AACpC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB;AACxC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AAC1G,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK;AAC9G,CAAC,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG;AACjH,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;AAC7F,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE;AACnE,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC9D,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc;AAChC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;AACpD;AACA,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AAClD;AACA,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC;AACtE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;AACnC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC;AAClD;AACA,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AAC9C,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AACnD,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AAC/C,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC1F,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACnG;AACA,CAAC,EAAE,CAAC,UAAU;AACd,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AACpD,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC;AACf,EAAE,CAAC,kBAAkB,CAAC,CAAC,IAAI,EAAE,OAAO;AACpC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AACpB;AACA,CAAC,EAAE,CAAC,MAAM;AACV,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AACnB,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;AACnC,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;AACvC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM;AAC1F,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC;AACxC,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvD,CAAC,CAAC,CAAC,EAAE;AACL,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3B,EAAE,MAAM,CAAC,CAAC,CAAC,YAAY,EAAE;AACzB,EAAE,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC;AACxB,CAAC,CAAC,CAAC,EAAE;AACL;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,IAAI,EAAE,MAAM;AACb,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;AAC5C,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AACV,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE;AACpB,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG;AACzC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC;AAC9B,EAAE,CAAC,CAAC,CAAC;AACL,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE;AACtD,CAAC,IAAI,EAAE,OAAO;AACd,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;AACrC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE;AAC1B,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;AAC5C,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;AACtD,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;AAC/D,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE;AACpE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;AAChE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE;AACjE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE;AACrE;AACA,EAAE,CAAC,OAAO,CAAC,EAAE;AACb;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;AAChB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM;AAClD,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACtD,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AAClB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AAC9B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI;AAC1D,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjE,CAAC,GAAG,CAAC,aAAa,CAAC;AACnB;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACf,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE;AACxB,EAAE,MAAM,CAAC;AACT,CAAC,CAAC;AACF;AACA,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG;AACjC;AACA,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE;AAC9E,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACzC,EAAE,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,GAAG;AACxC,CAAC,CAAC;AACF;AACA,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,EAAE;AAChC,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AAC7B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK;AAC/C,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE;AACrE,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC;AACnB,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE;AAClE,CAAC,EAAE;AACH,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;AAC7B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;AAC5C,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACnE,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG;AACrB,CAAC,CAAC;AACF,CAAC,MAAM,CAAC,KAAK,CAAC;AACd,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;AAC1B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK;AACzC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3D,CAAC,EAAE,CAAC,CAAC;AACL,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE;AACvB,EAAE,CAAC;AACH,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAClC,GAAG,CAAC;AACJ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE;AAC7B,IAAI,CAAC;AACL,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACpC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;AACjC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI;AAChC,IAAI,CAAC;AACL,GAAG,CAAC;AACJ,EAAE,CAAC;AACH,CAAC,CAAC,CAAC,CAAC;AACJ,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG;AACrB,EAAE,MAAM,CAAC,KAAK,CAAC;AACf,CAAC,CAAC;AACF,EAAE;;AC3MF,GAAG;AACH,CAAC,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;AACxE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;AACzF,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;AAChF,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,yBAAyB;AACpG,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY;AAC9B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc;AAChC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;AACvB;AACA,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC;AAChF,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACjF;AACA,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AACrD;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS;AACrD,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE;AAClD,CAAC,IAAI,EAAE,OAAO;AACd,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;AACxC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1B,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAClC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AAChC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE;AAClC,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE;AAC/D;AACA,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;AACvB;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC;AACrD;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7D;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;AACjD;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;AACjD;AACA,EAAE,CAAC,OAAO,CAAC,EAAE;AACb;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE;AAC1E;AACA,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,EAAE;AACjC,CAAC,IAAI,EAAE,OAAO;AACd,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC3C,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE;AACjC;AACA,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE;AAC7E;AACA,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE;AAC7C;AACA,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;;ACzFF,GAAG;AACH,CAAC,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK;AACtF,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,QAAQ;AAC5F,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC;AAC3D,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;AAC/E,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,GAAG;AAC/E,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,sBAAsB,CAAC,OAAO,CAAC;AACxC,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,CAAC,OAAO;AACf,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC;AAChD,CAAC,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;AACnD,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AACrB,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;AACzC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;AACnD,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AACrB,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC;AAC3C,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;AACrD,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE;AACZ,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC;AAC9E,CAAC,CAAC,KAAK,WAAW,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,EAAE;AACzC,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE;AAClD,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAmB;AAC1E;AACA,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY;AAC9B,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB;AACxC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AACrD;AACA,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AACpD;AACA,CAAC,EAAE,CAAC,MAAM;AACV,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;AACpB,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;AAC/C,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AAC/C,CAAC,CAAC,CAAC,EAAE;AACL;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,IAAI,EAAE,OAAO;AACd,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;AACxC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE;AAChC,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE;AAC/D,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE;;AC9DxE,GAAG;AACH,CAAC,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG;AAC7F,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI;AAChG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW;AACpG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,EAAE;AACxE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,wBAAwB;AAC/E,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM;AACxB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU;AACjC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY;AACnC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ;AAC3E,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc;AAChC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;AACvB;AACA,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AACrD;AACA,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;AACrC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AAC/C;AACA,CAAC,EAAE,CAAC,UAAU;AACd,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;AACtB;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,IAAI,EAAE,OAAO;AACd,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;AACxC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE;AACzB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;AACrC,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;AACzD,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE;AACjE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;AACnE;AACA,EAAE,CAAC,MAAM,CAAC,EAAE;AACZ;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM;AAChB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC;AAC3E,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ;AAC/D,CAAC,EAAE;AACH;AACA,EAAE,CAAC,OAAO,CAAC,EAAE;AACb;AACA,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC;AACnC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ;AACrC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC5D,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;AACtB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS;AAClF,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;AACrG,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;AACjC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM;AAC/C,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;AACjB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACjC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;AACxB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE;AAC/B,EAAE,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE;AACzE,CAAC,CAAC;AACF,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;;ACjFF,GAAG;AACH,CAAC,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACnE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,EAAE;AACxG,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,wBAAwB;AACnG,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC,CAAC,CAAC,QAAQ;AACZ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM;AACxB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW;AAClC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC;AAC1F,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AACrD;AACA,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc;AAChC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;AACvB;AACA,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AAC9C;AACA,CAAC,EAAE,CAAC,MAAM;AACV,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AACxC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,wBAAwB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO;AACnG,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO;AACrD,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACxD;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACtB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AAChC,CAAC,CAAC;AACF,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE;AACzD,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;AACpD,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE;AACzB,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;AACzD,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;AAClE;AACA,EAAE,CAAC,MAAM,CAAC,EAAE;AACZ;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM;AAChB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,UAAU,CAAC;AACjG,CAAC,EAAE;AACH;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM;AAChB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,UAAU,CAAC;AACpE,CAAC,EAAE;AACH;AACA,EAAE,CAAC,OAAO,CAAC,EAAE;AACb;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;AACjC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,GAAG,CAAC,QAAQ,CAAC,OAAO;AACvD,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAClE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC9C,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,GAAG;AAC3B,CAAC,CAAC,CAAC,EAAE;AACL,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC7C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO;AACzD,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACtE,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACxD,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AACnB,CAAC,CAAC,CAAC,EAAE;AACL,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC;AAC9F,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM;AAC3D,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACxC,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC9C,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,EAAE;AAC/B,CAAC,CAAC,CAAC,EAAE;AACL,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC;AAC7F,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM;AAC7D,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1E,CAAC,GAAG,CAAC,KAAK,CAAC;AACX,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AAChB,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACvC,EAAE,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,EAAE;AACxC,CAAC,CAAC,CAAC,EAAE;AACL,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,EAAE;AAC3B,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;;AChHF,GAAG;AACH,CAAC,CAAC,CAAC,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC5E,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,yBAAyB,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;AACpG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;AAChF,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,yBAAyB;AACpG,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB;AACnC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,yBAAyB,CAAC,CAAC,CAAC,QAAQ,CAAC,6BAA6B,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpF,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc;AAChC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;AACvB;AACA,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC;AAChF,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,mBAAmB,GAAG;AACjD;AACA,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,yBAAyB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AAC7D;AACA,CAAC,EAAE,CAAC,MAAM;AACV,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AAClE,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AAC5D;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,IAAI,EAAE,OAAO;AACd,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,yBAAyB,CAAC,CAAC,CAAC;AAChD,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE;AACrC,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,yBAAyB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,EAAE;AAC5E;AACA,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;AACvB;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,yBAAyB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;AACzD;AACA,EAAE,CAAC,OAAO,CAAC,EAAE;AACb;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;AACzC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,yBAAyB,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC1E,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,EAAE;AAChD,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,yBAAyB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,yBAAyB,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE;AAClF,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,EAAE;AACpC,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,yBAAyB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC/E,CAAC,EAAE,CAAC,EAAE,CAAC,yBAAyB,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE;AACrF,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE;AAChD,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;AACpB,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,yBAAyB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC/D,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG;AACvB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;AAC1B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1B,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,yBAAyB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC,GAAG;AACJ,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,GAAG;AACnC,EAAE,QAAQ,CAAC;AACX;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACtE,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC1D,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAChF,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AACzD,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAClB,EAAE,CAAC,CAAC,cAAc,GAAG;AACrB,EAAE,QAAQ,CAAC,KAAK,GAAG;AACnB,CAAC,CAAC;AACF,EAAE;;ACtGF,GAAG;AACH,CAAC,CAAC,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ;AAClG,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,yBAAyB,CAAC,CAAC,GAAG;AAC5E,CAAC,CAAC,CAAC,yBAAyB,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC;AAC9F,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;AAC/E,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,GAAG;AAC/E,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,8BAA8B,CAAC,OAAO,CAAC;AAChD,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,CAAC,OAAO;AACf,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,yBAAyB,CAAC,IAAI,CAAC,oBAAoB,CAAC;AAChE,CAAC,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,yBAAyB,CAAC,CAAC,CAAC;AAC3D,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AACrB,CAAC,CAAC,SAAS,QAAQ,CAAC,CAAC,IAAI,CAAC;AAC1B,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACrC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,yBAAyB,CAAC,CAAC,CAAC;AAC3D,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AACrB,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC;AACvC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,yBAAyB,CAAC,CAAC,CAAC;AAC7D,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE;AACZ,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE;AAClD,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAmB;AAC1E,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB;AACnC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,yBAAyB,CAAC,CAAC,CAAC,QAAQ,CAAC,6BAA6B,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpF,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,yBAAyB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AAC7D;AACA,CAAC,EAAE,CAAC,UAAU;AACd,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1B;AACA,CAAC,EAAE,CAAC,MAAM;AACV,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AACtD;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,IAAI,EAAE,OAAO;AACd,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,yBAAyB,CAAC,CAAC,EAAE;AACjD,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,yBAAyB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,EAAE;AAC5E;AACA,EAAE,CAAC,OAAO,CAAC,EAAE;AACb;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;AACrG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACpG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE;AAC9F,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;AAC/C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;AAC5I,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO;AACzF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM;AAC9G,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,yBAAyB,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACnG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAChC,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AAC1B;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACd,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE;AAC5C,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACtD,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACT,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;AACvE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;AAC1C,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,CAAC,CAAC;AACF;AACA,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9B,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,EAAE;AACjC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;AACrC,GAAG,MAAM,CAAC,IAAI,CAAC;AACf,EAAE,CAAC;AACH,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACnD,CAAC,CAAC;AACF,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC;AACrC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1B,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,yBAAyB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC;AACnF,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC;AACnC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,yBAAyB,CAAC,CAAC,CAAC;AAC3E,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE;AACpC;AACA,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI;AACnE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC1D,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,yBAAyB,CAAC,CAAC,EAAE;AACpE,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE;AACpD,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE;AAClD,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG;AACjG,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC3D,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAC/C,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;AACtB,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,EAAE,UAAU,GAAG;AACvD,GAAG,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3D;AACA,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AAClG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACxE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;AACrC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE;AAC5C,IAAI,CAAC;AACL,GAAG,CAAC;AACJ,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG;AAC3F,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG;AAC3F,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG;AAC7F,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;AACnD,GAAG,CAAC,CAAC,cAAc,GAAG;AACtB,GAAG,UAAU,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC5B,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;AACnD,KAAK,KAAK,CAAC,CAAC,eAAe,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE;AAC1D,IAAI,CAAC;AACL,GAAG,CAAC,CAAC,EAAE;AACP,EAAE,CAAC;AACH,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC5B,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;AAClC,CAAC,CAAC;AACF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM;AACnB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,yBAAyB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC/D,CAAC,GAAG,CAAC,IAAI,CAAC;AACV,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5B,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;AAClD,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACf,GAAG,IAAI,CAAC,KAAK,GAAG;AAChB,EAAE,CAAC;AACH,CAAC,CAAC;AACF,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,yBAAyB,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC5E,CAAC,IAAI,CAAC,KAAK,GAAG;AACd,EAAE;;AC/JF,GAAG;AACH,CAAC,CAAC,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;AACzE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC;AACjE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,wBAAwB;AACvF,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,CAAC;AAC5C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB;AAClC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,OAAO,CAAC;AAC3D,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;AACtE,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC,OAAO,CAAC;AACtE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK;AAC/E,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,wBAAwB,CAAC,CAAC,CAAC,QAAQ,CAAC,4BAA4B,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC/F,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,wBAAwB,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,EAAE;AACtG;AACA,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa;AACxE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACjE,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC;AACvB,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;AACnC,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc;AAChC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;AACvB;AACA,CAAC,EAAE,CAAC,UAAU;AACd,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa;AAC/D,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC;AAChG;AACA,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,wBAAwB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACtH;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,wBAAwB,CAAC,CAAC,EAAE;AAC5D,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa;AAC/B,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,yBAAyB,CAAC,CAAC,EAAE;AAC7D,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,wBAAwB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,EAAE;;AC3C1E,GAAG;AACH,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;AACjF,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,aAAa,CAAC;AAClD,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC;AACpF,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS;AAChG,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI;AAC/F,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC;AACzB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,aAAa,CAAC;AACxG,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,CAAC,OAAO;AACf,CAAC,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC;AAClE,CAAC,CAAC,KAAK,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;AACxD,CAAC,CAAC,SAAS,QAAQ,CAAC,CAAC,EAAE;AACvB,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC,KAAK,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,GAAG;AACxD,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI;AACzD,CAAC,CAAC,KAAK,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC;AAC/C,CAAC,CAAC,KAAK,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC3B,CAAC,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI;AACrF,CAAC,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG;AACtF,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE;AAC/C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM;AACxB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,aAAa,EAAE;AAClG,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;AACtG,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC;AAClD,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc;AAChC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;AACvB;AACA,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AACrD;AACA,CAAC,EAAE,CAAC,UAAU;AACd,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;AAC1B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;AACtB;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;AAC7E,CAAC,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,EAAE;AACrD,CAAC,IAAI,EAAE,OAAO;AACd,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AACV,GAAG,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE;AACvB,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AACtB,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG;AACvB,EAAE,CAAC,CAAC,CAAC;AACL,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;AACxC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE;AACvB,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;AACzD;AACA,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;AACvB;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AAC/C;AACA,EAAE,CAAC,OAAO,CAAC,EAAE;AACb;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE;AACzG,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO;AAC5C,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC7D,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;AACtB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC;AACpF,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,aAAa;AACjF,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC1B;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5B,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AAChD,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AACvD,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACT,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE;AAC/B,EAAE,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE;AAC9C,CAAC,CAAC;AACF,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AAC1F,EAAE;;ACnGF,GAAG;AACH,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK;AAC7D,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,QAAQ,CAAC,MAAM,EAAE;AACxG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE;AAClG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC;AACtF,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM;AAC7D,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,QAAQ;AACZ,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM;AACxB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc;AACrC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB;AACxC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa;AACpC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,kBAAkB;AACzC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC;AAC1E,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;AACnD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;AACjE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC;AACxE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK;AACjH,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC;AAC1B,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc;AAChC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;AACvB;AACA,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AAC/C;AACA,CAAC,EAAE,CAAC,UAAU;AACd,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK;AAC9C,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,EAAE;AAC/D,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG;AACjB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;AACvC;AACA,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AACjD,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAClG,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC1F,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACpG;AACA,CAAC,EAAE,CAAC,MAAM;AACV,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AAC7F;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,IAAI,EAAE,KAAK;AACZ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC9B,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE;AACzC,CAAC,IAAI,EAAE,OAAO;AACd,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;AAClC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE;AACzB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AAC/B,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;AAC5B,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACtC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;AACpC,CAAC,CAAC;AACF,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;AACnD,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE;AAC/D,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE;AAClE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE;AAC9D,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE;AACnE;AACA,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;AACpB;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AAC5E,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;AACvF,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE;AAC9D,CAAC,MAAM,CAAC,MAAM,CAAC;AACf,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC3E,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AAClF,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC/C,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,GAAG;AACpC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO;AAClG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE;AAC7C,CAAC,CAAC;AACF,CAAC,MAAM,CAAC,KAAK,CAAC;AACd,EAAE;AACF;AACA,EAAE,CAAC,MAAM,CAAC,EAAE;AACZ;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM;AAChB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC;AACjE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK;AACxB,CAAC,EAAE;AACH;AACA,EAAE,CAAC,OAAO,CAAC,EAAE;AACb;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC;AACrB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;AAC9F,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC1F,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO;AAC/C,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO;AACjC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC3D,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;AACvB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC5C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK;AACzF,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAClD,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACnB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5B,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO;AAC1D,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC3B,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE;AAC1C,EAAE,CAAC,CAAC,EAAE;AACN,CAAC,CAAC;AACF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;AAC9B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,KAAK;AAC/B,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACpD,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM;AACjG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC;AACjF,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,GAAG;AAC/B,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9B,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,EAAE;AACzB,CAAC,CAAC;AACF,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AACnB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;AACvC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC;AAClE,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACvD,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE;AAChC,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;AAC9B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK;AAClC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM;AAChB,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC3D,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,EAAE;AACpC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE;AACrE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;AACxE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACrC,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE;AAC3B,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9B,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AACrB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACpC,CAAC,CAAC;AACF,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC3B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;AAC9E,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK;AACvC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK;AACpC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/D,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/C,EAAE,MAAM,CAAC,GAAG;AACZ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACjC,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAC7C,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACT,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE;AACzB,CAAC,CAAC;AACF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9D,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE;AACpE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AACrB,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE;AACpD,CAAC,CAAC;AACF,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC;AACnD,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE;AACrB,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1D,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE;AAC9B,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE;AAC9E,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;AACtE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;AAC/B,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACrB,EAAE,IAAI,CAAC,KAAK,GAAG;AACf,CAAC,CAAC;AACF,EAAE;;AC9OF,GAAG;AACH,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;AAC1D,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM;AACxB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;AACnD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC;AAC1E,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc;AAChC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;AACtD;AACA,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AACrD;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACtB,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE;AACjB,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;AACtB,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI;AACnB,CAAC,CAAC,CAAC,EAAE;AACL,CAAC,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE;AAC7C,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;AACzD;AACA,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;AACvB;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;;ACrCjD,GAAG;AACH,CAAC,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM;AACnF,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,QAAQ;AAC1F,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;AAC5F,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG;AACnE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;AACjE,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,CAAC,OAAO;AACf,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;AACtE,CAAC,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAClD,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE;AACjC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE;AACzB,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AACzB,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;AAC7C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa;AAC3E,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW;AAC7B,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa;AACpC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW;AAClC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB;AACvC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY;AACnC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa;AACpC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE;AACzG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;AACpG,CAAC,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,UAAU,EAAE;AAC/G,CAAC,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI;AACtG,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;AACvF,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc;AAChC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;AACrE;AACA,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,iBAAiB,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK;AACzD,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AACvB,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,GAAG;AACxB,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;AAC7E,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;AACvC;AACA,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AACrD;AACA,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC1F,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AAC9C,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AACnD,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AAC/C,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC1F;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAC7B,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE;AACjE,CAAC,CAAC;AACF,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE;AACrD,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE;AAC9D,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE;AACpE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;AAClE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE;AACvE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;AACnE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE;AACpE;AACA,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;AACvB;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAChD;AACA,EAAE,CAAC,OAAO,CAAC,EAAE;AACb;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACzE,CAAC,GAAG,CAAC,IAAI,CAAC;AACV,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;AAC/F,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;AACzF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;AACnB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC;AACnF,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACjG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK;AAChC,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACjE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,EAAE;AACpC,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAC1B,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM;AACjC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG;AACd,EAAE,CAAC;AACH;AACA,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE;AAC3B,CAAC,CAAC;AACF;AACA,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE;AACxE,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;AAC9B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE;AAChG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE;AAC7C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK;AAClC,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACjE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAC3B,EAAE,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE;AACxE,CAAC,CAAC;AACF,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC5D,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK;AAClG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC;AAC9F,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;;AC7IF,GAAG;AACH,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;AAC9F,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;AAC5E,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC;AACjG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,EAAE;AAC3F,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC;AAC3E,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,CAAC,OAAO;AACf,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM;AAC1E,CAAC,CAAC,KAAK,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC;AACrD,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AACvB,CAAC,CAAC,UAAU,QAAQ,CAAC,CAAC,IAAI;AAC1B,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC,KAAK,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC;AACrD,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACrB,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC,KAAK,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC;AACrD,CAAC,CAAC,SAAS,KAAK,EAAE,CAAC,EAAE;AACrB,CAAC,CAAC,SAAS,QAAQ,CAAC,CAAC,IAAI;AACzB,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;AACjE,CAAC,CAAC,KAAK,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;AACjD,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC;AAC9B,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC,KAAK,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC3B,CAAC,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AAC/F,CAAC,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AACjG,CAAC,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AAC/F,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE;AAC/C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM;AAC7D,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW;AAC7B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC3G,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc;AAChC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;AACvB;AACA,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AACvD;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,IAAI,EAAE,OAAO;AACd,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC;AAC1C,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK;AACrD,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;AAC3B,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;AAC7E,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE;AAChE;AACA,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;AACvB;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAClD;AACA,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;AACpB;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACnF,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AAC1F,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE;AACjD,CAAC,MAAM,CAAC,KAAK,CAAC;AACd,EAAE;AACF;AACA,EAAE,CAAC,OAAO,CAAC,EAAE;AACb;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACnE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AAClD,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC1D,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACnB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5B,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO;AAC1D,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC3B,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;AACzD,EAAE,CAAC,CAAC,EAAE;AACN,CAAC,CAAC;AACF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;AACxC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ;AAC7C,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;AACjB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACjC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;AACxB,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AAC/C,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AACvC,CAAC,CAAC;AACF,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC;AACtC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ;AACzC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC9D,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM;AACjG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC;AACjF,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE;AAC9C,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACpC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,EAAE;AAC/B,CAAC,CAAC;AACF,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;AACtB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACtE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5B,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,GAAG;AACtB,CAAC,CAAC;AACF,CAAC,IAAI,CAAC,KAAK,GAAG;AACd,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAChF,CAAC,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE;AACtF,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5E,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;AACpC,CAAC,CAAC;AACF,EAAE;;ACvJF,GAAG;AACH,CAAC,CAAC,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI;AAC3F,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK;AACrG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,GAAG;AAC3F,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;AACxC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,KAAK;AACjG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC;AAChG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC;AAC9F,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,sBAAsB,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;AAChF,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,CAAC,OAAO;AACf,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO;AAC3D,CAAC,CAAC,KAAK,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC;AAC3D,CAAC,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC;AACrB,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AAC7C,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG;AAC7C,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5C,CAAC,CAAC,SAAS,CAAC;AACZ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,aAAa,EAAE,OAAO,CAAC,EAAE;AACpD,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM;AAC7D,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW;AAC7B,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa;AACpC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AAC3F,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,cAAc,CAAC;AACjG,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc;AAChC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;AACvB;AACA,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,iBAAiB,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK;AACzD,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AACvB,EAAE,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE;AACnD,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC;AAChF,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;AACnE;AACA,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AACvD;AACA,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AAChD;AACA,CAAC,EAAE,CAAC,MAAM;AACV,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE;AAC3E;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACzC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG;AACjG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;AAChD,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AAC/B,CAAC,IAAI,EAAE,OAAO;AACd,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC;AAC1C,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,EAAE;AAC1C,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,EAAE;AACnC,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE;AAChE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE;AACtE;AACA,EAAE,CAAC,OAAO,CAAC,EAAE;AACb;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACnE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE;AAChD,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AAC9B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI;AAC/D,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;AAC7C,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC,GAAG,CAAC,QAAQ,CAAC;AACd,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,EAAE;AACpC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ;AACvE,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,eAAe,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AACrE,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,sBAAsB,GAAG;AACzD,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,UAAU,CAAC,CAAC,QAAQ,CAAC,EAAE;AACtD,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG;AAC5C,CAAC,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE;AACzE,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,EAAE;AAC1C,CAAC,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE;AAC5E,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AACxF,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC,GAAG;AACJ,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG;AAC1B,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AAChB;AACA,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI;AAC7B,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;AAC9B,EAAE,CAAC,UAAU,EAAE;AACf,EAAE,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC5C,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AAClD;AACA,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACtC,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACxC,KAAK,IAAI,CAAC,CAAC,QAAQ,CAAC;AACpB,KAAK,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ;AAC1D,IAAI,CAAC,CAAC,EAAE;AACR,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;AACX,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC;AAC/C,KAAK,KAAK,CAAC,CAAC,GAAG,CAAC,QAAQ;AACxB,IAAI,CAAC,CAAC,EAAE;AACR,GAAG,CAAC;AACJ,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;AACR;AACA,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ;AAC9D,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,eAAe,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ;AAC5E,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,EAAE;AACzB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACT,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK;AAC3B,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACzB,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE;AACtC,EAAE,CAAC;AACH,CAAC,CAAC;AACF;AACA,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACzD,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG;AAC7B,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACxD,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,GAAG;AAC5B,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;;AC5KF,GAAG;AACH,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;AACnG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC;AACpF,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;AAClG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,EAAE;AAC1D,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC;AAC3E,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,CAAC,OAAO;AACf,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM;AACvE,CAAC,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACjD,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AACtB,CAAC,CAAC,SAAS,QAAQ,CAAC,CAAC,IAAI;AACzB,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACjD,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACrB,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACjD,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AACtB,CAAC,CAAC,SAAS,QAAQ,CAAC,CAAC,IAAI;AACzB,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AACrE,CAAC,CAAC,KAAK,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;AACjD,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;AAChC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC,KAAK,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC3B,CAAC,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AACnF,CAAC,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AACrF,CAAC,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AACnF,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE;AAC/C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM;AAC7D,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW;AAC7B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC;AACnH,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc;AAChC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;AACvB;AACA,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AACpD;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,IAAI,EAAE,OAAO;AACd,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACvC,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK;AACrD,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;AAC3B,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;AAC7E,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE;AAC7D;AACA,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;AACvB;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAC/C;AACA,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;AACpB;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAChF,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AACvF,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE;AACjD,CAAC,MAAM,CAAC,KAAK,CAAC;AACd,EAAE;AACF;AACA,EAAE,CAAC,OAAO,CAAC,EAAE;AACb;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAChE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AAC/C,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACvD,CAAC,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7C,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AAC5C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ;AAC7C,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7C,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE;AACtC,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC;AAC1C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ;AACtC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC3D,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE;AACtC,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACnE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5B,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,GAAG;AACtB,CAAC,CAAC;AACF,CAAC,IAAI,CAAC,KAAK,GAAG;AACd,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC7E,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE;AACnF,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5E,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;AACpC,CAAC,CAAC;AACF,EAAE;;ACvIF,GAAG;AACH,CAAC,CAAC,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI;AACpG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK;AACrG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,GAAG;AAC3F,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;AACxC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;AAC7E,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,CAAC,OAAO;AACf,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO;AAC9D,CAAC,CAAC,KAAK,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,sBAAsB,CAAC,CAAC,CAAC;AACjE,CAAC,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC;AACrB,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AAC7C,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG;AAC7C,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5C,CAAC,CAAC,SAAS,CAAC;AACZ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,gBAAgB,EAAE,OAAO,CAAC,EAAE;AACvD,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM;AAC7D,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW;AAC7B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AAC3F,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,sBAAsB,CAAC,CAAC,CAAC,QAAQ,CAAC,0BAA0B,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC9E,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc;AAChC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;AACvB;AACA,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC;AAChF,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,GAAG;AACxD;AACA,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AAC1D;AACA,CAAC,EAAE,CAAC,MAAM;AACV,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE;AACpE;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACzC,CAAC,IAAI,EAAE,OAAO;AACd,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,sBAAsB,CAAC,CAAC,CAAC;AAC7C,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC,EAAE;AAC7C,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,EAAE;AACnC,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE;AACnE;AACA,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;AACpB;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,sBAAsB,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACtF,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,sBAAsB,CAAC,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AAC7F,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,GAAG;AAClG,CAAC,MAAM,CAAC,KAAK,CAAC;AACd,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,sBAAsB,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACnF,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,sBAAsB,CAAC,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AACvF,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG;AAC7C,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;AACtB,CAAC,MAAM,CAAC,MAAM,CAAC;AACf,EAAE;AACF;AACA,EAAE,CAAC,OAAO,CAAC,EAAE;AACb;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,sBAAsB,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACtE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE;AAChD,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AAC9B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI;AAC3D,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,sBAAsB,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACzE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE;AACjC,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,sBAAsB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,EAAE;AACpC,CAAC,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,EAAE;AAClD,CAAC,EAAE,CAAC,EAAE,CAAC,sBAAsB,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE;AAC5E,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,sBAAsB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACzE,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,EAAE;AAC7C,CAAC,EAAE,CAAC,EAAE,CAAC,sBAAsB,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE;AAC/E,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AACxF,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,sBAAsB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC1E,CAAC,GAAG;AACJ,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG;AAC1B,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AAChB;AACA,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI;AAChC,CAAC,IAAI,CAAC,iBAAiB;AACvB,EAAE,CAAC,UAAU,EAAE;AACf,EAAE,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC5C,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AAClD,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;AACxC,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC;AACnB,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ;AACzD,GAAG,CAAC,CAAC,EAAE;AACP,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;AACR;AACA,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ;AAC9D,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW;AAC/E,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,EAAE;AACzB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACT,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK;AAC3B,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACzB,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE;AACtC,EAAE,CAAC;AACH,CAAC,CAAC;AACF;AACA,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,sBAAsB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC5D,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,GAAG;AAChC,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,sBAAsB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC3D,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,GAAG;AAC/B,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;;ACnKF,GAAG;AACH,CAAC,CAAC,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC;AACtC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,yBAAyB,CAAC,yBAAyB,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACjG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AAChG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,GAAG;AAChG,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;AACxC,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,CAAC,OAAO;AACf,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,8BAA8B,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO;AACtE,CAAC,CAAC,KAAK,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,8BAA8B,CAAC,CAAC,CAAC;AACzE,CAAC,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC;AACrB,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AAC7C,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,GAAG;AAC7C,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5C,CAAC,CAAC,SAAS,CAAC;AACZ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,gBAAgB,EAAE,OAAO,CAAC,EAAE;AACvD,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM;AAC7D,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW;AAC7B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;AACxG,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,8BAA8B,CAAC,CAAC,CAAC,QAAQ,CAAC,kCAAkC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC9F,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc;AAChC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;AACvB;AACA,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC;AAChF,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,yBAAyB,GAAG;AACxE;AACA,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,8BAA8B,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AAClE;AACA,CAAC,EAAE,CAAC,UAAU;AACd,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;AAC9B;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,IAAI,EAAE,OAAO;AACd,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,8BAA8B,CAAC,CAAC,CAAC;AACrD,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,yBAAyB,EAAE,OAAO,CAAC,EAAE;AACrD,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM;AACpF,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,GAAG;AACtB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACzC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK;AAC3F,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AAC/B,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,8BAA8B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE;AAC3E;AACA,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;AACpB;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,8BAA8B,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC9F,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,8BAA8B,CAAC,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AACrG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9F,EAAE,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AACzD,CAAC,MAAM,CAAC,KAAK,CAAC;AACd,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,8BAA8B,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC3F,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,8BAA8B,CAAC,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AAC/F,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG;AAChD,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;AACtB,CAAC,MAAM,CAAC,MAAM,CAAC;AACf,EAAE;AACF;AACA,EAAE,CAAC,OAAO,CAAC,EAAE;AACb;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,8BAA8B,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC9E,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM;AACnB,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;AACxB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,8BAA8B,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACvE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAChG,EAAE,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AACzD,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9B,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,EAAE;AACzB,CAAC,CAAC;AACF,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;AACnB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,8BAA8B,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9E,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,EAAE;AACpC,CAAC,IAAI,CAAC,yBAAyB,CAAC,iBAAiB,CAAC,CAAC,KAAK,CAAC,EAAE;AAC3D,CAAC,EAAE,CAAC,EAAE,CAAC,8BAA8B,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE;AACpF,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC3B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK;AACzC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK;AACtC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,8BAA8B,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAClF,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;AACpB,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG;AAClB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC,EAAE,MAAM,CAAC,UAAU,CAAC;AACpB,CAAC,CAAC;AACF,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACvC,EAAE,WAAW,CAAC,CAAC;AACf,GAAG,EAAE,CAAC,EAAE,CAAC,8BAA8B,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC/F,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI;AAC3C,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,eAAe,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzE,GAAG,QAAQ,CAAC;AACZ,EAAE,CAAC;AACH,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,EAAE;AACjC,CAAC,CAAC;AACF,CAAC,MAAM,CAAC,UAAU,CAAC;AACnB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,8BAA8B,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACjF,CAAC,IAAI,CAAC,yBAAyB,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,EAAE;AACrD,CAAC,EAAE,CAAC,EAAE,CAAC,8BAA8B,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE;AACvF,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;AACrG,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,8BAA8B,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAClF,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACnB;AACA,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,IAAI;AAC9C,CAAC,IAAI,CAAC,yBAAyB;AAC/B,EAAE,CAAC,UAAU,EAAE;AACf,EAAE,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC5C,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;AACnC,GAAG,QAAQ,CAAC,CAAC;AACb,IAAI,EAAE,CAAC,EAAE,CAAC,8BAA8B,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AAChG,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;AACnE,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,yBAAyB,CAAC,CAAC,CAAC;AAChD,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC;AACnB,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC1D,IAAI,QAAQ,CAAC,CAAC,WAAW;AACzB,GAAG,CAAC,CAAC,EAAE;AACP,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU;AACpD,GAAG,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;AACzD,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,EAAE;AACtC,GAAG,MAAM,CAAC,IAAI,CAAC;AACf,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;AACR;AACA,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC;AACxD,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;AACrE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE;AAClC;AACA,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,8BAA8B,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACpE,CAAC,IAAI,CAAC,yBAAyB,CAAC,KAAK,GAAG;AACxC,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;;ACxLF,GAAG;AACH,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG;AAC7F,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU;AAC9F,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,QAAQ;AAC3G,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;AAChG,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;AAC9D,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC7F,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC;AAC3E,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,CAAC,OAAO;AACf,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM;AACxC,CAAC,CAAC,KAAK,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;AACnD,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;AAC9B,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACV,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE;AAChD,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM;AAC7D,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW;AAC7B,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW;AAClC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB;AACvC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc;AACrC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY;AACnC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC;AACzF,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE;AAC/B,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,IAAI;AAC/C,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,EAAE;AACxE,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;AAC9C,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;AAClF,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;AAC/E,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AAC7F,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE;AAC1D,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,GAAG;AAC/F,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK;AAC5F,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACjG,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC;AAChG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG;AAChG,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS;AACnG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC;AACvF,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc;AAChC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AACrB,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;AACf,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC;AACxB,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;AACb;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC1B,EAAE,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,EAAE;AACjJ,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,wBAAwB,CAAC,CAAC,MAAM,CAAC,EAAE;AACtD,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AACnD;AACA,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AAC9C,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AACnD,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC5F,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AAC/C;AACA,CAAC,EAAE,CAAC,UAAU;AACd,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,EAAE;AACxC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;AACvB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;AACvB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;AACtB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;AACzB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;AACzB;AACA,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;AACvC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE;AAC/C;AACA,CAAC,EAAE,CAAC,MAAM;AACV,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAClB,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;AACzC,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;AACjC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC,CAAC,CAAC,EAAE;AACL,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AACjE,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AAC3E,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AAC5D,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AACjF;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,IAAI,EAAE,OAAO;AACd,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9E,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE;AACzC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE;AACvC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE;AACvC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC1C,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE;AACxD,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACxC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;AACpD,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC1B,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE;AAC/C,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACvC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;AAC5C,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AACzF,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;AAC/F,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACnB,GAAG,YAAY,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC9B,IAAI,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE;AAC7C,GAAG,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;AAClB,GAAG,QAAQ,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC1B,IAAI,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG;AAC9F,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;AAC/C,IAAI,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;AAC9C,GAAG,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AACjB,EAAE,CAAC,CAAC,EAAE;AACN,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAAC;AACpC,EAAE,IAAI,CAAC,2BAA2B,GAAG;AACrC,CAAC,CAAC;AACF,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE;AAC5D,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;AAChE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE;AACrE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE;AACnE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;AACjE;AACA,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;AACvB;AACA,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AACnD,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK;AACnB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG;AACjB,EAAE;AACF;AACA,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;AACpB;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC/E,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AACtF,CAAC,MAAM,CAAC,KAAK,CAAC;AACd,EAAE;AACF;AACA,EAAE,CAAC,MAAM,CAAC,EAAE;AACZ;AACA,GAAG;AACH,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;AACjF,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK;AACf,CAAC,EAAE;AACH;AACA,EAAE,CAAC,OAAO,CAAC,EAAE;AACb;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;AACjC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK;AAC3C,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7C,EAAE,IAAI,CAAC,KAAK,GAAG;AACf,EAAE,MAAM,CAAC,KAAK,CAAC;AACf,CAAC,CAAC;AACF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;AACtC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK;AAC3C,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7C,EAAE,IAAI,CAAC,KAAK,GAAG;AACf,EAAE,MAAM,CAAC,KAAK,CAAC;AACf,CAAC,CAAC;AACF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;AAC3B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK;AAC1C,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO;AACvC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACtC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE;AAC1B,CAAC,CAAC;AACF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AACtB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK;AACrC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACtD,CAAC,IAAI,CAAC,eAAe,GAAG;AACxB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;AACvB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK;AACtC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACvD,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;AACpC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE;AAC9E,EAAE,EAAE,CAAC,qBAAqB,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC;AAC1F,EAAE,IAAI,CAAC,eAAe,GAAG;AACzB,CAAC,CAAC;AACF,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,EAAE;AAC9B,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;AAChC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK;AAC/C,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC/D,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,KAAK,CAAC;AACpC,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS;AACrF,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;AACtB,CAAC,IAAI,CAAC,aAAa,GAAG;AACtB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC;AAClC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK;AACxB,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACjE,CAAC,IAAI,CAAC,eAAe,GAAG;AACxB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE;AACrD,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;AACpB,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC1D,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;AACtB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;AAC1D,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI;AAC9C,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;AACzB,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AAC/C,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE;AACpD,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;AACpB,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC1D,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;AACtB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;AACzD,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ;AAC7C,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;AACzB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACvB,EAAE,IAAI,EAAE,KAAK;AACb,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC;AAC5B,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;AACpC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACvC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE;AACnC,EAAE,CAAC;AACH,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACT,EAAE,IAAI,EAAE,KAAK;AACb,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC;AAC7B,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE;AAClC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE;AAC7B,EAAE,CAAC;AACH,CAAC,CAAC;AACF,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;AACrE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,2BAA2B;AACpG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC;AACpG,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG;AAClG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC;AAC/D,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC3E,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC,cAAc,CAAC;AAC7D,EAAE,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC;AAC5G,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AAChB;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAC1B,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC;AAC5C;AACA,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC;AACnC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI;AACjG,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB;AAC7F,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC;AAC7F,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;AAC1B,GAAG,MAAM,CAAC;AACV,EAAE,CAAC;AACH;AACA,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI;AAClC,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;AACnC,EAAE,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACpC,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC;AACxC,EAAE,CAAC;AACH;AACA,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM;AAChG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG;AAC9F,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI;AAC3F,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE;AAC5F,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;AACrE;AACA,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACnE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;AAC1B,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7C,IAAI,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC;AAC/C,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACjD,KAAK,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAC/C,MAAM,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;AAChC,MAAM,MAAM,CAAC;AACb,KAAK,CAAC;AACN,IAAI,CAAC;AACL,GAAG,CAAC;AACJ,EAAE,CAAC,CAAC,EAAE;AACN;AACA,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC1B,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AACxD,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC;AACtC,IAAI,MAAM,CAAC,eAAe,GAAG;AAC7B,GAAG,CAAC;AACJ,GAAG,gBAAgB,CAAC,UAAU,GAAG;AACjC,GAAG,MAAM,CAAC,2BAA2B,GAAG;AACxC,EAAE,EAAE;AACJ;AACA,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;AACxC,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AAC3D,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AAClE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACT,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,2BAA2B,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG;AAC9F,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC;AAC7F,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,2BAA2B,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AACvF,CAAC,CAAC;AACF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AACvB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACzB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE;AAC7B,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACT,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;AACnE,CAAC,CAAC;AACF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;AACnD,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO;AAC/C,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;AACxB,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AACrB,EAAE,CAAC,IAAI,EAAE;AACT,EAAE,CAAC,QAAQ,EAAE;AACb,EAAE,CAAC,KAAK,EAAE;AACV,EAAE,CAAC,GAAG,EAAE;AACR,EAAE,CAAC,MAAM,CAAC;AACV,CAAC,EAAE;AACH,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAC1E,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AAChE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM;AAC1C,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI;AAC1D,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACrE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC;AAC7B,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AAC3B;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;AACjB;AACA,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACzB,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACjC,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/B;AACA,CAAC,IAAI,CAAC,KAAK,GAAG;AACd;AACA,CAAC,GAAG,CAAC,CAAC;AACN,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE;AAC9E,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChB,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;AACnF,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK;AAClF,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7E,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3D,GAAG,KAAK,CAAC,CAAC,CAAC;AACX,EAAE,CAAC;AACH,CAAC,CAAC;AACF,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM;AAC/E,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO;AAC7D,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACxD,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AAC9B,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC;AAC/B,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC;AAC3B,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;AACxD;AACA,CAAC,MAAM,CAAC,CAAC;AACT,EAAE,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;AAClC,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG;AAC/B,CAAC,EAAE;AACH,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AAC1C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG;AACxD,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ;AACtB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM;AAChC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC9D,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC;AACtC,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;AAC9C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACtD,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,EAAE;AACrD,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;AACpD,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACjE,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE;AAC9B,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;AAClD,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC/D,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,EAAE;AAClD,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AACrC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ;AACjD,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC;AAChB,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG;AAC1B,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG;AAC1B;AACA,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;AAC1C,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;AACxC;AACA,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AACzE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AAC5C,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AACjD,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS;AAClE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS;AAClE,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7E,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC;AAChB,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG;AAC1B,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;AACtB;AACA,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;AAC1C,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;AACxC;AACA,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,CAAC,GAAG,CAAC,EAAE;AAChD,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE;AACxD;AACA,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;AAClD,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC;AAC9B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC/F,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;AACpG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE;AACpC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI;AACnG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;AACxE,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACpE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC3B,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACT,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK;AACjF,CAAC,CAAC;AACF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;AACzC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM;AACnE,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACnB,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAChC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAClB,IAAI,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;AACjD,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;AACX,IAAI,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE;AAC/C,GAAG,CAAC;AACJ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAC1C,EAAE,EAAE;AACJ;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC/B,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE;AACrB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACT,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACxC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE;AACnB,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAClB,GAAG,OAAO,CAAC,CAAC,KAAK,CAAC,EAAE;AACpB,EAAE,CAAC,CAAC,EAAE;AACN,CAAC,CAAC;AACF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;AACrC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;AACnF,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;AAClF,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC;AAC1F,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC3D,CAAC,GAAG,CAAC,MAAM,CAAC;AACZ;AACA,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACpC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAChB,GAAG,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG;AAC3C,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACV,GAAG,MAAM,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG;AAC1C,EAAE,CAAC;AACH,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO;AACtD,CAAC,EAAE,CAAC,CAAC;AACL,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;AACjD,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,GAAG,CAAC,KAAK;AAC5C,CAAC,CAAC,CAAC,CAAC;AACJ,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,EAAE;AAClC,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK;AAC3D,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC3C,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE;AAC5C,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACrD,IAAI,MAAM,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,EAAE;AACpC,GAAG,CAAC,CAAC,EAAE;AACP,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACV,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,EAAE;AACpC,EAAE,CAAC;AACH,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACT,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;AACnE,CAAC,CAAC;AACF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG;AAC/F,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC;AACpE,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;AAC/E,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC;AACpC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AACtF,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC;AACrD,EAAE,IAAI,CAAC,cAAc,GAAG;AACxB,CAAC,CAAC;AACF,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;AAC3C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AACnF,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC;AAClD,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC9D,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE;AAC5C;AACA,CAAC,IAAI,EAAE,OAAO;AACd,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;AACpF,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE;AACvF;AACA,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;AACtB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;AACzB,CAAC,IAAI,CAAC,aAAa,GAAG;AACtB;AACA,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;AAClE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC7D,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;AAC1B;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;AACpC,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM;AAClE,EAAE,MAAM,CAAC,IAAI,CAAC;AACd,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM;AACpB,CAAC,IAAI,EAAE,KAAK;AACZ,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO;AAChC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACT,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG;AACvB,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE;AACrB,EAAE,CAAC,CAAC,EAAE;AACN;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE;AACtC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACT,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,GAAG;AACvB,EAAE,MAAM,CAAC;AACT,CAAC,CAAC;AACF;AACA,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE;AACxC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE;AAClD,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE;AAC7D;AACA,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAChG;AACA,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE;AAClF,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACvC,EAAE,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;AAC3C,CAAC,CAAC;AACF,EAAE;;AC/rBF,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe;AACjC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AACrB,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;AAChB,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;AACb;AACA,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;AACpD,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;AAClC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AACtB;AACA,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AACrD;AACA,CAAC,EAAE,CAAC,MAAM;AACV,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACtB,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;AACpB,CAAC,CAAC,CAAC,EAAE;AACL;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE;AAC/D,CAAC,IAAI,CAAC,qBAAqB,GAAG;AAC9B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACtB,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AACtB,CAAC,CAAC,CAAC,EAAE;AACL,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,EAAE;AAClE;AACA,EAAE,CAAC,OAAO,CAAC,EAAE;AACb;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACjE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE;AAChD,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7C,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK;AACzB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE;AACtB,EAAE,IAAI,CAAC,KAAK,GAAG;AACf,EAAE,MAAM,CAAC,KAAK,CAAC;AACf,CAAC,CAAC;AACF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI;AAChE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG;AACrE,CAAC,CAAC,CAAC,QAAQ,CAAC;AACZ,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACvE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1E,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE;AAC5B,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACT,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AAC/B,CAAC,CAAC;AACF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;AACxB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC1D,CAAC,IAAI,CAAC,qBAAqB,GAAG;AAC9B,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;AACzB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ;AAChD,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC3D,CAAC,IAAI,CAAC,qBAAqB,GAAG;AAC9B,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE;AAC1E,CAAC,IAAI,CAAC,qBAAqB,GAAG;AAC9B,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;;ACjGF,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe;AACjC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;AACrF,CAAC,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;AAChD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AAC7F,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC;AAC1F,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC;AAC1E,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC;AAC5F,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC;AACrF,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,wBAAwB,CAAC,CAAC,CAAC,QAAQ,CAAC,4BAA4B,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAClF,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AACrB,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACd,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;AACb,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;AAC1B,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,wBAAwB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AAC5D;AACA,CAAC,EAAE,CAAC,UAAU;AACd,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AACvB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;AACnC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;AAC7D,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC5E;AACA,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ;AACtB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACvB,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK;AAC3B,GAAG,CAAC,KAAK,EAAE;AACX,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC9B,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACjC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE;AACvC,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,MAAM;AACV,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACtB,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;AACpB,CAAC,CAAC,CAAC,EAAE;AACL;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACvC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AAC1C,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACvB,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAAC;AACpC,EAAE,IAAI,CAAC,2BAA2B,GAAG;AACrC,CAAC,CAAC;AACF,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,wBAAwB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,EAAE;AACzE;AACA,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;AACpB;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,wBAAwB,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACxF,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,wBAAwB,CAAC,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AAC/F,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,GAAG;AAC7C,CAAC,MAAM,CAAC,KAAK,CAAC;AACd,EAAE;AACF;AACA,EAAE,CAAC,OAAO,CAAC,EAAE;AACb;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,wBAAwB,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACxE,CAAC,EAAE,CAAC,EAAE,CAAC,wBAAwB,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;AAC9E,CAAC,IAAI,CAAC,UAAU,GAAG;AACnB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;AACxB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,wBAAwB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACjE,CAAC,IAAI,CAAC,UAAU,GAAG;AACnB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,wBAAwB,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACvE,CAAC,EAAE,CAAC,EAAE,CAAC,wBAAwB,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;AAC7E,CAAC,IAAI,CAAC,UAAU,GAAG;AACnB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;AACjE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK;AAC1C,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,wBAAwB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACnE,CAAC,MAAM,CAAC;AACR,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;AACnD,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE;AAC3E,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM;AAChB,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,wBAAwB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACnE,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,CAAC,cAAc,CAAC,CAAC,gBAAgB,CAAC;AAC9E,EAAE,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC;AAChD;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC7C,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACxB,GAAG,IAAI,EAAE,KAAK;AACd,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;AAC7B,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACjC,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM;AAC/D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE;AACxB;AACA,GAAG,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE;AACrD;AACA,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,GAAG;AACrC;AACA,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC;AAChD;AACA,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO;AAC9D,GAAG,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE;AACnC,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,WAAW,GAAG;AAC3C,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,WAAW,GAAG;AAC3C;AACA,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM;AAC7B,GAAG,IAAI,EAAE,KAAK;AACd,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACjC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5B,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE;AACf,GAAG,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,WAAW,GAAG;AAC9C;AACA,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;AAC1F,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;AAClF,GAAG,gBAAgB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC;AACrE,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE;AAC7E;AACA,GAAG,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE;AAClD;AACA,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM;AAC7E,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM;AACvE,GAAG,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAC5F,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAC1C,IAAI,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE;AAC3C,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;AACjC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE;AAC1B,GAAG,CAAC;AACJ,EAAE,CAAC;AACH,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC;AAC5E,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAC3C,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;AAC5E,GAAG,EAAE,CAAC,KAAK;AACX,GAAG,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AAC9C,GAAG,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AAClD;AACA,GAAG,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACvB,IAAI,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,EAAE;AACjD,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,KAAK,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,EAAE;AAC9C,IAAI,CAAC;AACL,GAAG,CAAC;AACJ;AACA,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC;AAClC,GAAG,IAAI,CAAC,aAAa,GAAG;AACxB,EAAE,CAAC;AACH,CAAC,CAAC;AACF,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,wBAAwB,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACxE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE;AAC1B,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC9C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;AACpB,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,wBAAwB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACpE,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC;AACzB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AACrD,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;AACpB,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,wBAAwB,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACrE,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC;AACxB,EAAE;;AC3MF,GAAG;AACH,CAAC,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK;AACzF,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK;AAC5F,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;AAClG,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;AAChG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC;AACpD,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI;AACnG,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;AACjB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC;AAC3F,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG;AAC7F,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC/B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC;AAC3E,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,EAAE;AACxG,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,CAAC,OAAO;AACf,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC;AACzC,CAAC,CAAC,KAAK,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC;AACtD,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE;AAC7B,CAAC,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC;AACrB,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AACpC,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AACpC,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,CAAC,CAAC,SAAS,CAAC;AACZ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE;AAC/C,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,CAAC,OAAO;AACf,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC;AACvE,CAAC,CAAC,KAAK,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC;AACtD,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE;AAC7B,CAAC,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC;AACrB,CAAC,CAAC,aAAa,CAAC;AAChB,CAAC,CAAC,iBAAiB,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE;AACpC,CAAC,CAAC,iBAAiB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;AACtC,CAAC,CAAC,aAAa,EAAE;AACjB,CAAC,CAAC,aAAa,CAAC;AAChB,CAAC,CAAC,iBAAiB,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE;AACpC,CAAC,CAAC,iBAAiB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;AACtC,CAAC,CAAC,aAAa,EAAE;AACjB,CAAC,CAAC,aAAa,CAAC;AAChB,CAAC,CAAC,iBAAiB,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE;AACpC,CAAC,CAAC,iBAAiB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;AACxC,CAAC,CAAC,aAAa,CAAC;AAChB,CAAC,CAAC,SAAS,CAAC;AACZ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE;AAC/C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,wBAAwB;AACnG,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe;AACjC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AAC3F,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;AAC/G,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK;AAC9G,CAAC,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG;AACjH,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;AAC7F,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE;AACnE,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc;AAChC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AACrB,EAAE,YAAY,CAAC,CAAC,KAAK;AACrB,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;AACb;AACA,CAAC,EAAE,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC;AACrD,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;AAC1B;AACA,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC;AAC3D,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AACvB,EAAE,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;AACrC,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AACvD;AACA,CAAC,EAAE,CAAC,UAAU;AACd,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC;AAClD,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;AAChD,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC,EAAE;AAC1D,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE;AACpB,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ;AACzB,CAAC,CAAC,CAAC,EAAE;AACL,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,MAAM,CAAC;AAClD,EAAE,CAAC;AACH,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC;AAChB,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC;AACf,GAAG,CAAC,kBAAkB,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC;AACtC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE;AAC9B,EAAE,EAAE;AACJ,EAAE,MAAM,CAAC,IAAI;AACb,CAAC,CAAC,CAAC,EAAE;AACL;AACA,CAAC,EAAE,CAAC,MAAM;AACV,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACtB,EAAE,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE;AAC1B,EAAE,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC;AACvB,CAAC,CAAC,CAAC,EAAE;AACL,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACrC,EAAE,KAAK,CAAC,CAAC,CAAC,qBAAqB,CAAC;AAChC,CAAC,CAAC,CAAC,EAAE;AACL,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3B,EAAE,MAAM,CAAC,CAAC,CAAC,YAAY,EAAE;AACzB,EAAE,GAAG,CAAC,CAAC,CAAC,iBAAiB,EAAE;AAC3B,EAAE,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC;AAC7B,CAAC,CAAC,CAAC,EAAE;AACL;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AACpB,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE;AACnB,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG;AACxC,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC;AAC7B,CAAC,CAAC,CAAC,EAAE;AACL,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK;AACrD,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACtC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;AACpC,CAAC,CAAC;AACF,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;AAC3B,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;AAChD,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,EAAE;AACvD,CAAC,IAAI,EAAE,OAAO;AACd,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC;AAC1C,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE;AACzB,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;AAC5C,CAAC,IAAI,CAAC,iBAAiB,GAAG;AAC1B,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,EAAE;AACpE;AACA,EAAE,CAAC,OAAO,CAAC,EAAE;AACb;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,MAAM;AAC/C,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC3D,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AAClB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AACxC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM;AACpD,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC5D,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;AAC9B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK;AAClC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,EAAE;AAChD;AACA,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,EAAE;AAC/B,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,CAAC;AACxC,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,EAAE;AACnC,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5B,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE;AAC3B,CAAC,CAAC;AACF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;AAC7B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAChE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5B,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE;AAC5B,CAAC,CAAC;AACF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;AAC9B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACzE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG;AACpB,CAAC,IAAI,CAAC,KAAK,GAAG;AACd,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AAC7B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI;AAC/C,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE;AACjC,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AAClC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACrE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE;AAC1D,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,EAAE;AAC/B,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,CAAC;AACxC,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,EAAE;AACnC,CAAC,CAAC;AACF,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE;AACrF,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACzE,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM;AACjB,CAAC,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE;AAC/E;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AAC7B,EAAE,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE;AACvD,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACnB,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE;AAC7C,CAAC,CAAC;AACF;AACA,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AACxF,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC,IAAI,CAAC,OAAO,EAAE;AACf,EAAE,CAAC,UAAU,EAAE;AACf,EAAE,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC5C,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACvC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;AACnB,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI;AACzD,GAAG,CAAC,CAAC,EAAE;AACP,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;AACR;AACA,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;;AC/PF,GAAG;AACH,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;AAC7F,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;AAC/F,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;AACxG,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;AAC5F,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AACzD,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;AAC5F,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;AACnF,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;AAClE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK;AACjG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC;AAC5C,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;AACpF,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;AACvE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;AAC7G,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;AAC7F,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,oBAAoB;AAC3E,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM;AACxB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY;AACnC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa;AACpC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM;AACjD,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC;AAC1F,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;AACnG,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC;AACjE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;AAC7F,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC;AACjE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;AAC3G,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;AAClG,CAAC,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;AACvF,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;AACjG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE;AACnE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS;AAC/D,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACrE,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM;AAChE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACjE,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC;AACvB,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;AACnC,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS;AACpD,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACnC,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;AACxC,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc;AAChC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;AAChD;AACA,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AAC/C;AACA,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAC7D,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AACxB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACP,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC1F;AACA,CAAC,EAAE,CAAC,UAAU;AACd,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC;AAChC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG;AAClB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;AACnB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;AACnE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE;AAC9B,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;AAC9B,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;AAC3B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACnB,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACrB,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;AACzD,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC;AAC7B,GAAG,KAAK,CAAC,CAAC,CAAC;AACX,IAAI,MAAM,CAAC,CAAC,IAAI;AAChB,GAAG,EAAE;AACL,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE;AACzC,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC;AACjB,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACf,EAAE,CAAC,CAAC,EAAE;AACN,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACnD,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE;AAC1E,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACV,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AAC/D,EAAE,CAAC;AACH,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC;AAC/C,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACT,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACvB,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,MAAM;AACV,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE;AACjE;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACrB,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW;AAC5D,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM;AAC7C,EAAE,CAAC;AACH,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE;AAC7B,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE;AAC9B,GAAG,IAAI,CAAC,WAAW,EAAE,OAAO;AAC5B,EAAE,EAAE,IAAI,CAAC;AACT,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE;AACtB,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,GAAG,SAAS,EAAE;AAChD,EAAE,EAAE;AACJ,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;AACvC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,EAAE;AAC3D,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACT,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACxC,GAAG,IAAI,CAAC,WAAW,CAAC,kBAAkB,GAAG;AACzC,GAAG,MAAM,CAAC,KAAK,CAAC;AAChB,EAAE,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AACnB,CAAC,CAAC;AACF,CAAC,IAAI,EAAE,OAAO;AACd,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;AAClC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC;AAC7E,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE;AACxB,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE;AACjD,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE;AACrD,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,EAAE;AACzD,CAAC,IAAI,EAAE,KAAK;AACZ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE;AACvC;AACA,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACvC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACzC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AACnC,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;AACnD,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;AAC7D,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE;AAC9D;AACA,EAAE,CAAC,OAAO,CAAC,EAAE;AACb;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;AAC/B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ;AAC3C,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACjE,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE;AAClE,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;AACzC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM;AACtC,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACpD,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;AACzB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,GAAG;AACrF,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC;AAC7E,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;AACpB,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACzD,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;AACvD,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE;AAC5E,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC;AAC3C,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,IAAI;AACzC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;AACnB,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;AAC/B,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE;AACzB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;AACnF,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACpC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;AAC5D,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACT,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;AACb,CAAC,CAAC;AACF,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AACpD,CAAC,CAAC,QAAQ;AACV,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACpC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;AACpD,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC;AAClB,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC;AAChC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC;AAClF,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/D,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9B,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC;AACtB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AAClB,EAAE,CAAC;AACH,EAAE,EAAE,CAAC,QAAQ;AACb,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC;AACtD,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AACjB,EAAE,CAAC;AACH,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ;AACrB,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,GAAG,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE;AAClD,GAAG,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE;AAClD,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,GAAG,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE;AAClD,GAAG,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE;AAClD,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACV,GAAG,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE;AACtC,GAAG,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE;AAC9D,EAAE,CAAC;AACH,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;AACzD,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI;AACnC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK;AACpC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG;AAClC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM;AACrC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACrB,GAAG,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACxE,EAAE,CAAC;AACH,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;AAC/D,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AACrB,CAAC,CAAC;AACF;AACA,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC;AAClC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;AACnG,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC;AACjE,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC7D,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG;AAC9B,CAAC,IAAI,CAAC,cAAc,GAAG;AACvB,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;AACnC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;AAC7F,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC;AACjE,CAAC,CAAC,CAAC,CAAC,SAAS;AACb,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC/D,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,GAAG;AAChC,CAAC,IAAI,CAAC,cAAc,GAAG;AACvB,CAAC,MAAM,CAAC,IAAI,CAAC;AACb,EAAE;AACF;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;AACrD,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC1D,CAAC,GAAG,CAAC,CAAC,CAAC;AACP,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,GAAG;AACxB;AACA,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACnD,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE;AACrC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACT,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,GAAG;AAC1B,EAAE,MAAM,CAAC;AACT,CAAC,CAAC;AACF;AACA,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9C,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC3E,CAAC,CAAC;AACF,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7C,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACzE,CAAC,CAAC;AACF,EAAE;;AChSF,GAAG;AACH,CAAC,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAC1G,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,eAAe,GAAG;AACpH,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;AAC3E,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;AAC7C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;AAC5F,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AACzD,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;AAC5F,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;AACnF,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;AAClE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK;AACjG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC;AAC5C,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;AACpF,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;AACvE,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI;AACtH,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC;AACrB,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,CAAC,OAAO;AACf,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB;AACzC,CAAC,CAAC,KAAK,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC;AAC3D,CAAC,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;AACvC,CAAC,CAAC,aAAa,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;AAC1C,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE;AACf,CAAC,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;AACpC,CAAC,CAAC,aAAa,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;AAC9B,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE;AACf,CAAC,CAAC,SAAS,CAAC;AACZ,CAAC,CAAC,aAAa,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;AACxE,CAAC,CAAC,aAAa,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE;AAC5B,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;AACxC,CAAC,CAAC,SAAS,CAAC;AACZ,CAAC,CAAC,KAAK,EAAE;AACT,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,iBAAiB,EAAE,OAAO,CAAC,EAAE;AACxD,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW;AAC7B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM;AACjD,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM;AACzD,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM;AACzB,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC/F,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM;AAChE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACjE,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC;AACvB,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;AACnC,EAAE,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;AACrC,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,EAAE;AAClE;AACA,CAAC,EAAE,CAAC,UAAU;AACd,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC;AAClC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;AAC9B,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;AACnE;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,IAAI,EAAE,OAAO;AACd,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE;AACzC,CAAC,IAAI,EAAE,MAAM;AACb,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;AAC/C,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,EAAE;AACxC,CAAC,IAAI,EAAE,KAAK;AACZ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9C,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE;AACvC,CAAC,IAAI,EAAE,KAAK;AACZ,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE;AACvC,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE;;AC7E9D,GAAG;AACH,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,YAAY,EAAE;AACtF,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACzF,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC;AACtE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,EAAE;AAC1D,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,CAAC,OAAO;AACf,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM;AACtC,CAAC,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;AAChD,CAAC,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AAC5C,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;AAChD,CAAC,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AAC5C,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;AACjD,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;AAChD,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC3B,CAAC,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAC3C,CAAC,CAAC,aAAa,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;AACjC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE;AACf,CAAC,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAC3C,CAAC,CAAC,aAAa,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;AACjC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AACd,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE;AAC/C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,oBAAoB;AAC3E,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM;AACxB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW;AAClC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY;AACnC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY;AACnC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC;AACzI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;AAC3G,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;AAClG,CAAC,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;AACvF,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;AACjG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE;AACnE,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC9D,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc;AAChC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;AACvB;AACA,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AAClD;AACA,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AAC9C,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AACzF,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AAC/C;AACA,CAAC,EAAE,CAAC,UAAU;AACd,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;AAC7B,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACrB,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;AACzD,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC;AAC7B,GAAG,KAAK,CAAC,CAAC,CAAC;AACX,IAAI,MAAM,CAAC,CAAC,IAAI;AAChB,GAAG,EAAE;AACL,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE;AAC5C,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC;AACjB,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACf,EAAE,CAAC,CAAC,EAAE;AACN,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACnD,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE;AAC1E,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACV,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AAC/D,EAAE,CAAC;AACH,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC;AAC/C,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACT,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACvB,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,IAAI,EAAE,MAAM;AACb,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;AAC5C,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE;AACjD,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE;AACtD,CAAC,IAAI,EAAE,OAAO;AACd,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;AACrC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE;AACxC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AAChC,CAAC,CAAC;AACF,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;AACtD,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE;AAC/D,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;AAChE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;AAChE;AACA,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;AACvB;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;;AC3GjD,GAAG;AACH,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK;AACjH,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AAChH,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC;AACnH,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC;AACtF,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE;AACjG,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,UAAU,EAAE,CAAC,EAAE,IAAI;AAC5F,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AAClG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,OAAO;AAC/F,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG;AACnG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;AACtE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC;AACnG,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK;AAC5D,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM;AAC7D,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,CAAC,OAAO;AACf,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM;AAC/D,CAAC,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;AAChD,CAAC,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC;AAClC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;AAChD,CAAC,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE;AACnC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC3B,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAClD,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;AAC1B,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;AACjD,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;AACjC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC,KAAK,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC3B,CAAC,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAC3C,CAAC,CAAC,aAAa,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE;AACjC,CAAC,CAAC,aAAa,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;AAC3B,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE;AACf,CAAC,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAC3C,CAAC,CAAC,aAAa,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE;AACjC,CAAC,CAAC,aAAa,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;AAC3B,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE;AACf,CAAC,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAC1C,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;AACzC,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE;AAC/B,CAAC,CAAC,SAAS,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,WAAW,EAAE;AACtC,CAAC,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;AACxB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACV,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;AAC3C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM;AACxB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY;AACnC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS;AACtD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS;AACtD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS;AACxD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;AACpF,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC,GAAG,CAAC,MAAM,CAAC;AACZ;AACA,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc;AAChC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;AACvB;AACA,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AAC9C;AACA,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC1F;AACA,CAAC,EAAE,CAAC,MAAM;AACV,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;AAC9D;AACA,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI;AAChC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;AACxB,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5D,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;AACzB,CAAC,CAAC;AACF;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,IAAI,EAAE,OAAO;AACd,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;AACjC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AACV,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;AACzB,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC;AAClB,GAAG,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO;AAC1B,EAAE,CAAC,CAAC,EAAE;AACN,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AAChC,CAAC,CAAC;AACF,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;AAClD,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;AAC5D;AACA,EAAE,CAAC,MAAM,CAAC,EAAE;AACZ;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC;AAC1D,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM;AAChB,CAAC,EAAE;AACH;AACA,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;AACvB;AACA,GAAG;AACH,CAAC,CAAC,CAAC,CAAC,MAAM;AACV,CAAC,CAAC,CAAC,CAAC,UAAU;AACd,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;AACzC;AACA,EAAE,CAAC,OAAO,CAAC,EAAE;AACb;AACA,GAAG;AACH,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;AAC7B,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,OAAO;AACX,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK;AACvC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM;AAChB,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACvD,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,EAAE,MAAM,CAAC,KAAK,CAAC;AACf,CAAC,CAAC;AACF,EAAE;;AClIF,GAAG;AACH,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC;AAChH,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,YAAY,EAAE;AACxF,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,CAAC,OAAO;AACf,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM;AACnC,CAAC,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;AAC3C,CAAC,CAAC,SAAS,QAAQ,CAAC,CAAC,KAAK,CAAC;AAC3B,CAAC,CAAC,SAAS,MAAM,CAAC,CAAC,IAAI,CAAC;AACxB,CAAC,CAAC,SAAS,MAAM,CAAC,CAAC,IAAI,CAAC;AACxB,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3E,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE;AAC5C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM;AACxB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS;AAC7D,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;AAC5F,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;AACrF,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;AAC5G,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc;AAChC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AACrB,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC;AACpB,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC;AAChB,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC;AACjB,EAAE,MAAM,CAAC,CAAC,KAAK;AACf,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;AACb;AACA,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AAC/C;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE;AAC/C,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AAC3B,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,EAAE;AAC3D,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACvB,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE;AACvD,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACzB,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,EAAE;AACzD,CAAC,CAAC;AACF,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACvB,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE;AACvD,CAAC,CAAC;AACF,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;AACnD;AACA,EAAE,CAAC,OAAO,CAAC,EAAE;AACb;AACA,GAAG;AACH,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM;AACzB,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK;AACnF,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACjD,CAAC,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,KAAK,GAAG;AAC9C,EAAE;;ACjEF,GAAG;AACH,CAAC,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG;AACjG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK;AACnG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;AAC/C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;AACpF,CAAC,CAAC;AACF,CAAC,CAAC,KAAK,CAAC,OAAO;AACf,CAAC,CAAC,KAAK,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK;AACxD,CAAC,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACjD,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AACvD,CAAC,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC,CAAC,OAAO,CAAC;AACV,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;AACX,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;AAC7C,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,KAAK;AACT,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM;AACxB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY;AACnC,CAAC,CAAC;AACF,CAAC,CAAC,CAAC,CAAC,WAAW;AACf,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,OAAO;AACjD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC;AAC9F,CAAC,EAAE;AACH,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc;AAChC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;AACvB;AACA,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;AACpD;AACA,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY;AACtB,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;AAC1F;AACA,CAAC,EAAE,CAAC,cAAc;AAClB,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE;AACpD,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AAChC,CAAC,CAAC;AACF,EAAE;AACF;AACA,EAAE,CAAC,KAAK,CAAC,EAAE;AACX;AACA,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;AACxD,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;;AC7ClE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE","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 `